0%

一、中断

image-20231129162536862

image-20231129162545820

故障(软件中断):若可以解决(如缺页),则返回当前指令;若不能解决(如除0),则终止进程。

二、操作系统引导

image-20231129164744189

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
// m 实现对n的互斥访问
// wmutex 实现读写互斥
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
// m1和m2实现对rcnt和wcnt的互斥访问
// rmutex和wmutex实现读写互斥
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
// m 实现对n的互斥访问
// lock实现读写互斥
// que用于实现读写公平
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)链式分配

  • 隐式链接

    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号索引节点

image-20240730152123893

inode区不常驻内存,故在查找到inode号之后,还需在inode区中根据读出对应的inode节点。

五、文件系统结构

应用程序 -> 逻辑文件系统 -> 文件组织模块 -> 基本文件系统 -> I/O控制 -> 设备

  • 逻辑文件系统: 用于管理元数据信息。
  • 文件组织模块: 组织文件及其逻辑块和物理块。
  • 基本文件系统: 向对应的设备驱动程序发送通用命令,以读取和写入磁盘的物理块。
  • I/O控制: 包括设备驱动程序和中断处理程序,在内存和磁盘系统之间传输信息。

六、I/O接口

image-20231204135309340

  • 数据寄存器用于存放从设备送来的输入数据或从CPU送来的输出数据
  • 控制/状态寄存器用于存放从CPU送来的控制信息或设备的状态信息
  • I/O接口的主要功能有
    • 地址译码和设备选择
    • 主机和外设的通信
    • 数据缓冲
    • 信号格式转换
    • 传送控制命令和状态信息

I/O接口 = I/O端口 + 控制逻辑

  • I/O端口是设备管理器中可被CPU直接访问的寄存器

七、中断响应

  • 硬件执行
    • 关中断
    • 保存断点和程序状态
    • 引出中断服务程序
  • 软件执行
    • 保存现场
    • 开中断
    • 执行中断服务程序
    • 关中断
    • 恢复现场
    • 开中断
    • 中断返回

八、DMA控制器

(1)DMA控制内部结构

image-20231204154124922

  • 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

image-20231204170131605

输入井和输出井位于磁盘,输入缓冲区和输出缓冲区位于内存,井管理程序用于控制设备与输入井、输出井之间信息的交换。

SPOOLing具体功能如下:

  • 缓冲区的设置缓和了CPU和磁盘之间速度不匹配的矛盾。
  • 将独占设备改造为虚拟的共享设备。
  • 将一个物理设备变换为多个对应的逻辑设备。

十、磁盘初始化

(1)物理格式化

  • 将磁道划分扇区
  • 为每个扇区使用特殊的数据结构,包括校验码

(2)分区

  • 将磁盘分区,即C盘、D盘等

(3)逻辑格式化

  • 创建文件系统
  • 创建根目录
  • 初始化存储空间管理所用的数据结构(如位示图、空闲分区表)

十一、常用公式

(1)带权周转时间 = 周转时间 / 执行时间 = 响应比

虽然二者在公式上是相等的,但带权周转时间是静态的概念,确定了就不会再改变;而响应比是动态的概念,会随着程序的执行而改变。

(2)磁盘平均存取时间 = 平均寻道时间 + 旋转延迟时间(一般取半转的时间) + 传输时间

(3)磁盘地址为(柱面号,盘面/磁道号,扇区号)

十二、操作系统结构

image-20231217165617699

十三、虚拟机

image-20231217170006893

十四、固态硬盘

image-20231217170350176

十五、内存映射文件

image-20231217171543335