写在最前面,需要pdf的请资源里下载,已经排版好了,这里不知道为什么粘贴上来排版这么难看!!!
某一个分区进行格式化的时候,这个分区的文件系统就被建立了,一旦这个文件系统建立完后,就确定了文件系统使用的什么样的物理结构。
操作系统引导:
主存分为两部分,RAM和ROM(BIOS),开机时,cpu会先执行BIOS的自举程序。
①CPU会先执行ROM中的引导程序(先进行硬件自检,再开机)
②将磁盘(RAM)的第一块:主引导记录(MBR)读入内存,执行磁盘引导程序,扫描分区表。(知道电脑有几个分区,并且知道哪个分区是系统盘)
③从系统所在盘(C盘):读入引导记录(PBR),执行其中的程序
④执行程序又引导操作系统把查找根目录将根目录的内容读入内存,于是操作系统又可以从C盘的根目录出发,将所有需要的东西找到,逐个加载进来。
注1:主引导记录和引导记录不是一个东西。
注2:主引导记录在整个磁盘的前边,而引导记录是在系统盘的前边。
注3:根目录表是怎么找到的?根目录的在磁盘块的位置定死了,设置固定地址去读就好。
补充知识点:open系统调用是要得到文件的控制信息,而不是文件数据本身!!!
2.UFS文件系统(物理结构:混合索引)
2.1.UFS文件系统的基本概念
将操作系统系统盘分区放大,于是系统盘分区如下所示(只包含了引导记录部分):
引导块:用于引导操作系统初始化的一段程序。作用效果是引导操作系统找到根目录,并将根目录的目录文件的内容载入内存。
超级块:包含一些重要的文件系统管理信息,如:魔数、磁盘转速、磁道数、扇区数等
位示图:这个位示图(字,位),位为1bit,1表示不空闲,0表示空闲。
注1:每个bit对应一个物理块。因此,若磁盘块共有 n 个,则位示图也至少要有 n bit。
注2:设⼀个磁盘块大小为4KB,即 32K bit,因此这个位示图能支持的磁盘大小上限为 32K 个块。如果需要支持更多磁盘块,则需要扩充位示图的大小。
inode区:在Unix文件系统中,所有的索引结点集中存放,即所有inode有共同的起始地址。
“inode结点”就是“索引节点”。每个文件对应一个inode!!!用于表示“文件物理结构”的“混合索引表”被包含在inode结点中,通过“混合索引表”,即可找到一个文件中每个块存储的物理位置。
根目录(存在固定位置):
根目录文件的内容
注1:根目录的信息存储在磁盘的固定位置,这样可以保证开机时,能够找到根目录,再从根目录出发找到其他信息。
注2:开机时,根目录的内容通常会被加载到内存,并一直常驻内存。
注3:由于Unix文件系统采用了“索引结点”,因此每个目录项只需包含“文件名、inode号”,文件的具体属性包含在inode中。
注4:每个目录文件中默认包含两个目录项,分别是“.”和“..”,表示当前目录,“..”表示上一级目录。根目录比较特殊,没有所谓的“上一级目录”,因此它的目录项“..”指向自身
2.2.UFS文件系统打开文件的过程(对应文件系统骚图来看!)
当前工作目录在根目录下。开机时,根目录文件的内容通常会被加载到内存,并常驻内存。(即顶级索引表结点已经在内存中)
- 根据目录文件的内容查找到各个文件(目录也是文件)对应inode编号(inode索引各个文件)
注:如果是目录文件,则inode索引的文件记录的又是该目录下各个文件的inode。如果是普通文件,则inode索引的文件就是文件数据。
- 通过目录文件又可以得到下一级文件的inode。
如果读取对应物理块,用read系统调用,才可以得到对应的目录文件(或普通文件)
3、循环反复。