
linux文件系统源码学习
行走的透明人
只是记录自己学习到的内容。
展开
-
linux进程管理
进程描述符结构定义在linux/sched.h中,下面是其定义,该结构体能描述一个正在执行的程序:打开的文件,地址空间,进程的状态。defined&&defineddefined||defineddefined48ULdefined进程的分配和释放通过slab层管理,达到对象复用和cache coloring的目的。而且可以快速分配task_struct对象。在创建进程时,还需要分配一块内存区域保存thread_info对象的信息,该结构体保存指向task_struct的指针,原创 2023-10-06 00:42:55 · 69 阅读 · 0 评论 -
linux文件系统源码阅读——文件对象
文件对象是一个磁盘上的文件在内存中的表示,一个文件可以存在多个文件对象,但只有一个dentry对象和inode对象,一个文件对象指向一个dentry对象,原创 2023-10-04 17:20:07 · 64 阅读 · 0 评论 -
linux文件系统源码学习——目录项对象
dentry结构体表示目录项对象,该对象只存在于内存中,不写在磁盘上,结构体的定义在linux/dcache.h中。inode结构体中有一个i_dentry的链表,记录了指向该inode的所有目录项对象,dentry相当于一种缓存,它保存在dcache中,对应的inode对象也会保存在缓存中,在文件读取的过程中,首先查找dcache缓存查看是否有对应的目录项对象缓存,如果命中的话,就不需要重新创建dentry对象,否则就需要创建dentry对象,并创建inode对象。原创 2023-10-04 16:57:34 · 236 阅读 · 0 评论 -
linux文件系统源码学习——inode结构体
inode在linux的源代码中是一个结构体,代表一个文件,包含了文件的元数据,有文件所属用户以及用户组,指向超级块的指针,lru(least recently use)列表,记录了最近被使用的inode节点,用来更新缓存,文件的最终修改、访问时间等等。i_devices是一个链表,指向了不同的磁盘块。address_space是跟内存相关的结构,管理文件在内存中的缓存,实现高效的数据读取与写入。原创 2023-10-04 02:17:26 · 218 阅读 · 0 评论 -
linux源码阅读——虚拟文件系统实现(第一篇)
linux的文件系统是使用面向对象的设计思想实现的,但是使用了C语言实现,然而,C语言不支持面向对象,所以文件系统主要是使用了结构体以及函数指针进行实现的。结构体就是对象,函数指针就是对象的成员变量。原创 2023-10-03 21:36:56 · 91 阅读 · 0 评论