操作系统
操作系统结构
简单结构
- 简单,较小,并未仔细划分模块
- 功能有限,未很好地区分接口和功能层次,易受错误程序伤害
分层
- 自顶向下,将操作系统分成若干层,使构造调试简单化
- 每层利用较低层的功能来实现,难点在对层的详细定义,与其他方法比效率较差
微内核
- 将所有非基本部分从内核中移走,以消息传递方式通信
- 便于扩充操作系统,提供良好地安全性和可靠性,忍受由于系统功能开销而导致系统性能下降
- 功能:进程管理,低级存储器管理,中断陷入管理
模块
- 核心部件
- 动态链接附加服务,灵活,高效
进程间通信
- 低级通信
资源竞争 –> 临界区 –> 进程互斥–>信号量 <–进程同步 - 高级通信
共享存储系统
信息传递系统(直接、间接)
管道通信
死锁
多个进程因竞争资源而造成的僵局,若无外力,无法恢复
产生原因
- 资源竞争
- 进程推进顺序不当
必要条件及预防
1. 互斥
2. 占有并等待 (静态分配)
3. 非抢占 (抢占)
4. 循环等待 (增量序列,递增顺序申请资源)
银行家算法
- Available
- Max
- Allocation
- Need
临界区三大要求
临界区:并发进程中访问共享变量的程序段
1. 互斥
2. 前进
3. 有限等待
信号量
- 同步点
- 伪代码
- P、V位置
生产者–消费者问题
P:while(1){ //互斥信号量:S1=1;S2=1;
生产; //同步信号量:S3=0;S4=n;
P(S4);
P(S1);
取产品[i];
i++;
V(S1);
V(S3);
}
V:while(1){
P(S3);
P(S2);
取产品[j];
j++;
V(S2);
V(S4);
消费;
}
Do{ //初值:empty=n;full=0;mutex=1
//Produce
P(empty);
P(mutex);
//add i++
V(mutex);
V(full);
}
Do{
P(full);
P(mutex);
//remove j++
V(mutex);
V(empty);
//consume
}
操作系统
操作系统:管理计算机硬件,为应用程序提供基础,充当硬件与用户的媒介
分类:
- 多道程序处理系统
优:作业吞吐量大,资源利用率高
缺:周转时间长,无交互能力 - 分时处理系统
交互性,多用户同时性,独立性,及时性,(时间片轮转)
适用开发、调试、小作业 - 实时处理系统
实时性,可靠性,安全性,专用性
适用高科技(导弹) - 单道批处理系统
适用大作业,科学计算
功能
- 处理机管理:处理用户命令
- 存储器管理:读写文件
- 设备管理:分配,回收资源,并处理软硬件出现的错误
- 文件管理
系统调用
- 为上层提供服务接口,API
进程
引入进程原因:引入并发,并控制并发执行的程序
特点
- 并发
- 共享
- 虚拟
- 异步
组成部分
- 程序段(堆栈段 –> 临时数据)
- 数据段(全局变量)
- PCB (堆 –> 动态分配)
状态
新的 就绪 运行 等待 终止 分派 I/O 中断 I/O 新的 就绪 运行 等待 终止
控制块 PCB
- 进程状态
- 程序计数器
- CPU寄存器
- CPU调度信息
- 内存管理信息
- I/O状态信息
- 记账信息
进程与程序
进程 | 程序 |
---|---|
动态 | 静态 |
有生命周期 | 长久 |
并发行(独立、异步) | 无 |
资源分配基本单位 | 无 |
不同进程可包含同一程序 | 同一程序执行可产生多进程 |
堆栈段(参数、返回地址、局部变量) | |
数据段(全局变量) | |
堆(动态分配) |
进程与线程
进程 | 线程 | |
---|---|---|
调度 | 资源分配基本单位 | 调度和分派的基本单位 |
并发性 | 有 | 有 |
资源 | 自身资源+其隶属进程的资源 | |
系统开销 | 开销大 |
CPU调度
- 周转时间:提交到完成
- 等待时间:就绪花费
- 响应时间:开始响应
内存分配
固定内存分配
- 管理简单
- 利用率低
- 内部碎片大
动态内存分配
- 首次适应(检索速度、回收过程、适合大作业、简单、碎片)
- 最佳适应(碎片、适合大作业、复杂)
- 最差适应(无碎片、复杂)
系统颠簸
频繁调页,置换算法选择不当
内核内存
- Buddy:连续固定大小
- Slab:Cache,连续动态
文件访问方法
- 顺序(编辑器、编译器)
- 直接(数据库)
- 其他(索引)
目录结构
单层目录结构
- 简单,便于理解和支持
- 易命名冲突,且无文件夹分组
- 数目越大,效率越低
双层目录结构
- 解决命名冲突,但存在隔离(用户文件+主文件)
- 数目越大,效率越高
树状文件目录
- 唯一路径,但可能存在路径过长
- 无隔离,但禁止共享(子目录)
- 数目越大,效率越高
无环图
同一文件或子目录可出现在两个不同目录中,允许目录含有共享子目录和文件
- 实现方式:链接,复制
- 支持共享
- 树状目录的扩展,灵活,复杂
通用图
- 确保无环
- 简单算法遍历
- 确定是否存在引用
- 便于使用
空闲空间管理
位向量
- 速度慢
- 物理块号需二次计算
链表
- 释放难
- 写入难
组
计数
缓冲处理
- 数据流,生产者、消费者速度差异
- CPU,外设(高速缓存)
- 传输数据大小不一致
- 支持应用程序I/O控制
同步与互斥
- 同步
并发进程间存在的相互制约和相互依赖的关系 - 互斥
若干进程共享一资源时,任何时刻只允许一个进程使用
I/O操作
主存与外围设备间的信息传送操作
I/O控制方法及特点
- 程序自动控制
优:简单,硬件少
缺:只可串行工作,无法处理错误 - 中断
根据CPU和内存内外分为外中断和内中断,内中断存在陷阱 - DMA
减少中断次数,无需CPU帮助,可传送连续数据块 - 通道:I/O处理机
处理非连续、离散数据块,减少中断,拥有特有的指令系统,相当于一个简化版CPU
设备分配时应考虑的因素
- 固有属性:独占性,共享性,可虚拟设备
- 分配算法:FCFS,优先级
- 安全性
分页
页表
- 页号
- 基地址
- 标志
- 主存块号
分页与分段
- 共同点:离散分配,通过地址映射机构实现地址变换
分页 | 分段 |
---|---|
页为物理单位,为系统管理而生 | 段为逻辑单位,为满足需要而设 |
页大小固定 | 段长度不固定 |
页地址空间一维 | 段地址空间二维 |
分页产生内部碎片 | 分段产生外部碎片 |
段可动态链接 |
- 设备需求:内存,外存,页(段)表,缺页中断,地址变换
页错误陷阱处理的基本流程
- 检查进程页表,确定地址访问是否合法
- 若合法则调入页面,否则终止进程
- 寻找空闲帧或牺牲帧
- 调度磁盘,将页调入帧
- 修改页表和内部表
- 指令重启
磁盘调度
- FCFS 先来先服务
- SSTF 最短寻道时间优先
- SCAN 电梯算法
- C-SCAN 均匀等待时间
- LOOK 无边界SCAN
- C-LOOK 无边界C-SCAN
文件系统分层组织结构
- 应用程序
- 逻辑文件系统(逻辑文件结构,元数据)
- 文件组织系统(空闲管理,分配磁盘块)
- 基本文件系统(磁盘驱动)
- I/O控制 (设备驱动程序,内存与磁盘,中断处理,信息传输)
- 设备