绪论
操作系统概念
操作系统
操作系统是:
- 计算机系统资源的管理者,组织、调度、分配软硬件资源;
- 作为用户与计算机硬件之间的接口,向上层(用户)提供服务;
- 最接近硬件的软件,即计算机系统中最基本的系统软件。
扩展:系统软件和应用软件
系统软件:OS、数据库管理系统、语言处理程序、服务性程序、标准库程序;
应用软件:用户编写的程序、驱动程序、辅助设计软件、实时控制软件
操作系统特征
操作系统基本特征包括并发、共享、虚拟、异步。最基本特征是并发和共享,两者互为存在条件。
-
并发
-
并发是同一时间间隔发生。如单核CPU。
并行是同一时刻发生。如多核CPU。
-
操作系统的并发性通过分时得以实现,需要中断的支持。
-
-
共享
- 互斥共享方式,如打印机,磁带。该共享方式称为互斥式共享,其所需的资源在一段时间内只允许一个进程访问,称之为临界资源或独占资源。
- 同时访问方式,如磁盘设备,通常是宏观上的同时访问,微观上分时访问,称分时共享。
-
虚拟
- 一个物理上的实体变为若干逻辑上的对应物。虚拟通过并发性实现。
- 时分复用技术:将一个物理上的CPU虚拟为多个逻辑上的CPU,称虚拟处理器;
- 空分复用技术:从逻辑上扩充存储器的容量,称之为虚拟存储器。
-
异步
- 多个并发执行的程序以不可预知的速度向前推进,称之为进程的异步性。
- 需要保证运行环境相同时产生的结果也相同。
操作系统的目的与功能
-
计算机角度来说,操作系统是计算机系统资源的管理者
处理器管理、存储管理、文件管理、设备管理
-
用户角度来说,操作系统是用户与计算机硬件系统之间的接口
-
命令接口,直接给用户使用的接口,包括
-
联机命令接口,或交互式命令接口,用于分时或实时系统。
例如终端。
-
脱机命令接口,或批处理命令接口,用于批处理系统。
类似可执行脚本。
-
-
程序接口,由一组系统调用(广义指令)组成。用户通过系统调用来请求系统的服务。
-
注:也可将接口分为直接给用户使用的接口与通过程序间接调用的接口,直接给用户使用的包括命令接口和GUI图形接口,通过程序间接调用的是程序接口;与此同时GUI图形接口也会调用程序接口。
-
-
操作系统用作扩充机器
仅包括硬件的计算机称逻辑,经过操作系统扩充后方可使用。覆盖了软件的机器称之为扩充机器或虚拟机。
操作系统的发展与分类
手工操作阶段
- 用户独占全机,资源利用率低;
- 人机速度矛盾,CPU等待手工操作,CPU利用不充分。
批处理阶段
- 在此阶段操作系统开始出现。
- 为解决下列矛盾而产生:
- 人机速度矛盾
- CPU、IO设备速度不匹配的矛盾
- 主要缺点:缺乏交互性。
单道批处理系统
优点:解决了人机速度矛盾;
缺点:未解决CPU与IO设备之间的矛盾。
特点:自动性、顺序性、单道性。
多道批处理系统
优点:解决了人机速度矛盾、CPU与IO设备之间的矛盾;资源利用率高。
缺点:用户响应的时间长,不能提供人机交互功能。
特点:多道、宏观上并行、微观上串行。
分时操作系统
分时是将处理机的时间分成很短的时间片,轮流上处理机运行。
优点:解决了人机交互的问题(用户的请求可以被及时响应)。
缺点:不能处理紧急任务(未区分各任 务之间的优先级)。
实时操作系统
优点:在严格时限内作出处理,利于完成紧急任务。
特点:及时性和可靠性。
注意:对于实时操作系统,资源利用率不是需要重点考虑的因素。
分类:
-
硬实时操作系统
飞行控制系统、导弹发射系统
-
软实时操作系统
股票交易系统、铁路订票/铁路信号系统、银行管理系统、门禁系统
-
非实时操作系统
干扰项:计算机辅助设计(CAD)系统、办公自动化系统等
其他操作系统
-
网络操作系统
实现网络中资源共享和计算机间的通信。
-
分布时计算机系统
特点:分布性、并行性。与网络操作系统的本质不同是:分布式操作系统中的若干计算机相互协同完成同一任务。(所有计算机地位相当)
-
个人计算机操作系统
操作系统的运行环境
运行机制
CPU执行两种程序,一种是操作系统内核程序,另一种是(系统外层的)应用程序。
特权指令=广义指令;
管态=内核态,运行内核程序;
目态=用户态,运行应用程序;
内核态→用户态:执行特权指令修改PSW
(程序状态字寄存器);
用户态→内核态:由中断(外中断)引发,或由异常(内中断)引发,硬件自动变态;
-
时钟管理
置时钟指令是特权指令,读时钟指令是非特权指令。
-
中断机制
中断是操作系统必须提供的功能;并发、多道需要中断的支持。
-
原语
运行具有原子性,不可中断。
中断与异常
定义
广义来说,操作系统内核夺回CPU使用权的唯一途径是中断。
狭义来说,中断分为外中断和内中断,其中外中断称作中断,内中断称作异常。
中断具体是内还是外,取决于中断信号的来源,来自CPU内部称内中断,来自CPU外部称外中断。
中断与异常是从用户态到内核态的途径。
通常异常会引起中断,但中断不一定是由异常引起的。
分类
-
内中断/异常
异常不能被屏蔽,一旦出现必须立即处理。
-
自愿中断、陷入、陷阱——指令中断(如访管指令,它不是特权指令)
-
强迫中断
-
硬件故障
由错误条件引起,可能被内核程序修复,修复后内核会将CPU使用权还给应用程序。例如缺页故障。
-
软件终止
致命错误引起,不可被修复。应用程序执行结束。如整数除以0,非法使用特权指令等。
-
-
-
外中断/中断
- 时钟中断
- IO中断请求
中断实现原理
-
硬件完成部分(中断隐指令)
-
关中断
-
保存断点
主要是将断点:程序计数器PC 保存
-
引出中断服务程序
-
-
操作系统完成部分(内核态,进入中断服务程序)
-
保存现场和屏蔽字
保存程序状态字寄存器
PSW
和通用寄存器的内容。特别地,子程序调用不需要保存。
-
开中断
-
执行中断服务程序
CPU根据中断类型查询中断向量表,根据类型使用中断处理程序处理中断。
-
关中断
-
恢复现场和屏蔽字
-
开中断
-
中断返回
-
系统调用
系统调用是操作系统向上层(编程语言或用户)提供的一系列操作的接口。
请求系统调用(用户态)→执行系统调用(内核态)→返回(用户态)。
这样做的目的是:用户不能直接执行对系统影响非常大的操作,保证了系统的稳定性和安全性。
表:各种指令的区别。
指令名称 | 指令类别 | 定义角度 | 详细释义 |
---|---|---|---|
特权指令 | 特权指令 | 指令系统 | 用于管理硬件和系统安全的指令。仅能在管态(核心态)执行,目态下执行该种指令,CPU会自动中断并切换至管态。 |
访管指令或陷入指令或Trap指令 | 非特权指令 | 指令系统 | 应用程序自愿进管的指令,目的是请求系统的服务。执行后进入管态,同时也意味着程序放弃CPU的控制权。访管指令后可以接系统调用。一般是需要执行特权指令时使用。 |
广义指令或系统调用 | 不定 | 操作系统 | 应用程序通过系统调用来请求获得操作系统内核的服务,系统调用是一段代码。特别地,特权指令是系统调用的真子集,执行系统调用并不一定非得执行特权指令,亦有可能有非特权指令。但执行系统调用必须在内核态下。 |
表:系统调用与库函数的区别
名称 | 详细释义 |
---|---|
库函数 | 库函数可以理解为是编程语言向上层对某些请求服务的一种封装,使编程更加方便快捷。库函数中有可能包含零个(如取绝对值),一个或多个系统调用(如创建文件)。它运行在用户态,需要时可以请求系统调用从而转到内核态,结束后返回用户态。 |
系统调用 | 操作系统向上层(编程语言或用户)提供的一系列操作的接口,应用程序通过系统调用来请求获得操作系统内核的服务。执行系统调用必须在内核态下。 |
操作系统的体系结构
- 大/单/宏内核
- 优点:高性能
- 缺点:庞大,结构混乱,难以维护
- 典例:Linux,Unix
- 微内核
- 优点:可靠,清晰
- 缺点:性能低下(因需要频繁切换用户态和内核态)
- 典例:Windows NT