电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

linux内核有关文件系统的数据结构VIP免费

linux内核有关文件系统的数据结构_第1页
1/6
linux内核有关文件系统的数据结构_第2页
2/6
linux内核有关文件系统的数据结构_第3页
3/6
下面列出主要的文件系统数据结构,便于查询,主要参见include/linux/fs.h一、超级块(超辑块是与设备一一对应的)超级块数组(在内存中)01234567{节点数逻辑块数i节点所占用的数据块数逻辑块位图所占用的数据块数用于磁盘与内存第一个数据逻辑块号log2(数据块数/逻辑块)文件最大长度文件系统幻数-----------------------------------------------------------------------------------------i节点位图缓冲区指针数组逻辑块位图缓冲区指针数组超级块所在的设备号被安装的文件系统根目录的i节点被安装到的i节点仅用于内存修改时间等待该超级块的进程被锁定标志只读标志已修改(脏)标志}超级块(在磁盘上)二、缓冲区散列队列(缓冲区是与盘块一一对应的)下面给出赵博画的缓冲区的散列队列逻辑示意图以上散列项,free_list与缓冲头均为buffer_head结构{指向1024个字节数据块的指针块号数据源的设备号更新标志:表示数据是否已更新修改(脏)标志使用的用户数缓冲区是否被锁定等待该缓冲区解锁的任务hash队列上前一块hash队列上后一块空闲表上前一块空闲表上后一块}在 Linux0.11内核中具体实现时,在物理内存中缓冲区的状态如下:free_list01……306hash_table以上实线箭头为data指针,一个缓冲头指向一个大小为1KB的缓冲区,虚线是空闲链表指针,构成双向链表,初始化时是相邻的缓冲头链接成空闲表,位于内核模块的structbuffer_head*型数组经哈希函数计算后指向缓冲头结构,初始化时为全NULL。哈希函数=(设备号 异或 块号) 取余 307,307为哈希表长。hash_table在实际运行后的图参见前面的缓冲区的散列队列逻辑示意图。start_bufferbuffer_end缓冲头结构(用来管理缓冲区)缓冲区(用来存数据)缓冲区与块设备(如磁盘)间的读写操作均由ll_rw_block()实现,在kernel\blk_drv\ll_rw_blk.c中。缓冲区是文件系统的底层,介于读写磁盘的驱动程序与文件系统之间,它对文件系统提供了磁盘盘块的抽象,对上接口为设备号和块号。三、索引节点(索引节点是与文件一一对应的)用户文件描述符表与进程有关,即 task_struct中的filp数组,每个进程只能有 20个打开文件。索引节点表中的索引节点与文件一一对应,即整个系统在某一时刻只能打开 32个文件。文件表用来关联这两张表,它的主要功用是记录文件的当前读写指针的偏移值。文件表结构:{文件操作模式(RW位)文件打开和控制的标志对应文件句柄(文件描述符)数指向对应(内存)i节点指针文件位...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

linux内核有关文件系统的数据结构

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部