第三十一课:磁盘管理与磁盘调度算法(★★★★★)

这一章非常重要,因为:

操作系统不仅管理内存和文件,也负责:

如何高效地从磁盘读取数据。


一、为什么需要磁盘管理?

部件 速度
CPU 非常快
内存 也很快
磁盘 慢很多

例如:

访问速度:

大概:

CPU
纳秒级

↓

内存
几十纳秒

↓

SSD
微秒级

↓

机械硬盘
毫秒级

所以:

如果磁盘访问效率低:

整个系统:

都会变慢。


操作系统需要解决:

两个问题:

  1. 如何组织磁盘?
  2. 如何安排磁盘访问顺序?

二、磁盘的物理结构

我们以传统机械硬盘为例。


磁盘:

由:

多个盘片组成。

每个盘片:

有两个面。


结构:

磁盘

盘片

↓

磁道

↓

扇区

三、磁道(Track)

磁盘表面:

一圈一圈:

同心圆。

每一圈:

叫:

磁道。


类似:

唱片。

唱针:

沿着轨道读取。


表示:

外圈

  --------

  ----

  --

内圈

四、扇区(Sector)

磁道:

继续划分:

小区域。

每个区域:

叫:

扇区


扇区:

是磁盘:

最小存储单位。


例如:

一个扇区:

通常:

512B。

现代:

也可能:

4KB。


五、柱面(Cylinder)

多个盘片:

同一位置:

的磁道。

组成:

柱面。


例如:

多个盘:

第10条磁道:

上下对应。

形成:

一个柱面。


为什么重要?

因为:

磁头移动:

是按柱面移动。


六、磁盘访问时间(★★★★★)

一次磁盘访问:

主要:

三个时间。


1. 寻道时间(Seek Time)

含义:

磁头移动到目标磁道。


例如:

现在:

磁头:

在:

第10磁道。

要访问:

第100磁道。

需要移动。


这是:

最主要时间。


2. 旋转延迟(Rotational Delay)

含义:

等待目标扇区:

转到磁头下面。


机械硬盘:

盘片:

一直旋转。


3. 传输时间(Transfer Time)

含义:

真正读取数据时间。


所以:

总访问时间:

公式:

磁盘访问时间

=

寻道时间

+

旋转延迟

+

传输时间

考试:

经常考:

寻道时间。

因为:

调度算法:

主要优化:

寻道。


七、为什么需要磁盘调度?

假设:

磁头当前:

在:

磁道50。

现在:

请求:

10

90

20

80

如果:

随便访问:

可能:

移动很远。


例如:

顺序:

50→10→90→20→80

移动距离:

巨大。


所以:

操作系统:

重新安排:

访问顺序。


这就是:

磁盘调度算法。


八、算法一:FCFS(★★★★★)

Full First Come First Serve

中文:

先来先服务。

思想:

谁先请求,先处理谁。


例如:

请求:

10 90 20 80

磁头:

50。

顺序:

50
 ↓
10
 ↓
90
 ↓
20
 ↓
80

优点:

简单公平。


缺点:

效率低。


因为:

可能:

磁头来回跑。


九、算法二:SSTF(★★★★★)

Shortest Seek Time First

中文:

最短寻道时间优先。

思想:

每次选择距离当前磁头最近的请求。


例如:

磁头:

50。

请求:

10

90

20

80

当前:

50。

距离:

10:

40

90:

40

20:

30

80:

30

选择:

最近。

假设:

20。


移动:

50→20

然后:

继续选择最近。


优点:

减少平均寻道时间。


缺点:

可能产生:

饥饿。


十、什么是饥饿?

例如:

某请求:

在远处。

但是:

附近不断来新请求。


系统:

一直服务附近。

远处:

一直等待。


这个叫:

饥饿。


十一、算法三:SCAN(★★★★★)

也叫:

电梯算法。

思想:

