5.3.1 文件系统的布局-操作系统设计与实现(第三版)5.1-5.2

第5章 文件系统

5.1.2 三种类型的文件

字节序列、记录序列、树

5.1.3 可执行文件

一个可执行文件有五个段:文件头、代码、数据、重定位位和符号表。文件头以所谓的魔数(magic number)开始,表名该文件是一个可执行文件。接下来是文件的各个部分的长度、执行的起始地址和一些标志位。在文件头之后就是程序本身的代码和数据,在它们被转载到内存中时,使用重定位位来进行定位。符号表则用于调试。

5.3.1 文件系统的布局

BIOS:在计算机启动后,BIOS会读入并执行MBR中的代码。

主引导记录(Master Boot Record,MBR):磁盘的第0个扇区,主要用来启动计算机。或被称为 初始化程序装载器(Initial Program Loader,IPL)、卷引导代码(Volume Boot Code)、主引导(master boot)。

(主)分区表(partition table):MBR的末尾有一个分区表,里面记录了每一个分区的起始地址和结束地址。

活动分区:分区表中有一个是活动分区。

引导块(boot block):活动分区中的第一个磁盘块,被MBR读入内存,然后执行它。引导块中的代码就会把保存在该分区中的操作系统读取出来,装入内存运行。为了保持一致性,每一个分区都以一个引导块开头,即使在该分区中并没有包含一个可引导的操作系统。

在PC兼容的系统上。
主要分区(primary partition):主要分区的个数最多不能超过4个,因为在主引导记录和第1个512字节的扇区末尾之间,仅能容纳4个数组元素,来存放分区的描述符。最初的启动必须从主分区开始,由它来装入代码,管理各个逻辑分区。

扩展分区(extend partition):有些操作系统允许将分区表中的某一项作为一个扩展分区,指向逻辑分区链表。

逻辑分区(logic partition):多个逻辑分区由链表连接。

在MINIX3中。
子分区表(sub partition table):针对扩展分区,它允许在一个分区中,包含有一个子分区表。这样做好处是,可以使用管理主分区表的代码来管理子分区表,因为它们的结构是一样的。子分区的可能的用途是:针对根设备、交换区、系统二进制文件和用户文件,可以使用不同的子分区。这样一来,在一个字分区中发生的问题不会传播到另一个子分区。

其他。
不是所有的磁盘都需要分区,软盘的引导块通常从第一个扇区开始(第0个扇区为MBR?)。
BIOS读入磁盘的第一个扇区,然后查找一个魔数(?????不是可直接执行的二进制的机器指令吗?),标明它是有效的可执行代码。主引导记录和引导块使用的是相同的魔数,因而可执行代码可能是两者之一(???)。
Flash存储器通常会使用部分的存储容量来模拟一个磁盘。

一种可能的文件系统布局

超级块(superblock):包含了关于文件系统的所有关键参数。当计算机被启动或文件系统被首次接触时(被挂载吗?),超级块的内容被装入内存。

空闲空间管理:关于文件系统中空闲物理块的管理信息。

索引节点:一组数据结构,一个文件对应一个,描述了文件的所有属性信息和它在磁盘上的存储位置。

根目录:文件系统数的根结点。

posted @ 2022-12-12 20:35  zkx98  阅读(59)  评论(0编辑  收藏  举报