路径名解析功能分析 路径名解析就是依次寻找目录中的元素,直到找到匹配的文件。比如要想寻找/a/b.txt文件,则解析顺序如下: 在根目录’/‘inode中寻找名为a的条目。 由于a也是一个目录,则继续...
Xv6内核分析(十八)
目录实现分析 1. Xv6目录简介 在xv6中目录的也是用inode来表示的,只是inode中的type字段为T_DIR。普通文件的数据块中保存的是文件的内容,但是目录inode的数据块中保存的是一系...
Xv6内核分析(十七)
inode内容分析 1. inode具体内容 磁盘上的Inode具体内容如下: inode的数据块在磁盘上的位置由inode的address表来记录,address表分为直接表和间接表,直接表共有12...
Xv6内核分析(十六)
inode分析 1. inode介绍 在xv6中用Inode表示一个文件,inode数据结构在磁盘上和内存中都有表示。磁盘上的inode信息用于表示文件的大小、类型、文件数据在磁盘上的位置等等,内存中...
Xv6内核分析(十五)
block 分配器 文件和目录的内容存在磁盘块中,磁盘块都从一个空闲块池中分配出来。xv6 的块分配器包含一个磁盘上的空闲块位图,每个块占一个位。引导区,超级块,i 节点块和位图块的位永远都被置为有效...
Xv6内核分析(十四)
日志子系统分析 1. 日志子系统简介 Xv6中的log日志子系统主要用于系统以外崩溃挥着掉电后,再次运行时能够恢复运行。xv6中的磁盘中的文件系统布局如下: 日志区域由一个日志头加上30...
Xv6内核分析(十三)
buffer cache分析 1. buffer cache概述 Buffer cache是一个双向循环链表,用于缓存磁盘上的数据以提高性能。使用bread从磁盘上读取数据,使用bwrite将修改的数...
Xv6内核分析(十二)
sleeping lock分析 Xv6中的sleeping lock只在文件系统中使用到,因为从磁盘读写数据可能需要数ms的时间,这时进程可以放弃cpu让其他进程运行。但是放弃cpu的同时也会锁住文件...
Xv6内核分析(十一)
sleep与wakeup分析 1. 案例 首先来看下xv6的sleep和wakeup使用例子: cquire(lock) sleep(chan,lock) release(lock) acquire(...
Xv6内核分析(十)
spinlock分析 1. initlock spinlock分析spinlock: 主要是初始化锁的状态为0,并记录锁的名字用于调试分析。 2. pushcli和popcli 在xv6中,用spin...
Xv6内核分析(九)
ide硬盘驱动分析 1. 磁盘驱动程序 磁盘驱动程序用结构体 buf(称为缓冲区)来表示一个磁盘扇区。每一个缓冲区表示磁盘设备上的一个扇区。域 dev 和 sector 给出了设备号和扇区号,域 da...
Xv6内核分析(八)
新进程运行分析 进程刚创建时的内核栈分布如下: 当从swtch中的ret返回后,新进程回到forkret中执行。 forkret首先会释放ptable.lock这个锁,这个锁是在scheduler线程...