磁头像电梯一样,一个方向走到底,再回来。


例如:

磁头:

50。

方向:

向右。

请求:

10

20

80

90

先:

向右:

50→80→90

然后:

掉头:

90→20→10

像电梯:

上楼。


优点:

公平。

不会:

长期等待。


十二、算法四:C-SCAN(了解)

Circular SCAN。

循环扫描。

思想:

只:

一个方向服务。


例如:

向右:

50

↓

80

↓

90

到头:

直接:

回到最左边。

继续:

向右。


区别:

SCAN:

来回扫。

C-SCAN:

单方向循环。


十三、四种算法比较(★★★★★)

算法 思想 特点
FCFS 先来先服务 公平但慢
SSTF 最近优先 速度快但可能饥饿
SCAN 电梯移动 公平稳定
C-SCAN 单方向循环 更加均匀

口诀:

FCFS看时间

SSTF看距离

SCAN像电梯

C-SCAN绕圈

十四、磁盘调度计算方法

考试:

给:

当前磁头:

例如:

50。

请求:

82 170 43 140 24 16 190

问:

SSTF移动多少?


步骤:

每一步:

找最近。

例如:

当前50:

距离:

43最近。

移动:

50→43。

记录:

7。

然后:

继续。


最后:

把所有移动距离相加。


十五、本课重点总结(★★★★★)

磁盘结构:

盘片
 ↓
磁道
 ↓
扇区

访问时间:

寻道时间
+
旋转延迟
+
传输时间

调度算法:

FCFS

先来先服务。


SSTF

最近请求优先。


SCAN

电梯算法。


C-SCAN

循环扫描。


第三十二课:I/O设备管理(★★★★★)


一、什么是I/O设备?

I/O:

Input / Output

中文:

输入输出。


输入:

把信息:

送给计算机。

例如:

  • 键盘
  • 鼠标
  • 摄像头
  • 麦克风

输出:

计算机:

把结果:

给外部。

例如:

  • 显示器
  • 打印机
  • 音响

所以:

I/O设备:

就是:

计算机与外界交换信息的设备。


二、为什么需要设备管理?

问题来了:

CPU:

非常快。

但是:

设备:

很慢。


例如:

CPU:

每秒:

执行:

几十亿条指令。


键盘:

你:

一秒:

最多:

按几个键。


如果CPU:

一直等待键盘:

那么:

CPU大部分时间:

浪费。


所以:

操作系统需要:

管理:

CPU和设备之间的关系。


三、I/O设备组成

一个设备:

通常包括:

三个部分。


① 设备本身

例如:

键盘。


② 设备控制器(★★★★★)

这是重点。


CPU:

不能直接:

控制硬件。

中间:

需要:

设备控制器。


结构:

CPU

↓

设备控制器

↓

I/O设备

例如:

CPU说:

“我要读取键盘输入”。

不会:

直接找键盘。

而是:

通知:

键盘控制器。


四、设备控制器是什么?

简单理解:

管理某个硬件的专用小控制器。


例如:

电脑:

有:

  • 显卡控制器
  • 硬盘控制器
  • USB控制器

设备控制器:

负责:

  1. 接收CPU命令
  2. 控制设备工作
  3. 保存数据
  4. 向CPU报告状态

五、设备控制器中的寄存器

控制器:

里面:

有一些特殊存储区域。

叫:

寄存器。


常见:

三个:


1. 数据寄存器

保存:

要传输的数据。


2. 状态寄存器

表示:

设备状态。

例如:

准备好了

忙

错误

3. 控制寄存器

CPU:

发送命令。

例如:

开始读取。


六、I/O控制方式(重点)

CPU和设备:

如何通信?

有几种方式。


第一种:程序直接控制方式

也叫:

轮询方式。


思想:

CPU:

不断问:

设备:

“好了没?”


例如:

CPU:

键盘?

好了没?

键盘?

好了没?

优点:

简单。


