文件是进程创建的信息逻辑单元
文件类型:字符特殊文件(输入输出,用于io类设备)、块特殊文件、普通文件、目录(管理文件系统结构的系统文件)
普通文件是包含用户信息的文件
- ASCII 文件:可以显示和打印,可以用任何文本编辑器编辑,
- 二进制文件:无法理解的混乱字符,
文件系统布局
文件系统存放在磁盘中,磁盘划分为多个分区,每个分区有一个独立的文件系统。磁盘的0号扇区叫主引导记录(MBM) 用来引导计算机,在MBM后面是分区表,这个表给出了每个分区的起始地址和结束地址。在计算机被引导时BIOS读入并执行MBM ,MBM做的第一件事就是:确定活动分区,读入引导块(第一块) 并执行,引导块中的程序会装载该分区的操作系统。 还有一些项目比如 超级块:包含文件系统的所有关键参数(确定文件系统类型的魔数、文件系统中块的数量)在计算机启动时,超级块会被读入内存。超级块后面是:文件系统中空闲块的信息,用位图、指针记录哪些位置是空闲的,还有 i 节点:说明文件的方方面面;根目录:存放着文件系统目录树的根部;
文件实现
存储文件,记录各个文件分别用到哪些磁盘快。
1. 连续分配
就是把每个文件作为一连串的连续数据块存储在磁盘上,
- 实现简单,记录每个文件用到的磁盘快简化为只需要记住第一块磁盘地址和文件的块数就行了;读操作性能好,只需要一次寻找就可以从磁盘读出文件,
- 随着时间推移,磁盘会变得零碎,
2. 链表分配
- 每一个块的第一个字作为指向下一块的指针,块的其他部分存放数据,这个方法可以充分利用每个磁盘块,不会有磁盘碎片而浪费空间,在目录项中,只需要存放第一块的磁盘地址就可以找到其他块,顺序读取文件很方便。
- 随机访问很慢,要读取N块,必须先读前N-1个块,显示操作太费时,而且指针也会占用一部分空间,会降低系统运行效率
3. 文件分配表
4、 i 节点(重要)
给定 i 节点就可以找到文件的所有块,只有在对应的文件被打开时,i 节点才在内存中
- 打开文件所占用的字节空间很小,是因为 i 节点在内存中有一个数组,其大小和磁盘大小无关,只需要关心打开的文件个数,由于磁盘大小一般很大,而 i 节点机制恰恰避开了
i 节点的最后一个磁盘地址指向的是额外磁盘块的地址,而不是指向数据块。
…未完待续