操作系统概论
OS 的定义
当前对于 OS 还没有一个统一的、适用的定义
- 定义 1:操作系统是一组控制和管理计算机软硬件资源、合理地对各类作业进行调度以及方便用户使用的程序集合
- 定义 2:操作系统是位于硬件层(HAL)之上,所有其它系统软件层之下的一个系统软件,使得管理系统中的各种软件和硬件资源得以充分利用,方便用户使用计算机系统
操作系统的目标和作用
OS 的目标
- 方便性:操作系统使计算机更易于使用。
- 有效性:操作系统允许以更有效的方式使用计算机系统资源。
- 提高系统资源利用率
- 提高系统的吞吐量
- 可扩展性:在操作系统中,允许有效地开发,测试和引进新的系统功能。
- 开放性:实现应用程序的可移植性和互操作性,要求具有统一的开放的环境。
OS 的作用
操作系统应隐藏复杂的、困难的、丑陋的、特殊的硬件细节,呈现良好、清晰、优雅、一致的抽象

在相互竞争的程序之间有序地控制对处理器、存储器以及其他 I/O 接口设备的分配
- 处理器管理,用于分配和控制处理器;
- 存储器管理,主要负责内存的分配与回收;
- I/O 设备管理,负责 I/O 设备的分配与操纵;
- 文件管理,负责文件的存取、共享和保护。
- 对于多用户系统,需要管理共享资源,避免发生冲突。
操作系统发展历程
操作系统的发展历程与计算机的发展历程密切相关,随着计算机硬件技术的进步,操作系统也在不断演进。详细的历史可阅读知乎文章操作系统的发展历史
延伸概念:单道/多道批处理系统,并发&并行,人机交互
操作系统的基本特征
现代 OS 的四个基本特征:
- 并发性(最重要的特征)
- 共享性
- 虚拟性
- 异步性
并发是最重要的特征,其它特征都以并发为前提
并发 Concurrency
Key:
- 区分并发 Concurrency&并行 Parallelism
- 区分进程 Process&线程 Thread&程序 Program
共享 Sharing
共享:是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 互斥共享(Exclusive Sharing):在这种方式下,一次只能有一个进程使用资源。当一个进程正在使用资源时,其他进程必须等待。这种方式通常用于那些不能同时被多个进程共享的资源,例如打印机、磁带驱动器等。
- 分时共享(Time-Sharing):在这种方式下,资源在多个进程之间进行切换,每个进程在一段时间内独占资源。通过快速切换,可以使得用户感觉到他们似乎在同时使用资源。这种方式通常用于那些可以被多个进程共享的资源,例如 CPU、内存等。
- 同时共享(Concurrent Sharing):在这种方式下,多个进程可以同时访问资源,而无需等待。这种方式通常用于那些可以被多个进程同时读取的资源,例如文件、数据库等。
- 虚拟共享(Virtual Sharing):在这种方式下,每个进程都有一个资源的虚拟副本,使得每个进程都感觉到他们独占了资源。这种方式通常用于那些可以被复制的资源,例如虚拟内存、虚拟机等。
虚拟性 Virtualization
虚拟:是指通过某种技术把一个物理实体变为(映射为)若干个逻辑上的对应物。
时分复用技术
虚拟处理机:分时实现
虚拟设备:SPOOLING 技术
空分复用技术
虚拟磁盘技术:逻辑分区
虚拟存储器:虚拟存储管理实现
异步性 Asynchrony
异步 多道程序环境下程序(进程)以异步的方式执行,每道程序在何时执行、各自执行的顺序、完成时间都是不确定的,也是不可预知的。
操作系统的主要功能
操作系统的主要任务是为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊地、高效地运行,并能最大程度地提高系统中各种资源的利用率和方便用户的使用。
操作系统应具有五方面的功能:
- 处理机管理(CPU)
- 存储器管理
- 设备管理
- 文件管理
- 方便用户使用的用户接口。
处理机管理功能
按照一定的算法把处理机分配给进程(线程),并对其进行有效的管理和控制
- 进程控制
主要功能:为作业创建进程、撤消(终止)已结束的进程,以及控制进程在运行过程中的状态转换。 - 进程同步和互斥
主要任务是为多个进程(含线程)的运行进行协调。
进程互斥方式:这是指诸进程在对临界资源进行访问时,应采用互斥方式。
进程同步方式:指在相互合作去完成共同任务的诸进程间,由同步机构对它们的执行次序加以协调。(信号量机制) - 进程通信
- 进程调度
存储器管理功能
为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及能从逻辑上扩充内存。
内存分配
内存分配的两种方式 :- 静态分配方式:每个作业的内存空间是在作业装入时确定。运行时不可再申请新的内存空间,也不允许作业在内存中“移动”。
- 动态分配方式:每个作业的内存空间是在作业装入时确定。但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”。
内存分配的主要任务是:
- 为每道程序分配内存空间,使它们“各得其所”。
- 提高存储器的利用率,尽量减少不可用的内存空间(碎片)。
- 允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
内存保护
确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰。
绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。地址映射
为保证程序能正确运行,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能应在硬件的支持下完成内存扩充
借助于虚拟存储技术,从逻辑上扩充内存容量
设备管理功能
完成用户进程提出的 I/O 请求;为用户进程分配其所需的 I/O 设备;提高 CPU 和 I/O 设备的利用率;提高 I/O 速度;方便用户使用 I/O 设备。
- 缓冲管理:有效地缓和 CPU 和 I/O 设备速度不匹配的矛盾 ,提高 CPU 的利用率。
- 设备分配:根据 I/O 请求,分配其所需的设备。
- 设备处理:设备处理程序又称为设备驱动程序。
文件管理功能
主要任务:对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。
- 文件存储空间的管理
- 目录管理
- 文件的读/写管理和保护
操作系统与用户之间的接口
用户接口,由 OS 实现的所有用户命令所构成的集合常被人们称为 OS 的 Interface(用户接口);有时也称为命令接口。该接口又进一步分为联机用户接口、脱机用户接口和图形用户接口三种。
程序接口,由 OS 实现的所有系统调用所构成的集合被人们称为程序接口或应用编程接口(Application Programming Interface,API)。程序接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。
操作系统的结构设计
操作系统是一个大型系统软件,其结构已经历了四代的变革:
- 第一代的 OS 是无结构的
- 第二代 OS 采用了模块式结构
- 第三代是层次式结构
- 现代 OS 结构是微内核结构
模块化结构(模块-接口法)
使用分块结构的系统包含若干 module;其中,每个模块实现一组基本概念以及与其相关的基本属性。
块与块之间的相互关系
- 所有各块的实现均可以任意引用其它各块所提供的概念及属性。

