1.1.1+1.1.3 操作系统的概念、功能与接口
约 44 分钟
操作系统的概念、功能与接口
1. 从计算机层次给出定义
一台只有 CPU、内存、磁盘和外设的机器称为裸机。应用程序若直接控制裸机,就必须自己处理设备时序、内存地址、异常恢复和资源冲突。操作系统位于硬件与应用之间,是一组管理计算机资源、控制程序执行并向上提供服务的系统软件。
这一定义包含三个不能拆开的角色:
- 资源管理者:决定处理机、存储器、文件和设备如何分配、回收与保护。
- 服务提供者:把复杂硬件封装成稳定接口,让用户和程序请求服务。
- 机器扩展者:把“只会执行机器指令的裸机”扩展成具有文件、进程、虚拟内存等概念的虚拟机器。
“管理资源”不是简单登记数量,而是解决分配、调度、保护、共享和回收。例如两个进程同时申请打印机,操作系统既要决定顺序,又要避免输出交叉,还要在进程异常退出后回收资源。
2. 四类核心资源管理
以一次视频通话为例,沿执行链观察四类管理功能:
| 用户动作 | 操作系统工作 | 所属管理 |
|---|---|---|
| 双击应用 | 从文件系统找到可执行文件和依赖 | 文件管理 |
| 启动程序 | 建立地址空间并装入必要页面 | 存储器管理 |
| 程序开始运行 | 创建进程、进入就绪队列、获得 CPU | 处理机管理 |
| 打开摄像头和麦克风 | 检查权限、分配设备、处理 I/O | 设备管理 |
这四类不是四个互不相干的抽屉。一次缺页会同时涉及处理机调度、内存管理和磁盘 I/O;文件读写也会经过缓存、设备驱动和中断。考试把它们分章,是为了分析,不是说实现中没有联系。
3. 操作系统向谁提供什么接口
接口必须先辨认使用者。
- 命令接口供用户直接使用。联机命令接口是一条请求、一条响应,常见于交互式 shell;脱机命令接口把一批命令写入脚本或作业,随后成批执行。
- 图形用户接口也供用户直接操作,但用窗口、菜单和控件表达命令。
- 程序接口供应用程序使用,由一组系统调用构成。程序通过系统调用请求内核服务。
程序员平时常调用库函数,因此必须区分:库函数由语言运行库提供,系统调用由操作系统内核提供。库函数可能完全在用户态完成,例如纯数值计算;也可能在内部发起系统调用,例如打开文件。printf 还可能先把字符写入用户态缓冲区,缓冲区刷新时才调用内核的写服务,所以“调用一次库函数就必然调用一次系统调用”是错误命题。
4. 用一次文件复制串起全章
考虑程序把 a.txt 复制为 b.txt:
- 程序调用库函数打开源文件;运行库最终请求内核执行文件打开服务。
- 内核检查路径和权限,建立进程可使用的文件描述对象。
- 读操作若未命中缓存,进程阻塞,设备管理发起磁盘 I/O,处理机管理调度其他进程。
- 数据进入内核缓存,再复制到进程地址空间,涉及存储保护。
- 写目标文件时,文件系统分配逻辑块并把请求交给设备层。
- 关闭文件后,内核减少引用并在适当时机回收对象。
若题目问“操作系统在其中扮演什么角色”,不能只答“管理资源”。应指出具体对象、动作和目标:管理磁盘与内存、调度阻塞进程、保护文件权限,并通过文件系统调用向应用隐藏设备细节。
5. 易错辨析
- 操作系统不是“用户用来编程的软件”;编译器和 IDE 通常是运行在操作系统上的应用。
- GUI 不是程序接口;它是用户接口。应用访问内核的程序接口是系统调用。
- 系统调用不是普通函数的同义词。函数调用通常不改变特权级,系统调用要经过受控入口进入内核。
- 操作系统不仅管理硬件,也管理进程、文件等软件资源。
课内练习
- 用户在 shell 中逐条输入命令属于什么接口?应用执行
open请求文件服务又属于什么接口?
答案:前者是联机命令接口,后者是程序接口中的系统调用。 - “所有库函数都至少触发一次系统调用”是否正确?
答案:错误。纯计算函数可完全在用户态完成,带缓冲的 I/O 库函数也不对应固定次数的系统调用。 - 视频程序因等待摄像头数据而暂停,至少涉及哪两类管理?
答案:设备管理负责 I/O,处理机管理把进程阻塞并调度其他进程;缓冲区还会涉及存储器管理。
验收
请脱离定义原句,以“打开一个文件”为例说明操作系统三个角色,并准确画出用户、库函数、系统调用、内核、硬件五层关系。只会背“四个管理”而不能把动作落到对象上,不算掌握。
Practice
本课练习
先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。