一、操作系统概述
1. 操作系统目标:
有效性、方便性、可扩充性、开放性
2. 操作系统作用:
为用户和计算机之间提供接口、管理计算机系统资源、实现对计算机资源的抽象
3. 操作系统发展:
人工操作方式、脱机输入输出方式、单道批处理系统、多道批处理系统、分时系统、实时系统。
单道批处理系统特点:
- 自动性:磁带上的作业能自动逐个依此运行
- 顺序性:各道作业是顺序进入内存,顺序完成操作(类似队列)
- 单道性:内存中只有一道程序运行
多道批处理系统:
用户提交的作业都先放在外存排成一个队列,称为后备队列;之后,由作业调度程序按一定的算法从后备队列中选择若干作业调入内存,共享CPU和系统资源。
多道批处理系统的优缺点:
- 优点:资源利用率高、系统吞吐量(单位时间内完成的总工作量)大
- 缺点:平均周转时间(从作业进入系统,到完成并退出系统为止的时间)长,无交互能力。
4. 分时系统:
为了弥补多道批处理系统交互性问题,引入分时系统,可以将一台计算机提供给多个用户同时使用,提高计算机利用率。
分时系统的特点:
- 多路性:宏观上,允许多用户同时工作。微观上,每个用户作业轮流运行一个时间片。
- 独立性:每个用户各自一个终端
- 及时性:用户请求可在较短时间内相应
- 交互性:人机对话
5. 实时系统:
系统能及时响应外部事件的请求,在规定时间内完成对该事件的处理,并控制所有实时任务协调一致的运行。
实时系统与分时系统特点的区别:
特性 | 分时系统 | 实时系统 |
---|---|---|
多路性 | 与用户情况有关,时多时少 | 信息采集与控制互不干扰 |
独立性 | 终端用户独立 | 专用服务程序交互 |
及时性 | 较快速响应 | 更严格要求 |
交互性 | 全面人机交互 | 限于专用服务程序 |
可靠性 | 一般 | 更高 |
6. 操作系统的基本特征:
1. 并发性:
并发性指的是多个事件在同一时间间隔内发生。并行性是多个事件在同一时刻发生。
- 进程:指系统中能独立运行并作为资源分配的基本单位,由机器指令、数据和堆栈组成。
- 线程:一个进程包含若干线程,利用进程的资源。进程是分配资源的基本单位,线程是独立运行和独立调度的基本单位。
2. 共享性:
即资源共享,有互斥共享方式、同时访问方式。
3. 虚拟技术:
分为时分复用技术、空分复用技术。
- 如果虚拟的实现是通过时分复用方式,即对物理设备进行分时使用,设N是该设备所对应的逻辑设备数,则每台虚拟设备的平均速度必然小于等于1/N。
- 类似,空分复用实现虚拟,空间利用也小于等于1/N。
4. 异步性:
进程的推进速度不可预知。
7. 操作系统五大功能
1. 处理机管理
- 进程控制:为作业创建进程,撤销结束的进程,以及控制进程的状态转换
- 进程协调方式:进程互斥、进程同步两种方式
- 进程通信:
- 调度:
- 作业调度,即分配内存。将若干作业调入内存,为其建立进程,使之成为所需进程,并按一定规则插入就绪队列。
- 进程调度:即分配CPU从进程的就绪队列中,按一定算法选出一个进程,为其分配CPU。
2. 存储器管理:
- 内存分配:为每道程序分配内存空间
- 内存保护:保证每道用户程序互不干扰
- 地址映射:将地址空间的逻辑地址转换为内存空间的物理地址
- 内存扩充:借助虚拟存储技术,从逻辑上扩充内存
3. 设备管理:
- 缓冲管理:
- 设备分配:根据用户进程的I/O请求,为之分配所需设备。
- 设备处理:实现CPU与设备控制器之间的通信
4. 文件管理:
- 文件存储空间管理:为每个文件分配外存空间
- 目录管理:为每个文件建立目录项
- 文件读写管理和保护
5. 操作系统与用户间的接口:
- 用户接口
- 程序接口
8. 操作系统结构设计
1. 传统的操作系统结构:
- 无结构操作系统:
- 模块化结构:将大的功能分为若干子功能,每个子功能为一个模块,再进一步细分,使之每一个模块只实现一个子功能。需要考虑模块的独立性,即模块的内聚性,耦合性。
- 分层式结构:将一个操作系统分为若干层,每层由若干模块组成。各层之间只存在单向依赖关系,即高层仅依赖系统它的低层。保证系统的正确性,易于扩展,但效率低。
2. C/S模式
由客户机、服务器、网络系统构成。完成一次交互可分为:
- 客户发送请求信息
- 服务器接受信息
- 服务器反馈消息
- 客户机接受消息
此种模式实现了数据的分布存储,便于集中管理,可扩展性,但可靠性差。
3. 面向对象程序设计:
4. 微内核操作系统结构:
将操作系统分为:微内核和多个服务器。有如下功能:
- 进程线程管理
- 低级存储器管理
- 中断和陷入处理
二、进程管理
1. 程序顺序执行的特征:
- 顺序性:每一操作必须在上一个操作完成后开始
- 封闭性:程序运行独立全部资源,不受外界影响
- 可再现性:只要程序执行环境和初始条件相同,当程序重复执行时,结果相同
2. 程序并发执行的特点:
- 间断性:并发执行的程序由于共享资源,以及为了完成同一任务相互合作,相互制约。将导致并发程序具有"执行"-“暂停”-"执行"间断性活动规律。
- 失去封闭性:多个程序共享资源。
- 不可再现性:由于失去封闭性,也就失去了再现性。即使执行环境和初始条件相同,结果却各不相同。
3. 进程的特征:
- 结构特征:进程由程序段,相关数据段和PCB三部分组成
- 动态性:进程的实质是进程实体的一次执行过程。而程序只是一组有序指令集合。
- 并发性:多个进程同时存在于内存中,在同一时间段内同时运行。而程序不行。
- 独立性:进程实体可以独立运行,独立分配资源和独立接受调度(线程)。而未建立PCB的程序不能作为一个单独的单位参与运行。
- 异步性:指进程按各自独立的,不可预知的速度向前推进。
4. 进程的三个基本状态:
- 就绪状态:进程已分配到除了CPU之外的所有必要资源,只要再获得CPU,便可立即执行。
- 执行状态:进程已获得CPU,程序正在运行
- 阻塞状态:进程的暂停状态称为阻塞状态。
进程的挂起状态:
当发生终端用户请求、父进程请求、负荷调节的需求、操作系统需求时,可以发生挂起。
进程状态转换:
创建 → 就绪 ↔ 执行 → 终止
↑ ↓
← 阻塞
- 进程创建:首先创建一个PCB,将该进程转入就绪状态并插入就绪队列
- 进程终止:首先等待操作系统进行善后处理,然后清空PCB,并将PCB空间返还系统。
5. 进程控制块(PCB)
PCB记录操作系统所需的,用于描述进程当前情况以及控制进程运行的全部信息。使得一个在多道程序环境下不能独立运行的程序成为一个可独立运行的基本单位。PCB是进程存在的唯一标识。
进程控制块信息:
- 进程标识符:
- 内部标识符:为了方便系统使用。
- 外部标识符:由创建者提供,由用户进程访问该进程时使用。
- 处理机状态:由处理机各种寄存器内容组成。
- 进程调度信息:
- 进程状态
- 进程优先级
- 进程调度所需其他信息
- 事件(阻塞原因)
- 进程控制信息:
进程控制块的组织方式:
- 链式方式:把同一状态的PCB用链接字链接成一个队列,形成就绪队列。
- 索引方式:根据进程状态建立索引表,在每个索引表中,记录有相应状态的某个PCB在PCB表中的地址。
6. 进程控制
- 原语:由若干指令组成,用于完成一定功能的一个过程,是原子操作。在管态(核心态)下执行,常驻内存。
进程创建:
可以由进程树来描述,子进程可以继承父进程的所拥有的资源,当子进程被撤销时,应将其从父进程中获取的资源归还父进程。当父进程被撤销时,同时撤销子继承。
引起进程创建的事件:
在多道程序环境中,只有进程才能在系统中运行,为了能让程序运行,需要建立进程。引起进程创建的事件有:
- 用户登录
- 作业调度
- 提供服务
- 应用请求
进程创建步骤:
- 申请空白PCB
- 为新进程分配资源
- 初始化进程控制块
- 将新进程插入就绪队列
进程终止:
引起进程终止的事件:
- 正常结束
- 异常结束
- 外界干预(父进程请求,父进程终止,操作系统干预等)
进程终止过程:
- 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态。
- 若该进程处于执行状态,则立即终止其执行,并置调度状态为真,表示该进程被终止后重新进行调度。
- 若该进程还有子进程,则将其子进程终止。
- 将被终止进程的全部资源,或归还父进程,或归还操作系统。
- 将被终止进程的PCB从所在队列中移出。
进程的阻塞状态:
当正在执行的进程,发现阻塞事件时,由于无法继续执行,于是进程调用block原语把自己阻塞。进程的阻塞是进程自身的一种主动行为。
进程的唤醒过程:
- 首先将被阻塞的进程从等待队列中移出
- 将其PCB中的现行状态改为就绪
- 然后将PCB插入就绪队列
进程挂起与激活:
1. 挂起(Suspend)
- 触发:系统/用户主动暂停
- 动作:
- 内存 → 外存
- 状态变"静止"(静止就绪/静止阻塞)
- 特点:保留资源,被动行为
2. 激活(Activate)
- 触发:恢复请求
- 动作:
- 外存 → 内存
- 状态去"静止"(恢复挂起前状态)
- 特点:需重新竞争CPU
3. 核心对比
挂起 | 阻塞 | |
---|---|---|
位置 | 外存 | 内存 |
触发 | 外部强制 | 自我请求 |
资源 | 不释放 | 可能释放 |
4. 状态转换口诀
“活动可被挂,静止等激活”
三、内存管理
1. 内存管理功能
- 地址转换:逻辑地址→物理地址
- 内存分配:
- 连续分配(固定分区/动态分区)
- 非连续分配(分页/分段)
- 内存保护:防止进程越界访问
- 内存扩充:虚拟内存技术
2. 分配方式对比
类型 | 特点 | 碎片问题 |
---|---|---|
固定分区 | 预先划分大小 | 内部碎片 |
动态分区 | 按需分配 | 外部碎片 |
分页 | 固定大小页面 | 少量内部碎片 |
分段 | 按逻辑单位分配 | 外部碎片 |
3. 分页vs分段
分页 | 分段 | |
---|---|---|
划分依据 | 物理需求 | 逻辑结构 |
大小 | 固定 | 可变 |
优势 | 内存利用率高 | 便于共享和保护 |
4. 页面置换算法
- OPT:理想算法(不可实现)
- FIFO:先进先出(可能Belady异常)
- LRU:最近最少使用(效果最好)
- Clock:二次机会算法
四、文件系统
1. 文件结构
- 逻辑结构:
- 流式文件(无结构)
- 记录式文件(有结构)
- 物理结构:
- 连续分配
- 链接分配
- 索引分配
2. 目录结构
类型 | 特点 | 示例 |
---|---|---|
单级目录 | 查找效率低 | 早期系统 |
二级目录 | 用户隔离 | 多用户系统 |
树形目录 | 支持子目录 | 现代操作系统 |
图形目录 | 允许共享 | 网络文件系统 |
3. 磁盘调度算法
- FCFS:先来先服务
- SSTF:最短寻道时间优先(可能饥饿)
- SCAN:电梯算法(双向扫描)
- C-SCAN:单向循环扫描
五、设备管理
1. I/O控制方式
方式 | CPU干预程度 | 特点 |
---|---|---|
轮询 | 高 | 简单但效率低 |
中断 | 中 | 实时响应 |
DMA | 低 | 适合大批量传输 |
通道 | 最低 | 专用处理器控制 |
2. 缓冲技术
- 单缓冲:基本缓冲单位
- 双缓冲:解决速度不匹配
- 循环缓冲:提高并发性
- 缓冲池:动态分配缓冲区
3. 设备分配策略
- 静态分配:进程运行前全部分配(不会死锁但效率低)
- 动态分配:运行时按需分配(需死锁检测)
4. SPOOLing技术
- 本质:虚拟设备技术
- 组成:
- 输入井/输出井
- 输入缓冲/输出缓冲
- 输入进程/输出进程
- 优点:提高设备利用率