OS Overview
操作系统是什么
操作系统是控制和管理整个计算机系统硬件与软件资源的系统软件。它组织调度计算机工作,分配系统资源,并向用户和应用程序提供接口和运行环境。
从层次上看:
| 位置 | 作用 |
|---|---|
| 向下 | 管理 CPU、内存、磁盘、I/O 设备等硬件资源 |
| 向上 | 向用户和应用程序提供方便易用的接口 |
| 中间 | 把裸机扩展成更易用、更安全、更强的机器 |
操作系统的三个核心定位:
- 系统资源的管理者:管理处理机、存储器、文件和设备。
- 向上层提供服务:提供命令接口、程序接口、图形界面等。
- 最接近硬件的软件层:直接处理时钟、中断、设备驱动、CPU 状态切换等底层机制。
裸机只提供硬件能力。操作系统把硬件能力组织起来,提供进程、文件、虚拟内存、设备抽象等机制,使用户看到的是一台更方便的“扩充机器”。
| 资源 | 管理内容 |
|---|---|
| 处理机 | 进程调度、CPU 分配、上下文切换 |
| 存储器 | 内存分配、地址转换、虚拟存储 |
| 文件 | 文件创建、删除、读写、目录、权限 |
| 设备 | 设备分配、I/O 控制、缓冲、驱动、中断处理 |
这些资源往往被多个进程共同使用,因此需要操作系统统一管理。否则,多个应用程序直接操作同一个硬件资源,容易导致混乱、数据破坏或安全问题。
用户接口
操作系统向上提供的接口可以分为三类。
| 接口 | 使用者 | 例子 | 特点 |
|---|---|---|---|
| 联机命令接口 | 普通用户 | shell、cmd 命令 | 用户输入一条命令,系统执行一条命令 |
| 脱机命令接口 | 普通用户或管理员 | 批处理脚本 | 用户提交一组命令,系统按批执行 |
| 程序接口 | 程序员和应用程序 | 系统调用 | 程序通过代码请求内核服务 |
图形用户界面属于更直观的用户接口。它把许多命令操作包装成窗口、图标、菜单和按钮,但底层仍会转化为操作系统服务。
程序接口由一组系统调用组成。系统调用和 CPU 状态、中断/异常机制关系密切,见 系统调用。
四个特征
并发
并发是指两个或多个事件在同一时间间隔内发生。宏观上看它们同时进行,微观上可能交替执行。
并行是指两个或多个事件在同一时刻同时发生。
| 概念 | 关键点 |
|---|---|
| 并发 | 同一时间段内都在推进,单核 CPU 上也能出现 |
| 并行 | 同一时刻真正同时执行,通常需要多核或多个处理单元 |
单核 CPU 同一时刻只能执行一个程序,但可以通过快速切换让多个程序并发运行。多核 CPU 可以让多个程序并行执行,但只要运行程序数超过核心数,仍然需要并发调度。
操作系统与程序并发几乎是一起出现的。没有并发,现代操作系统的大部分资源管理问题都不会出现。
共享
共享是指系统中的资源可供多个并发执行的进程共同使用。
共享方式有两类:
| 方式 | 含义 | 例子 |
|---|---|---|
| 互斥共享 | 一个时间段内只允许一个进程访问 | 摄像头、普通打印机 |
| 同时共享 | 宏观上多个进程可同时访问 | 多个进程交替读写磁盘 |
并发和共享互为存在条件。没有并发,系统中只有一个程序运行,共享失去意义;没有共享,多个进程无法共同使用资源,并发也难以展开。
虚拟
虚拟是把一个物理实体变成若干逻辑上的对应物。物理实体是真实存在的,逻辑对应物是用户感受到的。
| 虚拟对象 | 技术 | 用户感受 |
|---|---|---|
| 内存 | 虚拟存储器 | 每个进程仿佛拥有独立、连续、较大的地址空间 |
| CPU | 虚拟处理器 | 多个进程仿佛都在同时运行 |
| 设备 | SPOOLing 等 | 独占设备可表现为逻辑共享设备 |
虚拟离不开并发。若系统中始终只运行一个程序,就没有必要把一个 CPU 虚拟成多个处理器,也没有必要让多个进程共享一个逻辑上的大地址空间。
异步
异步是指在多道程序环境下,进程并不是从头到尾一贯到底地运行,而是因为等待资源、I/O、调度等原因走走停停,以不可预知的速度向前推进。
异步性来自并发和资源限制。多个进程争用有限资源时,谁先获得 CPU、谁先完成 I/O、谁先被唤醒,都可能随系统状态变化。
特征之间的关系
| 特征 | 关系 |
|---|---|
| 并发 | 最基本特征之一,带来调度、同步、互斥等问题 |
| 共享 | 最基本特征之一,要求操作系统统一管理资源 |
| 虚拟 | 以并发和共享为基础,把物理资源抽象成逻辑资源 |
| 异步 | 并发程序争用资源后产生的执行不确定性 |
并发和共享是操作系统最基本的两个特征。没有并发和共享,就谈不上虚拟和异步。