计算机操作系统31,32,33(完结)
第三十一课:磁盘管理与磁盘调度算法(★★★★★)
这一章非常重要,因为:
操作系统不仅管理内存和文件,也负责:
如何高效地从磁盘读取数据。
一、为什么需要磁盘管理?
| 部件 | 速度 |
|---|---|
| CPU | 非常快 |
| 内存 | 也很快 |
| 磁盘 | 慢很多 |
例如:
访问速度:
大概:
CPU 纳秒级 ↓ 内存 几十纳秒 ↓ SSD 微秒级 ↓ 机械硬盘 毫秒级所以:
如果磁盘访问效率低:
整个系统:
都会变慢。
操作系统需要解决:
两个问题:
- 如何组织磁盘?
- 如何安排磁盘访问顺序?
二、磁盘的物理结构
我们以传统机械硬盘为例。
磁盘:
由:
多个盘片组成。
每个盘片:
有两个面。
结构:
磁盘 盘片 ↓ 磁道 ↓ 扇区三、磁道(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控制器
设备控制器:
负责:
- 接收CPU命令
- 控制设备工作
- 保存数据
- 向CPU报告状态
五、设备控制器中的寄存器
控制器:
里面:
有一些特殊存储区域。
叫:
寄存器。
常见:
三个:
1. 数据寄存器
保存:
要传输的数据。
2. 状态寄存器
表示:
设备状态。
例如:
准备好了 忙 错误3. 控制寄存器
CPU:
发送命令。
例如:
开始读取。
六、I/O控制方式(重点)
CPU和设备:
如何通信?
有几种方式。
第一种:程序直接控制方式
也叫:
轮询方式。
思想:
CPU:
不断问:
设备:
“好了没?”
例如:
CPU:
键盘? 好了没? 键盘? 好了没?优点:
简单。
缺点:
浪费CPU。
因为:
CPU:
一直等待。
第二种:中断驱动方式(★★★★★)
思想:
设备完成后主动通知CPU。
过程:
例如:
键盘输入:
- 用户按键
↓
- 键盘控制器收到
↓
- 发送中断信号
↓
- CPU暂停当前任务
↓
- 处理中断
结构:
设备完成 ↓ 发送中断 ↓ 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 安全
保护:
防内部错误。
安全:
防攻击。