优点
提高了 OS 设计的正确性、可理解性和可维护性。
增强了 OS 的可适应性。
加速了 OS 的开发过程。
缺点
对模块的划分及对接口的规定要精确描述很困难。
从功能观点来划分模块时,未能将共享资源和独占资源加以区别。
层次结构
使用分层系统结构包含若干 layer(层);其中,每一层实现一组基本概念以及与其相关的基本属性。
层与层之间的相互关系
- 所有各层的实现不依赖其以上各层所提供的概念及其属性,只依赖其直接下层所提供的概念及属性;
- 每一层均对其上各层隐藏其下各层的存在。
层次的设置时应考虑的因素
- 程序嵌套 通常 OS 的每个功能的实现,并非是只用一个程序便能完成的,而是要经由若干个软件层才有可能完成,因此实现 OS 时,应考虑每个功能可能形成的程序嵌套。
- 运行频率 将那些经常活跃的模块放在最接近硬件的层
- 公用模块 把供多种资源管理程序调用的公用模块,设置在最低层,以便调用。
- 用户接口 命令接口、程序接口以及图形用户接口。这些接口应设置在 OS 的最高层,直接提供给用户使用。

微内核技术
所谓微内核技术,是指精心设计的、能实现现代 OS 核心功能的小型内核,它与一般的 OS(程序)不同, 它更小更精炼,它不仅运行在核心态,而且开机后常驻内存, 它不会因内存紧张而被换出内存。
当前比较流行的、能支持多处理机运行的 OS 几乎全部都采用了微内核结构,如 Mach OS,windows 2000
微内核所提供的功能,通常都是一些最基本的功能,如进程管理、低级存储器管理、中断和陷入处理、进程间通信、低级 I/O 功能
微内核特点
- 足够小的内核。
- 基于客户/服务器模式
- 应用“机制与策略分离”原理
- 采用面向对象技术