一、中断
故障(软件中断):若可以解决(如缺页),则返回当前指令;若不能解决(如除0),则终止进程。
二、操作系统引导
1、 CPU从特定主存地址(ROM)开始读取指令,执行ROM中的引导程序,进行硬件自检,确定磁盘位置
2、 将磁盘的第一块——主引导记录(MBR)读入内存,MBR中包含磁盘引导程序和分区表
3、 执行磁盘引导程序,从主分区(C盘)读入分区引导记录(PBR),执行其中的程序
4、 从根目录下找到找到启动管理器(操作系统初始化程序)并执行,完成开机
三、读者写者问题 (1)读优先
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 semaphore m = 1 , wmutex = 1 ; int rcnt = 0 ; void writer () { P(wmutex); read(); V(wmutex); } void reader () { P(m); if (!rcnt) P(wmutex); rcnt++; V(m); read(); P(m); rcnt--; if (!rcnt) V(wmutex); V(m); }
(2)写优先
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 semaphore m1 = 1 , m2 = 1 , rmutex = 1 , wmutex = 1 ; int rcnt = 0 , wcnt = 0 ; void writer () { P(m1); if (!wcnt) P(rmutex); wcnt++; V(m1); P(wmutex); write(); V(wmutex); P(m1); wcnt--; if (!wcnt) V(rmutex); V(m1); } void reader () { P(rmutex); P(m2); if (!rcnt) P(wmutex); rcnt++; V(m2); V(rmutex); read(); P(m2); rcnt--; if (!rcnt) V(wmutex); V(m2); }
(3)读写公平
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 semaphore m = 1 , wmutex = 1 , que = 1 ; int rcnt = 0 ; void writer () { P(que); P(wmutex); read(); V(wmutex); V(que); } void reader () { P(que); P(m); if (!rcnt) P(wmutex); rcnt++; V(m); V(que); read(); P(m); rcnt--; if (!rcnt) V(wmutex); V(m); }
四、文件控制块 (1)顺序分配
FCB
文件名
起始块号
块数
file1
1
8
file2
17
2
顺序分配的寻道数和寻道时间最小。
(2)链式分配
(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)分区
(3)逻辑格式化
创建文件系统
创建根目录
初始化存储空间管理所用的数据结构(如位示图、空闲分区表)
十一、常用公式 (1)带权周转时间 = 周转时间 / 执行时间 = 响应比
虽然二者在公式上是相等的,但带权周转时间是静态的概念,确定了就不会再改变;而响应比是动态的概念,会随着程序的执行而改变。
(2)磁盘平均存取时间 = 平均寻道时间 + 旋转延迟时间(一般取半转的时间) + 传输时间
(3)磁盘地址为(柱面号,盘面/磁道号,扇区号)
十二、操作系统结构
十三、虚拟机
十四、固态硬盘
十五、内存映射文件