操作系统之哲学思想之文件系统
一、磁盘操作
中心思想:整个文件系统管理的核心 费时的操作丢给内存,费空间的操作丢给磁盘
二、文件系统
- 进程抽象CPU
- 虚拟内存抽象内存
- 文件系统抽象磁盘
文件系统的主要特性:存储大量的信息,多个进程可以同时访问一个文件,进程的结束不会影响文件的持续存在
目标:地址独立和地址保护
地址独立:文件数据的产生与文件将来存放的磁盘地址相互独立
地址保护:需要对文件的访问进行一定的限制,即不是任何人都能访问任何文件(权限设定)
2.1、文件格式
魔数:是用来告诉操作系统这个文件的类型的。对于可执行文件来说,这个魔数是一个固定的值。
对于可执行文件包含:一个标题(header)、一个代码部分、一个数据部分、一个重定位部位和一个符号表
2.2、文件访问
文件的访问类型:顺序访问和随机访问
2.3、地址独立的实现机制:文件夹
文件夹:它保存的不是用户数据,而是关于文件及文件系统的信息(即文件夹得绝色就是用来跟踪文件,里面存放得是从文件到文件在磁盘得地址得映射)
文件夹存放得是文件名到磁盘地址的映射。
2.4、内存映射的文件访问
解决读写文件效率低下的中心思想是:把磁盘访问变成内存访问。实现这种访问转变的手段就是内存映射的文件访问
内存映射的文件访问原理:把需要访问的文件映射到一个进程的虚拟地址内,这样访问该虚拟地址就相当于访问文件。
内存映射的文件访问目的:是为了文件的共享,即可以将同一个文件映射到两个或多个进程的虚拟地址空间。
2.5、文件系统的布局
a、第0个扇面在整个文件系统占有重要意义
该扇面存放的是主引导记录(MBR)。记录的内容是一个小程序,用来启动计算机
b、MBR后面紧接着的是磁盘分区表:磁盘分区表是给出的是磁盘的所有分区及其开始地址和终结地址。
其中的一个分区为主分区。操作系统就装载在这个分区。主分区里面最前面的是引导记录(Boot Record)
c、在计算机启动时,处于主板ROM里面的BIOS程序首先运行------》BIOS进行基本的系统配置扫描后对磁盘的扇区0进行读操作----》将MBR里面的程序读到内存并运行------》MBR程序接下来找到系统主分区,并将主分区里面的Boot Record加载并运行------》Boot Record 里面内容是一个小程序,该程序将负责找到操作系统映像,并加载到内存,从而启动操作系统。
2.6、文件的实现
文件的实现要解决如下问题:
-
- 给文件分配磁盘空间
- 记录这些磁盘空间的位置
- 将文件内容存放在这些空间
非连续存放方式通过链表方式实现,在每个数据块里面留出一个指针的空间,用来存放下一个数据块所在的地址。
把所有指针从单个数据块抽取出来,全部放在一起,形成一张表。称为文件分配表(File Allocation Table)
虚拟内存(VM)和文件缓存根本区别:
VM的根本目的是提供一个速度非常高、容量非常大的并不存在的内存空间;从物理内存出发,为了增加内存空间而扩展到磁盘上。
文件缓存:提高文件的访问效率而出现,从磁盘出发,为了提高访问效率而将文件置于缓存。
I/O原理
DMA(直接内存访问)的工作原理:如果按数据块进行I/O,即无需CPU的介入;可以让I/O设备与计算机内存进行直接数据交换
CPU从繁忙等待中解脱出来,DMA的整个数据读写过程不需要使用处理器的功能吗?
答:数据传输当然使用CPU,只是不是进程共享的CPU,而是另外的CPU即DMA控制器(以不慢于I/O设备的速度进行数据读写即可)
根据CPU在I/O过程中的涉入程度分类:
物理I/O:
- 繁忙等待访问
- 直接内存访问(DMA)
DMA输入输出的过程:
- CPU对DMA进行设置,告诉其I/O的起始地址和数据长度
- 启动DMA过程
- DMA进行数据传输
- DMA结束后发出中断
- CPU响应中断并处理结束事宜
逻辑I/O:
可编程I/O:CPU等待I/O的完成(CPU涉入程度很深),这种模式称为轮询或繁忙等待
中断驱动I/O:中断驱动是将CPU从繁忙等待中解脱出来
发送一批数据后,CPU去忙其他事;I/O设备处理完这批数据后,向CPU发出中断,CPU响应中断后再发送下一批数据
SMP:多个CPU的角色功能平等,没有主从之分,这种多CPU结构称为对称多处理结构