操作系统课程(一)—— 绪论与操作系统概述
北京大学软件与微电子学院 陈向群 教授 2008-2009 第一学期 课程教材:《操作系统教程》陈向群、杨芙清 著,北京大学出版社
课程概览
教学思路(三个层面)
- 操作系统使用 — 如何操作
- 操作系统工作原理 — 概念、技术
- 实例与设计 — Windows / Linux / Solaris / μC/OS-Ⅱ,以及设计一个操作系统
课程目的
不是教”如何使用操作系统”,而是理解操作系统如何工作:
- 操作系统的内部工作方式
- 实现涉及的数据结构和算法
- 设计、开发过程中的问题、解决方案和折中权衡(Trade Off)
- 操作系统中的典型技术及应用
参考书
中文教材:
- 陈向群、杨芙清《操作系统教程》,北京大学出版社
- 汤子瀛等《计算机操作系统》,西安电子科技大学出版社
- 张尧学、史美林《计算机操作系统教程》,清华大学出版社
- 孙钟秀主编《操作系统教程》,高等教育出版社
英文经典:
- Andrew S. Tanenbaum《Modern Operating System》
- William Stallings《Operating Systems》
- Abraham Silberschatz《Operating System Concept》
- Abraham Silberschatz《Applied Operating System Concept》
一、操作系统的基本概念
操作系统的定义
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合——
- 它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源
- 合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能
- 使得用户能够灵活、方便、有效的使用计算机,使整个计算机系统能高效地运行
关键词解读
| 关键词 | 含义 |
|---|---|
| 有效 | 系统效率,资源利用率(CPU是否充足,内存/设备是否忙碌) |
| 合理 | 公平性——不公平会产生”饥饿”;不合理会产生”死锁” |
| 方便 | 用户角度:易用;设计者角度:是否容易设计、维护 |
操作系统的地位
“Operating Systems are to Computer Science what mathematics is to engineering.” — Dave Probert, Windows Kernel Group, Microsoft
操作系统位于应用软件和硬件之间,是计算机科学的基础核心课程。
二、操作系统的四大特征
1. 并发(Concurrency)
处理多个同时性活动的能力:
- 宏观上:多个程序同时在执行
- 微观上(单CPU):任何时刻只有一个程序在执行,即微观上程序分时地交替执行
并发与并行的区别:
- 并行:同一时刻多个指令同时执行(多CPU)
- 并发:同一时间段内多个任务都在执行,但微观上交替
2. 共享(Sharing)
操作系统与多个用户程序共同使用系统中的资源:
- 资源在一个时间段内交替被多个进程所用
- 操作系统要对资源进行合理分配和调度
3. 虚拟(Virtual)
一个物理实体映射为若干个对应的逻辑实体——分时或分空间:
- CPU 虚拟化 → 每个用户(进程)的”虚处理机”
- 存储虚拟化 → 每个进程都有自己的虚拟地址空间
- 设备虚拟化 → 每个用户感觉独占设备
虚拟化是操作系统管理系统资源的重要手段,可提高资源利用率。
4. 随机性 / 不确定性
- 操作系统必须随时对以不可预测次序发生的事件进行响应
- 进程运行速度不可预知:多个进程并发执行,“走走停停”
- 难以重现系统在某个时刻的状态(调试困难)
- 由共享和并发引起——程序运行前无法预知资源使用情况
三、操作系统的五大功能
1. 处理机管理(进程和线程管理)
目标: 完成处理机资源的分配调度
- 进程控制:创建、撤销、挂起、改变优先级等(主动改变进程状态)
- 进程同步:协调并发进程之间的推进步骤
- 进程通信:进程之间传递信息
- 进程调度:作业/进程/线程的调度算法
2. 存储管理
目标: 提高利用率,方便用户使用,提供足够存储空间,方便进程并发
- 存储分配与回收
- 存储保护:保证进程间互不干扰、相互保密
- 地址映射:逻辑地址 → 物理地址
- 内存扩充:虚拟存储(自动覆盖/交换技术)
3. 设备管理
目标: 方便设备使用,提高 CPU 与 I/O 设备利用率
- 设备操作:设备驱动程序完成
- 设备独立性:提供统一的 I/O 设备接口,使应用程序独立于物理设备
- 设备分配与回收
- 缓冲管理:解决 CPU 与 I/O 速度不匹配问题
4. 文件管理(文件系统)
目标: 解决软件资源的存储、共享、保密和保护
- 文件存储空间管理:空间利用率和读写性能
- 目录管理:信息检索(文件名 → 文件位置)
- 文件操作管理:读/写/创建/删除
- 文件存取控制:共享、保护、保密
5. 用户接口与作业管理
目标: 提供友好的用户访问接口
- 系统命令:命令行、菜单式、GUI(联机);命令脚本(脱机)
- 系统调用:编程接口,供用户程序使用
- 作业管理:作业调度、作业控制
四、研究操作系统的五种观点
1. 软件的观点
- 外在特性:软件是种语言,是界面(使用方式:命令、系统调用等)
- 内在特性:软件的结构——由几部分组成、每部分功能、部分之间的关系
2. 资源管理的观点(自底向上)
操作系统是资源管理者:
- 硬件资源:CPU、内存、I/O 设备、外存、时钟、网络接口
- 软件资源:磁盘上的文件、信息
管理内容:
- 记录资源使用状况(哪些空闲、被谁使用、用多久)
- 合理分配资源
- 静态分配:程序运行前分配,效率不高
- 动态分配:运行中按需分配,更灵活
3. 进程的观点
从运行角度动态观察:
- 操作系统由一些可同时独立运行的进程和一个对这些进程进行协调的核心组成
- 进程 = 程序的一次执行过程 + 资源分配的基本单位
- 进程是动态的、有生命周期的
4. 虚机器观点
从内部结构来看:
- 操作系统分成若干层
- 每一层完成特定功能,构成一个虚机器,对上一层提供支持
- 通过逐层功能扩充,最终完成整个操作系统虚机器
- 操作系统虚机器向用户提供各种服务
5. 服务提供者的观点
从用户角度(操作系统外部)来看:
- 操作系统为用户提供一组功能强大的、方便易用的命令或系统调用
- 服务包括:程序创建和执行、I/O 设备存取、文件存取、系统存取、错误检测和回应、统计
6. 其他视角
- 仲裁者(协调者):使多个应用程序/用户高效、公平地一起工作
- 幻觉制造者(illusionist):提供硬件的高层界面,取消硬件限制(无限内存、无限 CPU)
- 历史教员:学习过去,预测未来(技术的重用与回归)
五、操作系统的发展历程
五个阶段
| 阶段 | 时间 | 硬件成本 | 核心目标 | 代表技术 |
|---|---|---|---|---|
| 第1阶段 | 1948-1970 | 硬件昂贵,人工便宜 | 有效利用硬件资源 | 批处理、多道程序 |
| 第2阶段 | 1970-1985 | 硬件便宜,人工昂贵 | 交互性、用户体验 | 分时系统 |
| 第3阶段 | 1981- | 硬件非常便宜 | 个人计算 | PC、单机操作系统 |
| 第4阶段 | 1981- | — | 资源共享、协作 | 网络、分布式系统 |
| 第5阶段 | 1995- | — | 移动性 | 移动计算、嵌入式 |
重要历史节点
FMS 与 IBMSYS —— 现代操作系统雏形
- FMS(FORTRAN Monitor System):FORTRAN 监控系统
- IBMSYS:IBM 为 7094 机配备的操作系统
- 由监控程序、特权指令、存储保护等构成
OS/360 —— 庞大的软件怪兽
- 1964 年 IBM System/360 推出
- 数千名程序员,数百万行汇编代码
- 系统自身占据大量存储空间和一半 CPU 时间
- 成千上万处错误,不断发行新版本
OS/360 的开发困境是《人月神话》的重要案例来源。
MULTICS —— 雄心勃勃的灾难
- 1965 年 MIT + 贝尔实验室 + 通用电气联合开发
- 目标:支持整个波士顿所有分时用户的”公用计算服务系统”
- PL/1 语言,研制难度远超预期
- 1969 年贝尔实验室退出,通用电气退出
- 最终 MIT 坚持下来,MULTICS 成功但商业上失败
UNIX —— 现代操作系统的代表
- 1969 年,Ken Thompson 和 Dennis Ritchie(贝尔实验室)
- 初衷:在无人使用的 DEC PDP-7 上玩星际探险游戏
- 用 C 语言编写 → 可移植性极强
- 唯一能在笔记本、PC、工作站、巨型机上都运行的操作系统
- 孕育了 Linux、BSD、macOS 等庞大的家族树
Linux —— 互联网时代的奇迹
- 1991 年,Linus Torvalds(芬兰赫尔辛基大学)
- 从一个简单的终端仿真程序起步
- 借助互联网协作开发模式,发展为全球最大的开源项目
中国操作系统发展
- 60年代末-70年代初:杨芙清院士主持,150机操作系统(我国第一台百万次集成电路计算机)
- 1978年:GX73多机实时操作系统(国防科技大学,“远望”-I号航天测量船)
- 后续:中文操作系统、麒麟OS 等
概念的重用与回归
技术变化会使某些思想过时,但另一种技术变化又可能让它们复活:
- 磁盘文件分配(连续分配)→ CD-ROM 文件系统(又回到连续)
- 动态链接(MULTICS首创,消失一段时间)→ 动态链接库(DLL,又回来了)
- 大型机的分时 → 云计算(概念回归)
六、操作系统的分类
1. 批处理操作系统(多道批处理)
工作方式:
- 用户将作业交给系统操作员
- 操作员将许多作业组成一批,输入计算机系统
- 形成自动转接的连续作业流
- 用户不能直接干预(脱机)
核心技术:
- SPOOLing(Simultaneous Peripheral Operation On-Line,假脱机):
- 作业进入磁盘上的输入井
- 按调度策略选择作业调入内存
- 结果输出到磁盘输出井
- 再送到打印机
- 多道程序设计:内存中同时放多个作业,CPU 切换运行
特点:
- 优点:作业流程自动化 → 资源利用率高,吞吐量大
- 缺点:用户交互性差,调试程序困难
2. 分时操作系统
核心机制:时间片(Time Slice)
- 操作系统将 CPU 时间划分成若干片段
- 以时间片为单位,轮流为每个终端用户服务
- 利用人的错觉(反应时间约 200ms),用户感觉”独占”计算机
特点:
- 宏观上:多人同时使用一个 CPU
- 微观上:多人在不同时刻轮流使用 CPU
- 用户直接干预每一步(交互性强)
通用操作系统 = 分时 + 批处理结合
- 原则:分时优先,批处理在后
- “前台”:需频繁交互的作业
- “后台”:时间性要求不强的作业
3. 实时操作系统
在规定的严格时间内完成对外部事件的处理,控制所有实时设备和实时任务协调一致地工作。
分类:
- 硬实时:某个动作绝对必须在规定时刻完成(如工业控制、航空航天)
- 软实时:偶尔错过时限可以接受(如视频播放)
主要功能:
- 实时时钟管理
- 过载保护(缓冲区排队、丢弃任务、动态调整周期)
- 高度可靠性和安全性(容错能力)
4. 个人计算机操作系统
- 单用户多任务
- 追求目标:界面友好、使用方便、丰富的应用软件
- 代表:Windows、macOS、桌面 Linux
5. 网络操作系统
- 基于计算机网络,按网络体系结构协议标准开发
- 功能:网络通信、资源管理、网络服务、安全管理
- 目标:相互通信、资源共享
- 各计算机有各自独立的操作系统,网络功能是”附加”的
6. 分布式操作系统
- 所有系统任务可动态地分配到各个计算机上执行
- 特征: 统一性(一个统一的 OS)、资源进一步共享、透明性(分布对用户不可见)、自治性
- 区别于网络 OS:分布式 OS 是单一的、统一的操作系统
7. 嵌入式操作系统
- 运行在嵌入式系统环境中,对系统资源统一调度
- 特点: 小型化、实时性、可靠性高、可裁剪
- 应用:智能传感器(TinyOS)、手机、汽车电子、工业控制
Tanenbaum 的分类法
- 主机操作系统(OS/390 等)
- 服务器操作系统(UNIX、Windows Server、Linux)
- 多处理机操作系统
- 个人计算机操作系统
- 实时操作系统
- 嵌入式操作系统
- 智能卡操作系统
七、多处理机操作系统
为什么需要多处理机?
提高计算机系统性能和可靠性的两条途径:
- 提高各个组成部分的速度
- 增大处理的并行程度
特点
- 增加系统吞吐量
- N 个处理器加速比达不到 N 倍(额外调度开销 + 算法并行化限制)
- 提高系统可靠性:故障时系统降级运行
类型
| 类型 | 耦合方式 | 特征 |
|---|---|---|
| 紧密耦合 | 通过快速总线/开关阵列相连 | 共享内存,一个统一 OS 核心管理 |
| 松散耦合 | 各自带存储器、I/O、OS | 通过消息传递通信,分布式系统 |
多处理机的管理模式
-
非对称式(主从模式):
- 主处理器 1 个:运行 OS,管理资源,分配任务
- 从处理器多个:执行应用程序或 I/O 处理
- 特点:不同性质处理器分工明确
-
对称式(SMP):
- 所有处理器地位平等
- 每个都可运行 OS 代码
- 更常见的多处理机模式
重点小结
- 典型的、历史上有重要意义的操作系统:FMS、OS/360、MULTICS、UNIX、Linux
- 重要的操作系统技术:多道程序、SPOOLing、分时、虚拟存储
- 操作系统分类:批处理 / 分时 / 实时 / 个人机 / 网络 / 分布式 / 嵌入式 / 多处理机 / 智能卡
- 理解操作系统的不同角度:软件观点 / 资源管理 / 进程观点 / 虚机器 / 服务提供者
- 操作系统的主要特征:并发、共享、虚拟、随机性
关联笔记
- 《深入理解计算机系统》-Computer-Systems-A-Programmer-s-Perspective-第3版-Bryant-O-Hallaron — CSAPP,从程序员视角看计算机系统
- 《Linux内核设计与实现》-第三版-Robert-Love — Linux 内核具体实现
- 《LINUX内核源代码情景分析》-毛德操胡希明 — Linux 内核源码深度剖析
- 《结构化计算机组成》-Structured-Computer-Organization-第6版-Tanenbaum — 计算机组成六层抽象模型,操作系统是其中一层
- 人月神话 — 软件工程经典,OS/360 是重要案例