摘要: 1.高速缓冲区位置:内核代码和主内存之间作用:解决I/O操作与CPU处理之间的速度不匹配大小:被划分成与磁盘数据块大小相等的缓冲块管理方式:hash表(设备号^逻辑块号) + 双向链表(所有的buffer_head)2.高速缓冲的划分:3.管理方式:注意,并不是一个散列队列组成双向链表,而是所有的缓冲块,顺序是最近最少使用(LRU)4.bread() ----- 从设备上读取数据块(1)获取缓冲区getblk()(2)判断缓冲区数据是否有效,若有效,则返回缓冲区指针。(有效:数据已从设备读入到缓冲区,因为程序是异步执行的)(3)向块设备驱动程序申请,同时让进程进入睡眠ll_rw_block() 阅读全文
posted @ 2012-04-22 22:25 windmissing 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 文件系统的组成:1.高速缓冲区的管理程序2.文件系统的低层通用函数3.对文件中数据进行读写操作4.系统调用接口的实现MINIX文件系统的结构:1.引导块:存放的是计算机加电启动时同BIOS自动读入的执行代码和数据2.超级块:存放文件系统的结构信息3.i结点位图:i结点是否被使用4.逻辑结构位图:数据区第i个块是否被使用。最多8个,可表示64MB5.i结点:存放文件或目录的索引结点6.数据区:i_zone[0] - i_zone[6]:直接块,7KB i_zone[7]:一次间接块,512KB i_zone[8]:二次间接块,512*512KB 设备文件不战胜数据盘块,只占用i结点对于文件目录, 阅读全文
posted @ 2012-04-22 21:40 windmissing 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 一,线性映射与非线性映射1.内存管理物理内存管理:Linux内存最小管理单位为页(page),通常一页为4K。初始化时,linux会为每个物理内存也建立一个page的管理结构,操作物理内存时实际上就是操作page页。某些设备会映射在物理内存地址外,这些地址会在使用时建立page结构。进程内存管理:Linux进程通过vma进行管理,每个进程都有一个task_struct结构体进行维护,其中的mm_struct结构体管理这进程的所有内存。Mm_struct中维护者一个vma链表,其中的每一个vma节点对应着一段连续的进程内存。这里的连续是指在进程空间中连续,物理空间中不一定连续。如果使用mallo 阅读全文
posted @ 2012-04-22 14:39 windmissing 阅读(616) 评论(0) 推荐(0) 编辑