操作系统是运行于裸机之上的一层软件。主要功能:
- 给用户程序提供一个简单清晰的计算机模型
- 为其他软件提供基础的运行环境
- 创建抽象,实现并管理它所创建的抽象对象
- 隐藏繁杂、不一致、丑陋的硬件接口,为应用程序呈现标准、通用、优雅的抽象
- 管理外部设备
:::info 操作系统与用户的交互程序——用户接口程序:
- 基于文本:shell;
- 基于图形:GUI(图形用户界面,Graphical User Interface)。
实际上,用户接口程序并不是操作系统的一部分,但出于用户态程序的最低层次。 ::: 计算机有 2 种运行模式:
- 内核态(或称管态、核心态)
操作系统运行其中,可执行机器能识别的任何机器指令,对所有硬件具有完全访问权。
- 用户态
其他程序运行其中,只能执行机器指令中的一个子集(禁止使用如影响机器控制、操作 I/O 的指令)。这些程序可根据需要而协助操作系统完成特权功能。
操作系统和普通软件的区别:
- 所处位置:
操作系统处于软件层的内核态,普通软件处于用户态。特别地,嵌入式系统没有内核态。
- 硬件保护性:
操作系统的程序由硬件保护,普通软件可被用户修改或重写。特别地,解释系统(如基于 Java 的操作系统)采用解释方式区分组件。
- 代码量:
与普通软件相比,操作系统更大型、复杂和长寿。因为复杂而难以编写,因为长寿而会在一个相当长的时间跨度内演化。
操作系统的作用
扩展机器
SATA 硬盘需要配合硬盘驱动软件与之交互,为了不考虑硬件细节,驱动软件通过抽象,提供了控制其输入/输出、读写磁盘块的接口。
但对于普通软件,这依然太底层。于是有了进一步抽象——作为有效信息片段的文件。于是才能轻松创建并读写文件。
SATA, Serial Advanced Technology Attachment, 串行高级技术连接。
:::info
抽象是管理复杂性的关键手段。
通过抽象,一个几乎不可能完成的任务可被划分成两个可分别解决的部分: