一、中断
故障(软件中断):若可以解决(如缺页),则返回当前指令;若不能解决(如除0),则终止进程。
二、操作系统引导
1、 CPU从特定主存地址(ROM)开始读取指令,执行ROM中的引导程序,进行硬件自检,确定磁盘位置
2、 将磁盘的第一块——主引导记录(MBR)读入内存,MBR中包含磁盘引导程序和分区表
3、 执行磁盘引导程序,从主分区(C盘)读入分区引导记录(PBR),执行其中的程序
4、 从根目录下找到找到启动管理器(操作系统初始化程序)并执行,完成开机
三、读者写者问题
(1)读优先
1 | // m 实现对n的互斥访问 |
(2)写优先
1 | // m1和m2实现对rcnt和wcnt的互斥访问 |
(3)读写公平
1 | // m 实现对n的互斥访问 |
四、文件控制块
(1)顺序分配
FCB
文件名 | 起始块号 | 块数 |
---|---|---|
file1 | 1 | 8 |
file2 | 17 | 2 |
顺序分配的寻道数和寻道时间最小。
(2)链式分配
隐式链接
FCB
文件名 起始块号 结束块号 file1 0 2 file2 2 3 除最后一个盘块外,每个盘块都有指向下一个盘块的指针,这些指针对用户透明。
一般可将几个盘块组成簇,按簇而不按块来分配。
显示链接
FCB
文件名 起始块号 file1 0 file2 2 FAT
盘块号(隐含) 下一块 0 3 1 4 2 -1 3 -1 4 2 5 -2 FAT不仅记录了文件各块之间的先后关系,还标记了空闲的磁盘块,操作系统可以根据FAT对文件存储空间进行管理。此外,FAT常驻内存。
(3)混合索引分配
FCB
文件名 | 索引节点号 |
---|---|
file1 | 0 |
file2 | 1 |
0号索引节点
inode区不常驻内存,故在查找到inode号之后,还需在inode区中根据读出对应的inode节点。
五、文件系统结构
应用程序 -> 逻辑文件系统 -> 文件组织模块 -> 基本文件系统 -> I/O控制 -> 设备
- 逻辑文件系统: 用于管理元数据信息。
- 文件组织模块: 组织文件及其逻辑块和物理块。
- 基本文件系统: 向对应的设备驱动程序发送通用命令,以读取和写入磁盘的物理块。
- I/O控制: 包括设备驱动程序和中断处理程序,在内存和磁盘系统之间传输信息。
六、I/O接口
- 数据寄存器用于存放从设备送来的输入数据或从CPU送来的输出数据
- 控制/状态寄存器用于存放从CPU送来的控制信息或设备的状态信息
- I/O接口的主要功能有
- 地址译码和设备选择
- 主机和外设的通信
- 数据缓冲
- 信号格式转换
- 传送控制命令和状态信息
I/O接口 = I/O端口 + 控制逻辑
- I/O端口是设备管理器中可被CPU直接访问的寄存器
七、中断响应
- 硬件执行
- 关中断
- 保存断点和程序状态
- 引出中断服务程序
- 软件执行
- 保存现场
- 开中断
- 执行中断服务程序
- 关中断
- 恢复现场
- 开中断
- 中断返回
八、DMA控制器
(1)DMA控制内部结构
- CR(命令/状态寄存器):接收从CPU发来的I/O命令、有关控制信息或设备的状态。
- MAR(内存地址寄存器):存储这批数据要传送到内存的起始目标地址。
- DR(数据寄存器):暂存从设备到内存或从内存到设备的数据。
- DC(数据计数器):存放本次要传送的字(节)数。
每完成一次数据交换,(MAR) + 1,(DC) - 1,直至(DC) = 0,代表此次数据传送完毕。
DMA与主存以字为单位交换数据,DMA与外设以字节或位为单位进行传送。
(2)DMA传送方式
外设向DMA控制器发送DMA请求,再由DMA控制器向CPU发出总线请求
- 停止CPU访存
- 周期挪用
- 单字传送方式
- DMA对于总线的使用权大于CPU对于总线的使用权
- DMA与CPU交替访存
- 适用于CPU工作周期大于主存存取周期,可将一个CPU周期分成两个周期C1和C2,一个供CPU访存,一个供DMA访存。
程序查询方式 | 程序中断方式 | DMA方式 | |
---|---|---|---|
数据传送 | 由程序控制,CPU全程参与数据传输 | 由程序控制,CPU参与中断处理过程 | 由硬件控制,CPU只参与预处理和后处理 |
中断请求 | 无 | 传输数据 | 后处理 |
中断响应 | 无 | 一条指令执行结束 | 每个机器周期结束 |
使用场景 | 适用于工作不繁忙的系统 | 适用于CPU任务繁忙以及对紧急事件的中断处理 | 适用于高速外设数据传输 |
优先级 | 最低 | 一般 | 最高 |
异常处理 | 仅传输数据 | 能处理异常事件 | 仅传输数据 |
是否涉及软硬件 | 软件 | 软硬件 | 硬件 |
九、I/O软件层次
层次 | I/O功能 |
---|---|
用户层I/O软件 | I/O系统调用、I/O格式化 |
设备独立性软件(不涉及硬件) | 缓冲区管理、设备分配和回收、虚拟设备、差错处理、设备保护,SPOOLing、设备驱动程序接口 |
设备驱动程序(涉及硬件) | 设置设备寄存器、检查设备状态、启动I/O操作 |
中断处理程序 | 处理I/O中断、报告错误、唤醒驱动程序 |
硬件 | 执行I/O操作 |
9.1、设备独立性软件
1、设备分配的数据结构
(1)设备控制表(DCT):系统为每个设备配置一张设备控制表。
(2)控制器控制表(COCT):系统为每个控制器配置一张控制器控制表。
(3)通道控制表(CHCT):系统为每个通道配置一张通道控制表。
(4)系统设备表(SDT):整个系统只有一张系统设备表,每个设备占一个表目。
一个通道可以控制多个设备控制器,而每个设备控制器又可以控制多个设备(并发而非并行)。只有当通道、设备控制器、设备都成功分配时,进程才能正常使用设备。
设备分配程序为用户进程分配设备:先分配设备,再分配设备控制器,最后分配通道。
2、逻辑/物理设备映射的数据结构
(1)整个系统只设置一张逻辑设备表(LUT)
逻辑设备名 | 物理设备名 | 驱动程序入口地址 |
---|---|---|
/dev/device1 | 1 | 1024 |
/dev/device2 | 3 | 2046 |
此方案无论是否是同一用户的逻辑设备,均不允许同名,仅适用于单用户系统。
(2)为每个用户设置一张逻辑设备表(LUT)
逻辑设备名 | 系统设备表指针 |
---|---|
/dev/device1 | 1 |
/dev/device2 | 3 |
此方案允许使用相同的逻辑设备名,类似单级目录和多级目录的区别。
3、SPOOLing
输入井和输出井位于磁盘,输入缓冲区和输出缓冲区位于内存,井管理程序用于控制设备与输入井、输出井之间信息的交换。
SPOOLing具体功能如下:
- 缓冲区的设置缓和了CPU和磁盘之间速度不匹配的矛盾。
- 将独占设备改造为虚拟的共享设备。
- 将一个物理设备变换为多个对应的逻辑设备。
十、磁盘初始化
(1)物理格式化
- 将磁道划分扇区
- 为每个扇区使用特殊的数据结构,包括校验码
(2)分区
- 将磁盘分区,即C盘、D盘等
(3)逻辑格式化
- 创建文件系统
- 创建根目录
- 初始化存储空间管理所用的数据结构(如位示图、空闲分区表)
十一、常用公式
(1)带权周转时间 = 周转时间 / 执行时间 = 响应比
虽然二者在公式上是相等的,但带权周转时间是静态的概念,确定了就不会再改变;而响应比是动态的概念,会随着程序的执行而改变。
(2)磁盘平均存取时间 = 平均寻道时间 + 旋转延迟时间(一般取半转的时间) + 传输时间
(3)磁盘地址为(柱面号,盘面/磁道号,扇区号)