跳到正文

1.1.1+1.1.3 操作系统的概念、功能与接口

44 分钟

操作系统的概念、功能与接口

1. 从计算机层次给出定义

一台只有 CPU、内存、磁盘和外设的机器称为裸机。应用程序若直接控制裸机,就必须自己处理设备时序、内存地址、异常恢复和资源冲突。操作系统位于硬件与应用之间,是一组管理计算机资源、控制程序执行并向上提供服务的系统软件。

这一定义包含三个不能拆开的角色:

  1. 资源管理者:决定处理机、存储器、文件和设备如何分配、回收与保护。
  2. 服务提供者:把复杂硬件封装成稳定接口,让用户和程序请求服务。
  3. 机器扩展者:把“只会执行机器指令的裸机”扩展成具有文件、进程、虚拟内存等概念的虚拟机器。

“管理资源”不是简单登记数量,而是解决分配、调度、保护、共享和回收。例如两个进程同时申请打印机,操作系统既要决定顺序,又要避免输出交叉,还要在进程异常退出后回收资源。

2. 四类核心资源管理

以一次视频通话为例,沿执行链观察四类管理功能:

用户动作 操作系统工作 所属管理
双击应用 从文件系统找到可执行文件和依赖 文件管理
启动程序 建立地址空间并装入必要页面 存储器管理
程序开始运行 创建进程、进入就绪队列、获得 CPU 处理机管理
打开摄像头和麦克风 检查权限、分配设备、处理 I/O 设备管理

这四类不是四个互不相干的抽屉。一次缺页会同时涉及处理机调度、内存管理和磁盘 I/O;文件读写也会经过缓存、设备驱动和中断。考试把它们分章,是为了分析,不是说实现中没有联系。

3. 操作系统向谁提供什么接口

接口必须先辨认使用者。

  • 命令接口供用户直接使用。联机命令接口是一条请求、一条响应,常见于交互式 shell;脱机命令接口把一批命令写入脚本或作业,随后成批执行。
  • 图形用户接口也供用户直接操作,但用窗口、菜单和控件表达命令。
  • 程序接口供应用程序使用,由一组系统调用构成。程序通过系统调用请求内核服务。

程序员平时常调用库函数,因此必须区分:库函数由语言运行库提供,系统调用由操作系统内核提供。库函数可能完全在用户态完成,例如纯数值计算;也可能在内部发起系统调用,例如打开文件。printf 还可能先把字符写入用户态缓冲区,缓冲区刷新时才调用内核的写服务,所以“调用一次库函数就必然调用一次系统调用”是错误命题。

4. 用一次文件复制串起全章

考虑程序把 a.txt 复制为 b.txt

  1. 程序调用库函数打开源文件;运行库最终请求内核执行文件打开服务。
  2. 内核检查路径和权限,建立进程可使用的文件描述对象。
  3. 读操作若未命中缓存,进程阻塞,设备管理发起磁盘 I/O,处理机管理调度其他进程。
  4. 数据进入内核缓存,再复制到进程地址空间,涉及存储保护。
  5. 写目标文件时,文件系统分配逻辑块并把请求交给设备层。
  6. 关闭文件后,内核减少引用并在适当时机回收对象。

若题目问“操作系统在其中扮演什么角色”,不能只答“管理资源”。应指出具体对象、动作和目标:管理磁盘与内存、调度阻塞进程、保护文件权限,并通过文件系统调用向应用隐藏设备细节。

5. 易错辨析

  • 操作系统不是“用户用来编程的软件”;编译器和 IDE 通常是运行在操作系统上的应用。
  • GUI 不是程序接口;它是用户接口。应用访问内核的程序接口是系统调用。
  • 系统调用不是普通函数的同义词。函数调用通常不改变特权级,系统调用要经过受控入口进入内核。
  • 操作系统不仅管理硬件,也管理进程、文件等软件资源。

课内练习

  1. 用户在 shell 中逐条输入命令属于什么接口?应用执行 open 请求文件服务又属于什么接口?
    答案:前者是联机命令接口,后者是程序接口中的系统调用。
  2. “所有库函数都至少触发一次系统调用”是否正确?
    答案:错误。纯计算函数可完全在用户态完成,带缓冲的 I/O 库函数也不对应固定次数的系统调用。
  3. 视频程序因等待摄像头数据而暂停,至少涉及哪两类管理?
    答案:设备管理负责 I/O,处理机管理把进程阻塞并调度其他进程;缓冲区还会涉及存储器管理。

验收

请脱离定义原句,以“打开一个文件”为例说明操作系统三个角色,并准确画出用户、库函数、系统调用、内核、硬件五层关系。只会背“四个管理”而不能把动作落到对象上,不算掌握。

Practice

本课练习

2

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

1辨认程序接口 2

操作系统直接提供给应用程序、用于请求内核服务的接口是哪个?

登录 后答题可以领积分
2操作系统资源管理 3

启动并进行视频通话时,操作系统通常涉及哪些管理工作?

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领积分