操作系统理论:引论
这是北航操作系统课程第一、二周内容:引论部分的总结。由于老师的ppt涵盖的知识点稀疏、知识面不够广,因此我在记笔记的时候参考了王道考研的教材。这章的主要作用是对本学期操作系统课程的一个综述,让自己清楚在接下来一学期内会学一些什么。如果你也想了解操作系统,可以来看看。
什么是操作系统
非严格的定义
操作系统是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务:
- 提供一个计算机用户与计算机硬件系统之间的接口,是计算机系统更容易使用。
- 有效地控制和管理计算机系统中的各种硬件和软件资源,使之得到更有效的利用。
- 合理地组织计算机系统的工作流程,以改善系统性能(如响应时间、系统吞吐量)。
操作系统层次
自顶向下看操作系统
如何管理纷繁复杂的硬件资源?
- 屏蔽复杂性:抽象
- 创建抽象
- 实现和管理抽象
- 一个例子:文件系统
自底向上看操作系统
如何向上层应用提供服务?
- 支持多个用户、多个程序
- 资源竞争 -资源的复用(共享)
- 时间维度
- 空间维度
操作系统的设计目标
- 更多的人能方便地使用计算机(方便性)
- 计算机系统的使用效率尽可能地高(有效性)
操作系统的作用
- 用户与计算机硬件系统之间的接口(API/GUI)
- 系统资源的管理者(处理器、存储器、I/O设备等)
- 实现对计算机资源的抽象(OS是扩充机/虚拟机)
操作系统简史
OS的史前阶段
机械计算时代
- Pascal:1642年 法国数学家 十进制加法器
- 二进制代数学:1848年 George Boole
- Zuse:1941年 德国工程师 完成继电器式通用计算机Z-3
现代计算机:两个先驱人物
- 理论:Alan Turing 1936年1提出图灵机
- 系统:冯诺依曼 1945年7月 现代计算机结构思想的诞生
电子管(真空管)和穿孔卡片
- 1946年2月 美国宾夕法尼亚大学莫尔学院 第一台数字计算机ENIAC
- 1949年 剑桥大学 第一台程序存储式现代计算机EDSAC
批处理
把用户提交的作业成批送入计算机,由作业调度程序自动选择作业运行,目的是:
- 缩短作业之间的交接时间
- 减少处理机的空闲等待,提高系统效率
晶体管&监控系统
- IBM的1401(卫星机)和7094(主机)
- FORTRAN语言的出现
- 操作系统的代表为FMS(the Fortran Monitor System),批处理系统
批处理系统
加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(包括程序、数据和命令)。批处理系统的特点:
- 无需人工参与、节约人员排队时间
- 程序和数据保存在卡片上,自动化作业初始化过程
- 同一时刻只有一个软件(作业)执行
- 软件运行时,可以以独占的方式使用全部硬件资源
- 不支持多用户、多程序同时运行
他可以分为两个阶段:
- 联机批处理系统 作业的输入/输出由CPU来处理
- 优点:实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,更高效
- 缺点:在作业输入、输出的时候。主机的高速CPU仍出去空闲状态,”忙等“
- 脱机批处理系统 输入/输出脱离了主机控制
- 添加的卫星机功能
- 从输入机上读取用户作业并放在输入磁带
- 从输出磁带上读取执行结果并传给输出机
- 优点:主机不直接和慢速输入/输出打交,而是与速度较快的磁带机发生关系,可以发挥主句的高速计算能力
- 缺点:每次主机内存仅存放一道作业,当它运行期间发出I/O请求后,高速CPU等待低速I/O完成,致使CPU
- 添加的卫星机功能
分时
集成电路&多道程序设计
多道程序设计技术:允许多个程序同时进入内存并运。即同时把多个程序放入内存中(如果放得下的话),允许它们交替在CPU中运行,它们共享系统中的软件、硬件资源。当一道程序因为I/O请求而停止运行,CPU就立即转去运行另一道程序。这种技术使得CPU得到充分利用,改善了I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量,进而提高了整个系统的效率。
多道程序系统的特点:
- 多道:计算机内存中同时存放几道相互独立的程序;
- 宏观上并行:同时进入系统的几道程序都处于运行过程中,它们先后开展了各自的运行,但都没有运行完毕;
- 微观上串行:实际上,各道程序轮流地用CPU,并交替运行
多道程序系统需要解决的问题:
- 在一个连续的内存空间,同时驻留多道程序
- 处理机的争夺
- I/O设备的分配
- 有效的组织不同程序的运行
- 系统对各种存储介质的管理
多道批处理系统的优缺点:
- 优点:系统吞吐量大,资源利用率高
- 缺点:平均周转时间常,不能提供交互能力
分时系统
分时:多个用户分享使用同一台计算机,多个程序分时共享硬件和软件资源。
分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理及分配给各联机作业使用,达到多个程序“同时”运行的效果。
- 多个用户分时
- 前台和后台程序(foreground&background)分时
分时的性质:
- 多路性:多路连接;宏观上用户共享,微观上分时;
- 独立性:用户相互不干扰;
- 及时性:响应时间;
- 交互性:人机对话。
典型的分时系统:Multics(1968)、Unix(1970)、IBM VM 360(1966)、IBM VM 370(1972)
现代OS
- PC机&微机操作系统:MSDOS、Windows(95/98/2000/NT)、CP/M、Xeros、Macintosh(MacOS的前身)
- 类UNIX(Linux、Freebsd等)
网络化OS/分布式OS
操作系统的网络化可以分为两部分:
- 网络操作系统:在传统的单机OS上加单独软件层,主要提供联网功能和资源的远程访问,实现多机互联。
- 分布式操作系统:多台机器统一管理形成的那一系统,相比网络操作系统,对用户和应用高度透明。
分布式操作系统的透明性
- 数据透明:用户无需了解文件的存储位置
- 执行透明:用户无需关心程序运行位置
- 保护透明:统一的身份管理和安全机制
客户服务器系统的特点:
- 每个机器可有各自不同的操作系统
- 网络中的机器可以资源共享
- 网络间通信
实时系统(能在规定或预期的时间内响应外部事件或数据输入的计算系统,如嵌入式)特点:
- 及时响应
- 高可靠性和安全性
- 系统的整体性强
- 交互会话活动较弱
- 专用系统
计算机硬件简介
处理器、流水线结构、存储器的层次结构、内存、I/O设备、总线、芯片组……
这里的内容介绍比较浅,并且CO上都有讲,就不在此多记了。
操作系统的基本实现机制
异常(exceptions)陷阱(trap)和中断(interrupts)
- 中断(异步异常、外中断):主要由I/O设备、处理器始终或定时器等硬件产生,可以被启用或禁用,指示来自CPU执行指令外部的事件,通常用于信息的输入与输出;
- 陷阱(同步异常):指来自CPU执行指令内部的事件。用户进程中某一特定指令的执行的结果,在相同情况下是可重现的,,如程序的非法操作吗、地址越界、运算溢出、虚存系统缺页及专门的陷入指令引起的事件。
不同的书本定义方式不同,此处的参考价值不高。
System Call
系统调用被视为同步异常
- CPU执行
int 0x2e
,CPU运行状态切换为系统态; - 当前进程中使用的堆栈,从用户态切换到系统态。堆栈原先的内容(用户态),一级用户空间的堆栈指针,被压入系统空间堆栈;
- 从中断向量表中以
0x2e
为中断向量,开始执行系统空间中的程序; - 程序执行后,通过
iret
(中断返回)指令实现上述过程的逆过程。
操作系统的基本类型
- 批处理系统
- 分时系统
- 实时系统
- 混合型
操作系统的特征和功能
操作系统的特征
- 并发:系统能够同时处理多个任务或进程的能力;
- 共享:共享是指系统中的资源(如打印机、文件、变量等)可以被多个并发执行的进程共同使用,共享可以是同时共享(多个进程同时访问资源)或互斥共享(一次只允许一个进程访问资源);
- 虚拟:虚拟是指将物理资源(如处理器、内存、存储等)抽象化,为用户和应用程序提供一个超出实际物理资源限制的感觉。例如,虚拟内存允许系统使用硬盘空间来模拟更大的RAM,虚拟CPU技术允许在单个物理CPU上运行多个操作系统实例;
- 异步性:异步性是指系统中的操作不必在固定的时间间隔内完成,程序的执行不需要按照严格的顺序进行。在异步操作中,进程可以根据资源的可用性和调度策略,以非确定性的顺序进行。
操作系统的功能
处理机管理
- 核心任务:如何分配CPU时间
- 进程管理
- 线程管理
- 主要功能
- 公平分配
- 保证非阻塞
- 按优先级分配
进程:执行中的程序
- 进程的调度:创建、挂起、激活
- 进程间的通信:同步、互斥、死锁
存储器管理(内存)
- 核心任务:管理缓存、主存、磁盘等所形成的多级存储架构,为多道程序的并发提供良好的环境
- 主要功能
- 内存分配和存储的无关性:方便用户
- 内存保护:互不干扰
- 内存扩充:虚拟存储器
设备管理
- 核心任务:管理输入输出设备,屏蔽差异性,并提供并发访问
- 主要功能
- 设备无关性:逻辑设备->物理设备
- 设备分配:独享、共享和虚拟
- 设备的传输控制:中断、通道
文件管理
- 核心任务:将磁盘变成一个很容易使用的存储媒介提供给用户使用
- 主要功能
- 文件存储空间的管理
- 目录管理
- 文件读、写管理
- 文件保护
- 向用户提供接口
作业控制
- 作业调度
- 作业控制
- 批量型作业
- 终端型作业
操作系统应解决的基本问题
- 提供解决各种冲突(资源竞争引起的)策略:处理机调度、进程调度、内存分配、设备分配等;
- 协调并发活动的关系(提供流程控制和避免运行结果不确定性):进程之间的通信,同步与互斥;
- 保证数据的一致性:读写数据时,数据结构内容要真实记录数据的实际情况,分布式处理数据时,共享数据副本需保持一致;
- 实现数据的存取控制:共享程度、隐私程度、安全程度的控制。
操作系统的结构
模块化
模块-接口法: 将操作系统的按功能划分为若干具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信。还可以进一步将各模块细分为若干具有一定功能的子模块,同样也规定好各个子模块的接口。
- 内聚性:模块内部各部分间联系的紧密程度;
- 耦合度:模块间相互联系和相互影响的程度。
内聚性越高,耦合度越低,模块的独立性就越好。
- 优点:
- 增加了操作系统的正确性、可理解性、可维护性;
- 增加了操作系统的可适应性;
- 加速了操作系统的开发过程。
- 缺点:
- 接口定义困难,很难满足实际需求;
- 各模块并行开发,无法找到一个可靠的顺序来保证每一步的正确性。
有序分层法
将操作系统分为若干层,每层只能调用紧邻层的的功能和服务(单项依赖)。
- 优点:
- 便于系统的验证和调试(自底向上调试),简化了系统的设计和实现;
- 易扩充、维护,只要不改变相应层次间的接口即可。
- 问题:
- 合理定义各层比较困难,依赖关系固定后往往显得不够灵活;
- 效率很差,实现一个功能需要穿过多层,经过多个通讯机制。
外核与虚拟机
虚拟机
- 系统应该提供多道程序能力、一个比裸机有更方便扩展页面的计算机(但两者的实现应该相互独立);
- 优点:
- 虚拟机概念可以实现完全保护;
- 用软件从硬件逐层扩展;
- 虚拟机方法把多道程序和扩充机器的功能完全分开了,使每一部分都简单、灵活、更易于维护。
- 缺点:性能开销比较大。
外核
一种在内核态运行的程序
- 任务:为虚拟机分配资源,并检查这些资源使用的安全性,以确保没有机器会使用他人的资源;
- 优点
- 减少了资源的“映射层”(其余设计需要记录虚拟机磁盘的重映像地址)
- 将多道程序(外核内)与用户操作系统代码(用户空间内)分离,而且相应的负载并不重。
微内核结构
将内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。那些移除内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助微内核进行通信。
微内核最基本的功能:
- 进程管理(进程通信)
- 低级存储器管理
- 中断和陷入处理
其余的服务程序:
- 文件系统
- 网络功能
- 内存管理
- 设备管理
优点:
- 内核容易实现
- 可靠性、安全性高
- 扩展性、移植性好
- 适应分布式计算环境
缺点:速度较慢,需要频繁在核心态、用户态切换,操作系统的执行开销大。
宏内核结构
与微内核相对的概念
- 优点:运行速度块,性能高,因为各个管理模块共享信息,能有效利用相互之间的特性;
- 缺点:无法适应于操作系统逐渐增长的体系结构与应用的需求
诸如MacOS,Windows,Linux都是宏内核,并且发展的都很好。实际上,这些流行的宏内核也在不断借鉴着微内核的优点进化成混合内核。但在当代,内核的发展也从宏内核、微内核并行变为了微内核领先,谷歌的Fuchsia和华为的Harmony OS这些比较新的系统都瞄准于微内核开发。