博主能力水平有限,如有错误敬请指正,欢迎补充~
一、操作系统的目标和作用
1.1 操作系统的目标
- 方便性:使计算机易学易用,普及大众
- 有效性:
- 提高系统资源利用率
- 提高系统的吞吐量
- 可扩充性:无结构 -> 模块化结构 -> 层次化结构 -> 微内核
- 开放性:遵循开放系统互联OSI国际标准
1.2 操作系统的作用
- 作为用户与计算机硬件系统之间的接口
- 作为计算机系统资源的管理者
- 实现了对计算机资源的抽象(无需关心操作如何具体实现,黑盒子)
二、OS的发展与分类
2.1 手工操作阶段
缺点:人机速度矛盾(I/O慢,处理快)
2.2 批处理阶段
2.2.1 单道批处理系统(引入脱机输入输出技术)
优点:缓解人机速度矛盾
缺点:资源利用率依然很低
2.2.2 多道批处理系统(操作系统开始出现)
优点:多道程序并发执行,资源利用率很高; 吞吐量大(与单道批处理相比,还提高了I/O利用率)
缺点:不提供人机交互功能
2.3 分时操作系统
优点:提供人机交互功能
缺点:不能优先处理紧急任务
2.4 实时操作系统
优点:能优先处理紧急任务
2.4.1 硬实时系统
必须在绝对严格的规定时间内完成处理
2.4.2 软实时系统
能接受偶尔违反时间规定
2.5 微机操作系统的发展
Unix是一种多用户、多进程的计算机操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。
三、OS的基本特性
并发、共享、虚拟和异步是OS的四个基本特性。
并发离开了共享无法实现,共享离开了并发没有意义,虚拟与异步基于并发。
- 时间片:一个时间片就是一段很短的时间(例如30ms)
- 进程:未引入进程的系统应用程序的计算与I/O顺序执行;引入后,可以为计算程序和I/O程序分别建立进程,这两个进程可以并发执行。
进程:系统中能独立运行并作为资源分配的基本单位,由一组机器指令、数据和堆栈等组成。
- 临界资源:临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。
- 时分复用技术:
- 虚拟处理机技术
- 虚拟设备技术
- 空分复用技术:用于对存储空间的管理,用以提高存储空间的利用率
- 异步:进程的执行通常都不可能“一气呵成”,而是以“走走停停”的方式运行的
四、OS的运行机制与体系结构
4.1 特权与非特权指令
4.1.1 两种状态
- 用户态(目态):
此时CPU只能执行非特权指令
- 核心态(管态):
特权指令、非特权指令都可以执行
4.1.2 两种程序
- 内核程序:OS的内核程序是系统的管理者,既可以执行特权指令也可以执行非特权指令,运行在核心态。
- 应用程序:只能运行非特权指令,运行在用户态。
操作系统的内核
- 内核是计算机上配置的底层软件,是OS最基本、最核心的部分。
- 实现操作系统内核功能的程序就是内核程序。
- 与硬件关联较紧密的模块:
- 时钟管理:实现计时功能
- 中断处理:实现中断机制
- 原语:
- 处于OS最底层,是最接近硬件的部分
- 具有原子性,运行不可中断
- 运行时间较短,调用频繁
- 对系统资源进行管理的功能如进程管理、存储器管理和设备管理等,有的OS不把这部分归为内核功能。
- 大内核与微内核:
五、中断和异常(内中断)
5.1 要点
- 当中断发生时,CPU立即进入核心态
- 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
中断是使 用户态->核心态 的唯一途径
有了中断,才能实现多道程序并发执行。
(通过程序状态字(PSW标志位切换状态)
5.2 中断的分类
5.2.1 内中断(也称异常、例外、陷入)
来自CPU内部,与当前执行的指令有关
- 自愿中断——指令中断
- 强迫中断:硬件故障、软件中断(如整除0)
*另一种分类方式:- 陷阱、陷入
- 故障
- 终止
5.2.2 外中断(狭义的中断)
来自CPU外部,与当前执行的指令无关
- 外设请求(如I/O操作完成发出的中断信号)
- 人工干预(如用户强行终止一个进程)
5.3 外中断的处理过程
六、系统调用
6.1 概念
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。程序接口由一组系统调用组成。
系统调用 可以理解为一种可供应用程序调用的特殊函数
(系统调用的相关处理在核心态下完成的)
系统调用会使处理器从用户态进入核心态(执行一个int指令(陷入指令))
凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。
保证系统稳定性和安全性
6.2 系统调用背后的过程
传递系统调用参数 → 执行陷入指令(用户态) → 执行系统调用相应服务程序(核心态) → 返回用户程序
注意:
- 陷入指令是在用户态执行的,执行后立即引发一个内中断,从而CPU进入核心态
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态
- 陷入指令是唯一一个只能在用户态执行,不能在核心态执行的指令
👉系统调用发生在用户态,对系统调用的处理发生在核心态!
👈