
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7664296 slab分配器是Linux内存管理中非常重要和复杂的一部分,其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内碎片,而且处理速度
水平有限,描述不当之处还请之处,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7671618缓存回收对象基于以下原则1.本地高速缓存的空间还可以容纳空闲对象,则直接将对象放回本地高速缓存2.本地高速缓存的空间已满,则按batchcount的值将对象从本地高速缓存转移到slab中,转移是基于先进先出的原则的,也就是转移ent
水平有限,描述不当之处请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7711695 本节介绍如何利用板载的Led和Linux的内核定时器实现一个简单的流水灯的驱动,所使用的开发板是TQ2440,内核版本2.6.30.4。 程序比较简单,也没涉及到什么机制,直接上代码了!
水平有限,描述不当之处还请之处,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7700338 Slub分配器创建缓存的过程和Slab差不多,主要的区别在于Slub分配器并不是直接创建一个新的缓存,而是先试图在已有的缓存中找到一个各方面属性和待创建缓存差不多的缓存,如果能找到的话则不会去创建新缓存,而是复用
对于一个文件路径的分量,如果其不为'.'和'..'则属于普通文件名,普通文件名的解析由do_lookup()函数来处理static int do_lookup(struct nameidata *nd, struct qstr *name,struct path *path){struct vfsmount *mnt = nd->path.mnt;struct
open()系统调用用来打开一个文件,本文就VFS层,对open系统调用的过程进行一个简单的分析。 SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode){long ret;if (force_o_largefile())flags |= O_LARGEFILE;
水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7718158 这节结合even handler来分析设备的注册和打开的过程,在设备注册之前,必须先初始化INPUT子系统,由input_init()函数来完成static int __init input_init(void){
水平有限,描述不当之处还请之处,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7743184 本节结合i2cdev,来阐述Linux下的IIC是如何进行数据传输的。和spidev类似,i2cdev也是一个通用的设备驱动,但是又有些不同。在spidev中,spidev驱动注册会和相应的从设备绑定,也就
节点和管理区是内存管理中所涉及的重要概念,其数据结构在前文《linux物理内存概述》中已经介绍,现在让我们来看看linux是如何完成节点和管理区的。 在内核首先通过setup_arch()-->paging_init()-->zone_sizes_init()来初始化节点和管理区的一些数据项static void __init zone_sizes_init(void){
前文介绍了CFQ调度器的一些概念和结构之间的关系,这里再结合实际的代码,来分析CFQ的工作流程。CFQ调度器的定义如下:static struct elevator_type iosched_cfq = {.ops = {.elevator_merge_fn =cfq_merge,.elevator_merged_fn =cfq_merged_request,







