原文筆記
本課程筆記操作系統 · 43 篇
review202505 答案讲解 01:基本概念 1-10
1. 操作系统定义、目标、功能和特征
题意:
1、阐述操作系统定义、目标、功能、和特征。
答案讲解:
操作系统是配置在计算机硬件上的第一层系统软件,是用户与计算机硬件之间的接口,也是计算机系统资源的管理者和控制者。
按 Stallings 教材第 2 章的口径,操作系统的主要目标是三项:
- 方便性:让用户更方便地使用计算机。
- 有效性:提高 CPU、内存、外设等资源利用率,提高系统吞吐量。
- 可演化性:系统结构应便于开发、测试和引入新功能,并尽量不影响已有服务。
有些中文教材还会把“开放性”列为目标之一。若按本课程使用的 Stallings 资料,应优先写“方便性、有效性、可演化性”。
操作系统的主要功能:
| 功能 | 说明 |
|---|---|
| 处理机管理 | 进程创建、撤销、调度、同步、通信 |
| 存储器管理 | 内存分配、地址转换、内存保护、虚拟存储 |
| 设备管理 | 设备分配、驱动程序、缓冲、I/O 控制 |
| 文件管理 | 文件创建、删除、读写、目录、权限、磁盘空间管理 |
| 用户接口 | 命令接口、图形界面、系统调用 |
操作系统的基本特征:
- 并发:多个程序在同一时间段内推进。
- 共享:系统资源可被多个用户或多个进程共同使用。
- 虚拟:把物理资源抽象成逻辑资源,例如虚拟内存、虚拟设备。
- 异步:进程推进速度不可预知,运行顺序受调度和事件影响。
一句话记忆:操作系统向上提供方便接口,向下管理硬件资源,中间负责让多个程序安全、高效地并发运行。
2. 并发与并行
题意:
2、简述并发与并行之间的关系。
答案讲解:
并发是指多个任务在同一时间段内都在推进;并行是指多个任务在同一时刻真正同时执行。
二者关系:
- 并发强调“时间段”,并行强调“时间点”。
- 单核 CPU 可以通过时间片轮转实现并发,但不能真正并行执行多个 CPU 指令流。
- 多核或多处理机系统可以实现真正并行。
- 并行一定属于并发的表现形式,但并发不一定是并行。
例子:单核 CPU 上 A、B 两个进程轮流运行,用户感觉它们同时运行,这是并发;双核 CPU 上 A、B 分别占用一个核心同时执行,这是并行。
3. 进程和线程区别,线程的优越性
题意:
3、进程和线程区别?线程相比如进程有何优越性?
答案讲解:
进程是程序的一次执行过程,是系统进行资源分配和保护的基本单位。线程是进程中的一条执行流,是 CPU 调度和执行的基本单位。
| 比较项 | 进程 | 线程 |
|---|---|---|
| 基本性质 | 资源分配单位 | CPU 调度和执行单位 |
| 地址空间 | 通常拥有独立地址空间 | 同一进程内线程共享地址空间 |
| 资源拥有 | 拥有文件、内存等资源 | 通常不单独拥有系统资源,只拥有少量运行现场 |
| 创建撤销开销 | 较大 | 较小 |
| 上下文切换 | 较慢 | 较快 |
| 通信方式 | 需要管道、消息队列、共享内存等 IPC 机制 | 同进程线程可直接访问共享变量 |
| 稳定性 | 隔离性较强 | 一个线程出错可能影响整个进程 |
线程相对进程的优越性:
- 创建、撤销、切换开销小。
- 同一进程内线程通信方便。
- 可以提高程序响应速度。
- 适合多核并行,提高吞吐量。
记忆方式:进程像“资源容器”,线程像“容器里真正执行的工人”。
4. 进程的组成元素
题意:
4、进程的组成元素;
答案讲解:
按 Stallings 第 3 章,进程的程序、数据、栈和属性合起来称为进程映像。典型进程映像包含:
- 用户程序:将要执行的程序代码。
- 用户数据:用户空间中可修改的数据,如程序数据、用户栈、可修改程序区等。
- 系统栈:用于保存过程调用、系统调用的参数和调用地址等。
- 进程控制块 PCB:操作系统控制该进程所需的数据。
从操作系统实现角度,也常把 CPU 现场、打开文件、内存空间、I/O 状态等作为进程的重要组成信息。
PCB 中常见内容:
| 类别 | 典型内容 |
|---|---|
| 标识信息 | PID、父进程 ID、用户 ID |
| 状态信息 | 新建、就绪、运行、阻塞、终止 |
| 调度信息 | 优先级、时间片、队列指针 |
| CPU 现场 | 程序计数器、通用寄存器、状态寄存器 |
| 内存管理信息 | 页表、段表、基址、限长 |
| 资源信息 | 打开文件、设备、信号量、I/O 状态 |
PCB 是进程存在的标志。一个程序只有被操作系统创建 PCB、分配资源并纳入调度后,才成为进程。
5. 为什么引入进程概念,进程与程序的差别和关系
题意:
5、在操作系统中为什么要引入进程概念?它与程序的差别和关系是怎样的?
答案讲解:
引入进程的原因:
- 描述程序的并发执行。
- 作为资源分配和保护的基本单位。
- 便于操作系统进行调度、同步、通信和控制。
- 反映多道程序环境中程序之间的制约关系。
程序和进程的区别:
| 比较项 | 程序 | 进程 |
|---|---|---|
| 性质 | 静态 | 动态 |
| 位置 | 通常存放在外存文件中 | 运行时存在于内存和系统数据结构中 |
| 生命周期 | 可长期保存 | 有创建、运行、阻塞、终止等过程 |
| 并发性 | 本身不并发 | 可与其他进程并发 |
| 组成 | 指令和数据 | 程序、数据、PCB、资源和执行现场 |
二者关系:
- 程序是进程运行的基础。
- 进程是程序的一次执行过程。
- 同一个程序可以对应多个进程。
- 一个进程执行过程中也可能调用多个程序模块。
例子:磁盘上的浏览器可执行文件是程序;打开浏览器后,系统中运行的浏览器实例是进程。
6. 信号量的操作
题意:
6、信号量的操作有哪些?
答案讲解:
信号量是用于进程同步和互斥的整型变量,只能通过原子操作访问。主要操作有:
- 初始化:设置信号量初值。
- P 操作,也称 wait、down、申请操作。
- V 操作,也称 signal、up、释放操作。
P 操作:
P(S):
S = S - 1
if S < 0:
阻塞当前进程,并把它放入等待队列
V 操作:
V(S):
S = S + 1
if S <= 0:
唤醒一个等待该信号量的进程
若信号量用于互斥,初值一般为 1;若信号量用于资源计数,初值一般为资源数量。例如 3 台同类设备对应的资源信号量初值可设为 3。
7. 临界区访问原则
题意:
7、试述临界区访问遵循的原则。
答案讲解:
临界区是访问临界资源的代码段。临界资源是一次只允许一个进程访问的资源。
按 Stallings/Solutions-OS8e 和课程习题课件,互斥或临界区访问应满足六条要求:
- 必须强制实施互斥:对同一资源或共享对象的临界区,同一时刻只允许一个进程进入。
- 停在非临界区的进程不能干涉其他进程。
- 需要进入临界区的进程不能被无限期推迟,即不能出现死锁或饥饿。
- 当没有进程在临界区内时,任何请求进入临界区的进程应能立即进入。
- 不能对进程相对执行速度或处理器数量作任何假设。
- 进程在临界区内停留的时间必须有限。
中文教材常把它概括为“空闲让进、忙则等待、有限等待、让权等待”。如果考试问“requirements for mutual exclusion”,优先写上面六条;如果问“四原则”,再写四原则。
8. 死锁及四个必要条件
题意:
8、什么是死锁?产生死锁的四个必要条件是什么?
答案讲解:
按 Stallings 教材,死锁是指一组进程中的每个进程都被阻塞,等待一个只能由该组中另一个被阻塞进程触发的事件;若无外力作用,这些进程将永久阻塞。
产生死锁的四个必要条件:
- 互斥条件:一次只有一个进程可以使用某个资源。
- 占有并等待条件:进程已持有资源,同时还在等待分配其他资源。
- 不可剥夺条件:资源不能从持有它的进程中强行剥夺。
- 循环等待条件:存在一个闭合进程链,链中每个进程至少持有下一个进程所需的一个资源。
例子:
P1 持有 R1,等待 R2
P2 持有 R2,等待 R1
此时 P1、P2 相互等待,可能形成死锁。
处理死锁的思路:
- 预防死锁:破坏四个必要条件之一。
- 避免死锁:分配资源前判断是否会进入不安全状态,例如银行家算法。
- 检测并解除死锁:允许死锁发生,再检测等待环并撤销进程或剥夺资源。
9. 为什么分页技术不便共享,而分段技术可以
题意:
9、为什么分页技术不能实现共享,而分段技术可以?
答案讲解:
更严谨地说,分页技术也可以通过让多个进程的页表项指向同一物理页框来实现共享。但在教材常见语境中,分页“不便于按逻辑意义共享”,分段“天然适合共享”。
原因如下:
- 页是固定大小的物理划分单位,不反映程序的逻辑结构。
- 一个函数、过程、数组或共享库可能跨多个页面,按页共享时管理和保护不方便。
- 段是按程序逻辑单位划分的,例如代码段、数据段、栈段、共享库段。
- 多个进程可让段表项指向同一个共享段,并设置读、写、执行权限。
所以:
| 管理方式 | 共享特点 |
|---|---|
| 分页 | 以固定大小页面为单位,共享粒度机械,不便表达逻辑对象 |
| 分段 | 以逻辑模块为单位,天然适合共享和保护 |
答题时可以写:分页主要面向内存离散分配,分段主要面向程序逻辑结构,因此分段更便于共享和保护。
10. 页式和段式内存管理区别,共享与保护
题意:
10、页式和段式内存管理有什么区别?怎样才能实现共享和保护?
答案讲解:
页式内存管理:
- 逻辑地址空间划分为固定大小的页。
- 主存划分为同样大小的页框。
- 逻辑地址通常为“页号 + 页内偏移”。
- 通过页表把页号映射为页框号。
- 优点是无外部碎片,便于离散分配。
- 缺点是可能产生内部碎片,不体现程序逻辑结构。
段式内存管理:
- 地址空间按逻辑单位划分为长度可变的段。
- 逻辑地址通常为“段号 + 段内偏移”。
- 段表项包含段基址、段长和访问权限。
- 优点是便于共享、保护和动态链接。
- 缺点是可能产生外部碎片,分配和回收较复杂。
对比表:
| 比较项 | 页式 | 段式 |
|---|---|---|
| 划分依据 | 固定大小 | 程序逻辑单位 |
| 大小 | 页大小固定 | 段长可变 |
| 地址结构 | 页号 + 页内偏移 | 段号 + 段内偏移 |
| 碎片 | 有内部碎片,无外部碎片 | 有外部碎片 |
| 共享保护 | 可实现但不直观 | 更自然 |
共享和保护的实现:
- 页式系统中,让多个进程的页表项指向同一页框,并在页表项设置读、写、执行权限位。
- 段式系统中,让多个进程的段表项指向同一共享段,并通过段长检查和权限位实现越界保护、读写保护和执行保护。
现代系统常结合两者思想,采用段页式管理或以分页为主、配合页表权限实现共享和保护。