缺点:

浪费CPU。


因为:

CPU:

一直等待。


第二种:中断驱动方式(★★★★★)

思想:

设备完成后主动通知CPU。


过程:

例如:

键盘输入:

  1. 用户按键

  1. 键盘控制器收到

  1. 发送中断信号

  1. CPU暂停当前任务

  1. 处理中断

结构:

设备完成

↓

发送中断

↓

CPU响应

↓

执行处理程序

优点:

CPU不用一直等待。


缺点:

频繁中断:

有开销。


第三种:DMA方式(★★★★★)

DMA:

Direct Memory Access

中文:

直接内存访问。


这是重点。


为什么需要DMA?

想象:

复制一个大文件。

如果:

每个字节:

都让CPU参与:

太慢。


所以:

DMA出现。

思想:

让设备直接和内存交换数据。


传统:

设备

↓

CPU

↓

内存

DMA:

设备

↓

内存

CPU:

只负责:

开始和结束通知。


七、DMA工作流程(★★★★★)

例如:

读取硬盘文件。


第一步:

CPU告诉DMA:

我要:

读取数据。


第二步:

DMA控制器:

接管。


第三步:

DMA:

直接:

把数据放入内存。


第四步:

完成后:

DMA:

发送中断。


流程:

CPU发命令

↓

DMA传输

↓

数据进入内存

↓

中断CPU

八、三种方式比较

方式 CPU参与 效率
程序控制 一直参与 最低
中断方式 部分参与 较高
DMA 只开始结束参与 最高

口诀:

轮询CPU等,中断设备叫,DMA自己搬。


九、I/O缓冲区(★★★★★)

还有一个问题:

设备速度不同。


例如:

CPU:

写数据:

很快。

打印机:

打印:

很慢。

怎么办?


使用:

缓冲区。


什么是缓冲区?

简单:

临时存放数据的区域。


例如:

打印:

程序

↓

缓冲区

↓

打印机

程序:

把内容:

快速放入缓冲区。

然后:

继续运行。

打印机:

慢慢打印。


十、缓冲的作用

主要:

三个:


1. 缓解速度差异

CPU快。

设备慢。


2. 提高CPU利用率

CPU不用等待。


3. 减少设备访问次数

提高效率。


十一、假脱机技术 SPOOLing(★★★★★)

这个非常经典。


SPOOLing:

Simultaneous Peripheral Operations On-Line。

中文:

假脱机技术。


主要用于:

打印机。


为什么?

打印机:

一次只能打印:

一个任务。


如果:

100个用户:

同时打印。

怎么办?


SPOOLing:

思想:

用磁盘模拟一个共享设备。


流程:

用户任务

↓

磁盘缓冲区

↓

打印队列

↓

打印机

例如:

你点击打印。

不会:

直接占用打印机。

而是:

放入:

打印队列。


打印机:

一个一个处理。


十二、本课重点总结(★★★★★)

I/O设备

负责:

输入输出。


设备控制器

CPU和设备之间桥梁。


三种I/O控制方式

程序控制

CPU一直问。


中断

设备完成通知CPU。


DMA

设备直接访问内存。


缓冲区

解决:

速度不匹配。


SPOOLing

模拟共享设备。

典型:

打印机。


第三十三课:操作系统保护与安全机制(★★★★★)


一、为什么需要操作系统保护?

计算机中:

同时运行:

很多程序。

例如:

浏览器

音乐软件

游戏

杀毒软件

如果:

任何程序:

都可以:

随便访问:

  • 内存
  • 硬盘
  • CPU控制权

会发生什么?


程序A:

修改:

程序B:

的数据。


病毒:

删除:

系统文件。


普通软件:

直接控制:

硬件。


所以:

操作系统必须:

建立:

保护机制。


二、保护和安全的区别

容易混淆。


保护(Protection)

重点:

防止内部错误访问。

例如:

程序A:

