共 87 篇文章 |
|
LINUX内存相关的内核参数linux控制内存的内核参数,大多放在在/proc/sys/vm目录下,主要分为几类: 控制内存cache 1、dirty_background_bytes/dirty_background_ratio 当dirty cache到了多少的时候,就启动pdflush进程,将dirty cache写回磁盘 当有dirty_background_bytes存在的时候,dirty_background_ratio是被自动计算的。 阅375 转2 评0 公众公开 15-05-13 10:42 |
slob中已有的空闲单元加上释放对象块的空闲单元正好等于一个空闲的page,那么将直接将该page释放回伙伴系统slob中已无空闲单元,那么这次释放将更新slob的信息普通情况,即slob处于部分满状态,那么更新slob的信息的同时还要将释放的块插入到相应的位置,要注意插入后是否能和相邻块进行合并! 阅60 转0 评0 公众公开 15-05-10 16:07 |
首先要根据对象的大小来决定从哪个全局链表中寻找slob进行分配遍历选取的链表,找到一个空间足够满足分配要求的slob从选取的slob中分配对象块(slob_page_alloc())如果遍历完整个链表都没能分配到对象,则创建一个新的slob(slob_new_page()),然后设置slob的属性,再进行分配,可以看到一个新的slob中只有一个块,并且下一个空闲对象的指针指向了... 阅93 转1 评0 公众公开 15-05-10 16:04 |
分级的rcu锁保证了每个时期都只有固定数量的cpu在其rcu_node内部争抢锁,以前的系统在一个cpu完成一个cpu_quite之前必须得到这 个全局的结构的锁,现在不用了,不再使用全局的结构了,全局的结构成了分层分级的结构组合了,从最低层的组开始竞争,几个组同时,每个组内有若干的cpu 竞争锁,获胜的cpu上升到上一个级别继续,直到最后有一个cpu获... 阅90 转0 评0 公众公开 14-08-07 17:38 |
rc.sysinit.1./etc/rc.d/rc.sysinit.这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d目录下的所有的rc启动脚本,/etc/rc.d/rc5.d目录中的启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都在/etc/rc.d/init.d目录下。/etc/rc.d/rc5.d中的rc启动... 阅78 转2 评0 公众公开 14-03-11 09:49 |
函数可重入性及编写规范一、可重入函数1)什么是可重入性?函数中调用了不可重入函数。5 :在同一项目组应明确规定对接口函数参数的合法性检查应由函数的调用者负责还是由接口函数本身负责,缺省是由函数调用者负责 说明:对于模块间接口函数的参数的合法性检查这一问题,往往有两个极端现象,即:要么是调用者和被调用者对参数均不作合法性检... 阅72 转3 评0 公众公开 14-03-10 10:12 |
tasklet使用tasklet_schedule()激活,该函数接受tasklet的描述符作为参数,例如上面生成的my_tasklet:tasklet_schedule(& my_tasklet)而对于tasklet,由于软中断初始化时,就已经通过下面的语句初始化了当遇到TASKLET_SOFTIRQ/HI_SOFTIRQ这两个软中断所需要执行的函数: open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL); ope... 阅348 转2 评0 公众公开 14-03-10 10:08 |
使用asm/div64.h中宏do_div.arch/arm/include\asm\div64.h.办法就是,去你代码里面找到对应的用到除法的地方,即类似于a/b的地方,其中被除数a为64位,Linux中一般用用uint64_t,将a/b用do_div(a,b)得到的a去代替(注意,不是直接用do_div()得到真正a除b后的结果,因为do_div(a,b)得到的是余数,囧。。。),即可,而具体写其他,就显得很麻烦... 阅12201 转6 评0 公众公开 14-02-20 13:47 |
对于x86-32(未采用PAE)架构的系统来说,线性地址中的页上级目录和页中间目录两部分占用的位数均为0,页上级目录和页中间目录中都只包含一个目录项,这两个页表项(这里称为页目录项更为确切,下文中的页表项均指某级页表中的一项,对页目录项和页表项不再作特别区分)都被映射到页全局目录中一个适当的目录项中。3.从线性地址的第二部分中取出页... 阅1890 转27 评0 公众公开 14-02-14 10:22 |
如果映射成功,返回的是总线地址,否则返回NULL.最后一个参数DMA的方向,可能取DMA_TO_DEVICE, DMA_FORM_DEVICE, DMA_BIDIRECTIONAL和DMA_NONE;//偏移量 dma_addr_t dma_address; //总线地址 unsigned int length; //缓冲区长度}执行dma_map_sg()后,通过sg_dma_address()后可返回scatterlist对应缓冲区的总线结构,sg_dma_len()可返回scatter... 阅116 转2 评0 公众公开 14-02-13 11:52 |