操作系统理论作业 1:操作系统概念与并发执行
1. 多道程序设计与分时系统
什么是多道程序设计?多道程序设计与分时系统的区别是什么?
查看我当时提交的答案
多道程序系统允许内存中同时驻留多个程序,共享 CPU 和计算机的其他资源。若某个程序因等待 I/O 操作而暂停,则立即切换到另一个就绪程序运行,提高资源利用率。
分时系统把 CPU 运行时间划分成若干极短片段,将这些时间片分配给各个程序,从而实现近似于多个程序同时执行的效果。它可以满足多个用户同时与系统交互的需求,使所有用户都近似于独占系统。
二者的使用目标有很大区别:多道程序设计主要用于提高 CPU 和内存的利用率,尽量让它们始终处于工作状态;分时系统主要用于提供公平的资源访问,让多个用户同时作业。
2. 操作系统为何逐步演化
什么原因推动了操作系统从批处理发展到多道程序,进而发展到分时系统?
查看我当时提交的答案
- 批处理到多道程序:批处理系统的 CPU 利用率低,I/O 会使 CPU 长时间空闲。
- 多道程序到分时系统:多道程序缺乏交互性,无法满足实时操作和多用户同时作业的需求。
3. 陷阱、中断与系统调用
什么是陷阱?陷阱与中断的区别是什么?什么是系统调用?
查看我当时提交的答案
陷阱(trap)是由当前运行程序主动或被动触发的事件,用于通知操作系统处理异常或请求服务。例如,程序显式请求系统调用,或者程序中出现非法操作。
中断(interrupt)由外部硬件设备或定时器异步触发,用于通知操作系统响应外部信号。例如,硬件设备完成 I/O 操作或者定时器到期。
二者的区别如下:
- 触发源不同:陷阱往往来自程序自身,是同步事件;中断来自外部硬件设备,是异步事件。
- 响应方式不同:陷阱必须处理,而中断可以被延迟或屏蔽。
系统调用(system call)是用户程序向操作系统请求服务的接口。它通过触发陷阱进入内核态,完成特权操作,是陷阱的一种应用。
4. 操作系统的可移植性
判断:“可移植的操作系统可以从一个系统架构移植到另一个系统架构而无需修改。”
- 请解释为什么构建完全可移植的操作系统是不可能的。
- 如果需要设计一个高度可移植的操作系统,请描述需要设计的两个层次。
查看我当时提交的答案
不同 CPU 架构使用完全不同的指令集,不同架构的指令集互不兼容。操作系统内核中与 CPU 直接交互的部分必须针对特定指令集实现,无法完全通用。
两个层次为:
- 硬件抽象层:封装底层硬件差异,隔离架构相关代码并定义统一接口,不同架构通过接口进行适配。
- 内核服务层:构建与硬件无关的内核功能,使用统一接口屏蔽底层硬件差异,使其能在不同架构中使用。
5. 相互矛盾的设计指标
在设计操作系统时,一些设计指标是相互矛盾的,例如资源利用率、吞吐量、处理时间和健壮性。请给出一对相互矛盾的设计实例。
查看我当时提交的答案
高吞吐量与响应时间相互矛盾。若要维持高吞吐量,需要让长时间运行的任务占用 CPU,减少上下文切换带来的开销;这会导致短任务等待长任务,增加延迟。若要缩短响应时间,则必须频繁切换任务,从而增加开销、降低吞吐量。
6. 二道程序并发执行
一个计算机系统有输入机一台、打印机两台。现有二道程序同时投入运行,且程序 A 先开始运行,程序 B 后运行。
- 程序 A:计算 50 ms,打印 100 ms,再计算 50 ms,打印 100 ms,结束。
- 程序 B:计算 50 ms,输入 80 ms,再计算 100 ms,结束。
要求:
- 画出二道程序并发执行时的工作情况。
- 说明 CPU 有无空闲等待;若有,在哪段时间内等待,为什么。
- 说明程序 A、B 有无等待现象,以及何时发生。
查看我当时提交的答案
| 时间(ms) | 0–50 | 50–100 | 100–150 | 150–180 | 180–200 | 200–250 | 250–300 |
|---|---|---|---|---|---|---|---|
| 程序 A | 计算 | 打印 | 打印 | 计算 | 计算 | 打印 | 打印 |
| 程序 B | 等待 | 计算 | 输入 | 输入 | 等待 | 计算 | 计算 |
| CPU | A | B | 空闲 | A | A | B | B |
| 输入机 | 空闲 | 空闲 | B | B | 空闲 | 空闲 | 空闲 |
| 打印机 1 | 空闲 | A | A | 空闲 | 空闲 | A | A |
| 打印机 2 | 空闲 | 空闲 | 空闲 | 空闲 | 空闲 | 空闲 | 空闲 |
CPU 在 100–150 ms 空闲,因为此时程序 A 正在打印,程序 B 正在输入,二者都不执行计算。
程序 B 在 0–50 ms 和 180–200 ms 等待,程序 A 没有等待。