不能访问:

程序B:

的内存。


安全(Security)

重点:

防止恶意攻击。

例如:

防止病毒、黑客。


简单:

保护:

防自己人犯错。

安全:

防坏人攻击。


三、用户态和内核态(★★★★★)

这是本课最重要概念。


CPU:

有不同权限等级。

最重要:

两个:


1. 用户态(User Mode)

普通程序:

运行:

用户态。


例如:

你打开:

浏览器。

它:

不能:

直接:

操作硬盘控制器。


权限:

低。


2. 内核态(Kernel Mode)

操作系统:

运行:

内核态。


权限:

最高。

可以:

  • 操作硬件
  • 管理内存
  • 控制设备

结构:

用户程序

(用户态)

↓

系统调用

↓

操作系统内核

(内核态)

↓

硬件

四、为什么需要用户态和内核态?

假设:

没有权限区分。

程序:

直接:

执行:

delete_system();

系统:

可能:

直接崩溃。


所以:

限制:

普通程序。


原则:

用户程序不能直接访问关键资源。


五、系统调用(★★★★★)

问题:

用户程序:

需要:

操作硬件怎么办?

例如:

保存文件。


用户程序:

不能:

直接:

写硬盘。

怎么办?


答案:

通过:

系统调用。


系统调用:

就是:

用户程序请求操作系统服务的接口。


例如:

程序:

想打开文件:

应用程序

↓

open()

↓

系统调用

↓

文件系统

↓

磁盘

六、系统调用流程(★★★★★)

完整过程:

用户程序

↓

调用系统函数

↓

切换到内核态

↓

操作系统执行服务

↓

返回用户态

这个:

叫:

模式切换。


七、为什么系统调用需要切换模式?

因为:

只有内核态:

可以执行:

特权指令。


例如:

控制:

  • CPU
  • 内存
  • 设备

普通程序:

没有权限。


八、特权指令

什么是:

特权指令?


简单理解:

只有操作系统才能执行的危险指令。


例如:

  • 设置页表
  • 关闭中断
  • 访问设备控制器
  • 修改系统状态

普通程序:

执行:

会失败。


九、访问控制(★★★★★)

操作系统:

必须决定:

谁可以访问什么。


例如:

文件:

secret.txt

权限:

用户A:读写

用户B:只读

用户C:禁止

这就是:

访问控制。


十、Linux文件权限(经典)

Linux:

权限:

三个部分。


例如:

-rwxr-xr--

拆开:

用户

rwx

组

r-x

其他人

r--

含义:

r

read

读。


w

write

写。


x

execute

执行。


十一、保护机制有哪些?

操作系统:

常见:


1. 内存保护

防止:

一个程序访问另一个程序内存。


例如:

程序A:

不能:

读取:

程序B:

密码。


2. 文件保护

控制:

谁能:

读写文件。


3. CPU保护

防止:

程序:

无限占用CPU。


例如:

时间片轮转。


4. I/O保护

防止:

普通程序:

直接控制设备。


十二、安全机制

除了保护:

还需要安全。


主要:

包括:


1. 身份认证

确认:

你是谁。

例如:

密码。

指纹。


2. 权限管理

确认:

你能干什么。


例如:

管理员:

安装软件。

普通用户:

不能。


3. 加密

保护:

数据。


例如:

HTTPS。

磁盘加密。


十三、操作系统安全模型

经典:

访问矩阵。


思想:

记录:

主体:

可以访问:

哪些对象。


例如:

文件A 文件B
用户1 读写
用户2 读写

主体:

用户。

对象:

资源。


十四、本课重点总结(★★★★★)

用户态

普通程序运行。

权限低。


内核态

操作系统运行。

权限高。


系统调用

用户访问内核服务的接口。


特权指令

只有内核执行。


访问控制

决定:

谁能访问什么。


保护 vs 安全

保护:

防内部错误。

安全:

防攻击。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