别问,问就是考前抱佛脚凑的,几天拼的,所以有些不是很详细,但是亲测考试够了(x
目录
概论
发展变化
-
批处理(之前是手工操作阶段)
-
单道:自动性、顺序性、单道性(内存中仅有一道程序运行)
-
多道:多个程序同时进入内存,在CPU中交替运行
特点:多道;宏观上并行(进入系统的程序都处于运行过程);微观上串行(多道程序轮流占有CPU)
优点:资源利用率高;系统吞吐量大;系统切换花费时间少
缺点:用户响应时间长;不提供人机交互
-
-
分时操作系统(把处理器运行时间分成时间片)
-
特点
-
同时性(多路性)
-
交互性
-
独立性
-
及时性
-
缺点:当系统能对外部的信息在规定时间(比时间片的时间还短)内作出处理,系统便无法满足
-
-
实时操作系统
-
硬实时系统
-
软实时系统
-
-
网络:把计算机网络中的各台计算机结合起来
-
分布式
分布式系统中的若干计算机相互协同完成同一任务
冯诺依曼体系结构:存储程序式
-
集中顺序过程控制
操作系统主要功能
-
进程管理
-
存储管理
-
设备管理
-
文件系统
现代操作系统基本特征
-
并发执行
-
资源共享
-
互斥共享
-
同时访问
-
-
虚拟化
把一个物理上的实体变为若干逻辑上的对应物
-
异步性
进程的执行不是一贯到底的,走走停停
(但是要保证只要运行环境相同,结果就相同)
操作系统工作模式
内核态/管态
-
操作系统内核程序运行在内核态
-
内核包括4方面内容:时钟管理、中断机制、原语、系统控制的数据结构及处理
用户态/目态
-
应用程序运行在用户态
概念
特权指令
不允许用户直接使用的指令
中断和异常
异步异常随时可能发生,同步异常需要触发
-
中断
外中断,来自CPU执行指令外部的事件
-
异常
-
故障:指令执行异常
-
自陷:用于在用户态下调用操作系统内核程序
-
终止:硬件中断
-
对中断和异常的处理过程由操作系统和驱动程序完成
系统调用
-
特权指令:不允许用户直接使用的指令
-
访管指令(陷入指令、trap)
-
用户程序执行陷入指令来发起系统调用
-
设备管理、文件管理、进程控制、进程通信、内存管理
存储管理
操作系统对内存的划分和动态分配
存储管理的功能
-
内存空间的分配与回收
-
地址转换:逻辑地址与物理地址
-
内存空间的扩充:虚拟储存技术或自动覆盖技术
-
内存共享:多进程访问内存的同一部分
-
存储保护:保证各道作业在各自的存储空间内运行,互不干扰
进程运行
程序的链接与装入
-
编译
-
链接
-
装入
-
可重定位装入
-
静态重定位
地址变换(相对地址换位绝对地址)是在进程装入时一次性完成的
-
动态重定位
地址转换在程序真正要执行时才执行
-
-
绝对装入
-
进程的内存映像
-
代码段:程序的二进制代码
-
数据段:程序运行时加工过处理的对象,包括全局变量和静态变量
-
.bss:未初始化及所有初始化为0的全局变量和静态变量
-
.data:已初始化的全局变量和静态变量
-
-
进程控制块:存放在系统区
-
堆:动态分配的变量
-
栈:用来实现函数调用
连续分配管理
单一连续分配
-
系统区
操作系统使用,在低地址
-
用户区
仅有一道用户程序
覆盖与交换
-
覆盖:解决主存容量不足的问题
把用户空间分为一个固定区和若干个覆盖区
将经常活跃的部分放在固定区,其余部分按调用关系分段,即将要访问的段放入覆盖区,其余段在外存,之后调用。
-
特点:打破限制,但当同时运行的代码量大于主存时仍不能运行;能够更新的只有覆盖区
-
-
交换(对换)
-
换出:把处于等待状态的程序从内存移到辅存
-
换入:把准备好竞争CPU运行的程序从辅存移到内存
-
交换用于不同进程之间,覆盖用于同一个程序或进程中
分区管理
固定分区(内碎片)
-
基本思想:将用户内存空间划分为若干个
-
分类
-
分区大小相等
-
分区大小不等
-
-
优点:无外碎片
-
缺点:程序太大时,可能放不进任一分区;存在内碎片;不能多进程共享一个主存区,空间利用率低
可变分区(外碎片)
-
基本思想:在进程装入内存时,根据实际需要,动态地为之分配内存,并使分区的大小恰好适应进程的需要;分区的大小和数目可变
-
优缺点
-
优点:没有内碎片
-
缺点:外碎片(可以用紧凑技术,动态重定位)
-
-
主要算法
-
Best-fit:空闲分区按容量递增的次序形成空闲分区链,找到第一个满足要求的
-
Worst-Fit:空闲分区按容量递减的次序形成空闲分区链,找到第一个满足要求的:
-
First-Fit:空闲分区按地址递增的次序链接,从链首开始顺序查找,找到大小能满足要求的第一个分区,有利于大作业
-
Next-Fit:First-Fit查找,但是从上次查找结束的位置开始
-
分页存储管理
分页的思想:把主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位;每个进程也以块为单位 进行划分,进程在执行时,以块为单位逐个申请主存中的块空间。
基本概念
-
页面 Vs 页框(页和页框一一对应)
-
页面(页):进程中的块,Page
-
页框(页帧):内存中的块,Page Frame
-
块(盘块):外存,Block
-
-
地址转换
-
MMU(内存管理单元)
-
地址结构
-
-
页表(每个进程一个):页号到物理块号的地址映射
记录页面在内存中对应的物理块号,页表一般在内存中
-
页表项:页表由页表项组成:页号+物理内存中的块号
-
多级页表
-
杂凑页表
-
反置页表
-
-
快表(TLB):由于页表慢,因此有了快表
用来存放当前访问的若干页表项
-
页面大小
给进程求最优页面大小:设进程平均大小为s,页面平均大小为p,页表项大小为e
分页开销:se/p+p/2
使开销最小:令se/p=p/2,即p=
-
访存逻辑
-
反置页表:反置页表是用物理页框去找逻辑页号和进程号,有多少物理页框就需要多少页表项
分段内存管理
基本思想
按照用户进程中的自然段划分逻辑空间
地址变换
逻辑地址:段号+段内偏移量
段表:段号+段长+本段在主存的开始地址
分页和分段
段页式内存管理
-
基本思想
作业的地址空间被分成若干个逻辑段;每段分成若干页
内存空间的管理和分页存储一样
-
地址变换
逻辑地址:段号+页号+页内偏移
每个进程一张段表,每个段一个页表
段表:段号、页表长度,页表开始地址
页表:页号、块号
虚拟储存
局部性原理
-
时间局部性
-
空间局部性
虚拟存储器
特征:多次性(作业无需一次性地全部装入内存)、对换性(将暂不使用的程序和数据换出,待需要时换入)、虚拟性(逻辑上扩充内存容量)、离散性
页面置换算法
-
最优置换(OPT):淘汰以后永久不使用的页面或者最长时间不使用
-
先进先出(FIFO):淘汰最早进入内存的页面
-
最近最少使用(LRU)
-
Clock置换
-
最近未用(NRU)——第二次机会算法:循环队列
-
改进的CLOCK:加了修改位
-
-
工作集策略
-
工作集:在某段时间间隔内,进程要访问的页面集合
-
原理:为进程分配大于其工作集的物理块。不断调入新的进程,直到超过物理块总数
-
-
缺页中断:当所要访问的页面不在内存中,便产生一个缺页中断。
-
缺页中断属于内部异常,在指令执行期间产生和处理中断信号
-
抖动
频繁的页面调度
-
发生原因:系统中同时运行的程序太多,分配给每个进程的物理块太少,不能满足进程正常运行的基本要求
-
解决方法:局部置换策略、工作集算法、预留部分页面、挂起若干进程
写时复制技术
与虚存相似,将磁盘文件的全部或部分内容与进程虚拟地址空间的某个区域建立映射关系,便可以直接访问被映射的文件
内存映射文件
存储保护
进程管理
基本概念
-
并发与并行
-
并发:多个任务在单处理机或多处理机下分时运行
-
并行:多个任务在多个处理机上同时运行
-
并行性需要相关的硬件支持
-
-
进程与程序
进程是程序的一次执行过程
进程是一个程序及其数据在处理机上顺序执行时所发生的活动
== 进程与程序的根本区别是静态与动态 ==
-
进程的三个基本状态
-
运行态
-
就绪态:获得了除处理机外的一切所需资源
-
阻塞态(等待态)
-
-
进程的控制原语
-
原语:进程控制用的程序段
若干条指令组成,用来实现某个特定操作。通过一段不可分割或不可中断的程序实现功能。
-
进程的创建:创建原语
-
进程的终止:终止原语
-
进程的阻塞和唤醒:Block和Wakeup
-
-
进程的组成
-
程序
-
数据
-
共享正文段
-
数据堆段
-
数据栈段
-
-
PCB
PCB是进程存在的唯一标识,系统总是通过其对进程进行控制
一个与动态过程相联系的数据结构,记载了进程的外部特性(名字、状态)以及与其他进程的联系(通信关系),还记录了进程所拥有的各种资源。进程控制块是进程存在的标志。、
-
-
线程的概念
减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能
-
进程与线程的区别
进程是资源的基本单位,线程是独立调度的基本单位
-
多线程模型
-
多对一模型:多个用户级线程映射到一个内核级线程
-
优点:效率高
-
缺点:只有一个线程能够访问内核
-
-
-
数据存储
进程同步
-
临界资源
一次仅允许一个进程使用的资源
-
临界区
访问临界资源的那段代码
-
原子性
-
同步、互斥
-
同步:多个相关进程在执行次序上的协调,直接制约关系源于相互合作
-
互斥:多道程序环境中,每次只允许一个进程对临界资源进行访问
-
硬件实现
-
中断屏蔽
-
硬件指令
-
-
软件实现
-
-
信号量
只能被两个标准原语wait和signal访问,记为P、V操作
-
整型信号量:表示资源数目的整形量
-
记录型信号量
typedef struct{ int value; //资源数目 struct process* L; //在等待资源的进程链表 }
-
信号量取值的物理意义
当信号量值大于零时表示可用资源的数目
当信号量值小于零时,其绝对值为因请求该资源而被阻塞的进程数目 。
-
-
P、V操作(P使信号量-1;V +1)
-
同步:若某个行为要用到某个资源,则在这个行为之前P资源;若会提供某种资源则在行为后面V一下
-
互斥:P,V操作要夹紧使用互斥资源的行为
-
PV可以解决一切同步互斥问题
-
-
管程
模块化。把对共享资源的操作封装起来,每次只允许一个进程进入管程,从而实现进程互斥。
-
进程间通信的基本办法
-
共享储存:效率最高
-
消息传递
-
直接通信方式
-
间接通信方式:信箱
-
-
管道通信
-
管道:文件
-
-
同步与互斥的原则
-
空闲让进
-
忙则等待
-
有限等待:有限时间内进入临界区,避免死等
-
让权等待:不能进入临界区时,立即释放处理机,避免忙等
经典问题
-
生产者-消费者问题(同步与互斥)
注意:互斥夹紧,若是必须连续的,就是两个主题一个开始P(mutex),另一个结束V
-
读者-写者问题(互斥)
存在一个互斥访问计数器
-
哲学家进餐问题(互斥)
进程调度算法
调度的三个类型
-
高级调度:作业调度
从外存上处于后备队列的作业中选
内存与辅存之间的调度
每个作业只调入一次、调出一次
-
中级调度:内存调度
提高内存利用率和系统吞吐量
中级调度会将暂时不用的进程挂起
-
低级调度 :进程调度(各种操作系统中都必须配置)
从就绪队列中选一个进程
进程调度算法
评价指标
-
周转时间
-
周转时间=作业完成时间-作业开始时间
-
平均周转时间
-
带权平均周转时间=作业周转时间/作业实际运行时间
-
平均带权平均周转时间
-
-
吞吐量
单位时间内CPU完成作业的数量
-
响应时间
从用户提交请求到系统首次产生响应所用的时间
-
等待时间,CPU利用率
进程调度方式
总体上
-
非抢占
-
抢占(会提高系统吞吐量和响应效率)
常见调度算法
-
FCFS(先来先服务)
-
SJF(短作业优先)
平均等待时间最少
-
轮转调度
将所有就绪进程 按FCFS策略排成就绪队列
平均等待时间较长
-
优先级调度
-
抢占式和非抢占式
-
静态优先级和动态优先级
-
-
最高响应比优先
响应比 = (等待时间+要求服务时间)/要求服务时间
实时调度算法
-
单调速率调度RMS :静态(周期短优先级高)、抢占式
-
最早截止时间优先算法EDF: 动态
死锁
基本概念
-
死锁
多个进程因竞争而造成的僵局
-
活锁
没有发生阻塞,但无法停止运行(比如两个线程,一个抽水,一个注水,谁都无法满足终止条件)
-
饥饿
线程因无法访问所需资源而无法执行下去
产生死锁的必要条件
-
互斥
-
不可剥夺(即资源只能主动释放)
-
请求和保持
进程已经保持了一个资源,但又提出了新的资源请求,而该资源被其他进程占有,请求进程被阻塞但对自己已获得的资源保持不放
-
循环等待
资源分配图
-
圆圈代表一个进程,框代表一类资源
请求边:进程到资源
分配边:资源到进程
死锁定理
S为死锁的条件是当且仅当S状态的资源分配图是不可完全简化的
简化资源分配图
处理死锁的方法
允许死锁发生
-
无作为
-
死锁的检测和解除
不允许死锁发生
-
预防死锁(破坏四个产生条件之一)
限制条件严格,实现简单,会降低系统的效率
-
破坏互斥条件
允许系统资源都可以共享使用(不可行)
-
破坏不剥夺条件
会增加系统开销,用于状态易于保存和恢复的资源。如CPU的寄存器及内存资源,一般不用于打印机等
-
破坏请求并保持
预先静态分配法,在运行前一次申请完所需要的全部资源
会导致饥饿现象
-
破坏循环等待条件
顺序资源分配:规定每个进程必须按编号递增的顺序请求资源
-
-
避免死锁(用算法检测,防止系统进入不安全状态)
-
系统安全状态
-
安全序列:系统按照某种推进顺序为每个进程分配其所需的资源,直至满足每个进程对资源的最大需求,使每个进程都可顺序完成
不安全状态:找不到安全序列
(不安全状态不全是死锁状态,可能进入)
-
-
银行家算法
-
安全性算法
-
-
检测与解除死锁
-
发现死锁:基于进程资源图的简化
-
解除死锁
-
资源剥夺
-
撤销进程
-
进程回退
-
-
文件管理
基础概念
-
用户进行的输入输出,以文件为基本单位
FCB(文件控制块)
-
文件名和文件的定位信息
-
FCB:文件目录项
-
文件目录:FCB的有序集合
文件操作
基本操作
-
创建
-
写
-
读
-
重定位
-
删除
-
截断
打开与关闭
打开
-
将指明文件的属性从外存复制到内存打开文件表的一个表目中,索引返回给用户。
-
结构:一般使用二级表:整个系统表和每个进程表
文件保护
三种方法:用户权限表、口令、存取控制
-
访问控制(必须由系统实现)
-
访问控制列表:拥有者、组、其他
-
文件的逻辑结构
在文件的内部,数据逻辑上如何组织起来
(从用户观点出发)
无结构文件(流式文件)
源程序文件,目标代码文件
有结构文件(记录式文件)
-
顺序文件
-
串结构
-
顺序结构
-
-
索引文件
-
索引顺序文件
-
直接文件/散列文件
文件的物理结构
提高文件系统性能的方法
⽬录项(FCB)分解、当前⽬录、磁盘碎⽚整理、块⾼速缓存、磁盘调 度、提前读取、合理分配磁盘空间、信息的优化分布、RAID 技术
I/O管理
I/O设备
-
设备分类:
-
按信息交换单位:块(数据块为单位)设备(传输速率高,可寻址);字符设备(低,不可寻址)
-
按传输速率
-
-
I/O接口 (设备控制器):位于CPU和设备之间
-
I/O端口地址
-
独立编址
-
统一编址(内存映射I/O)
-
I/O控制技术
-
程序直接控制:CPU对外设状态进行循环检查
-
中断驱动:允许IO设备主动打断CPU运行并请求服务
-
直接访问(DMA):在IO设备与内存之间开辟直接的数据交换通路,彻底解放CPU
DMA在所要求的一批数据全部传送结束时才中断CPU
-
通道控制
没有自己的内存,通道所执行的通道程序是放在主机的内存中的
I/O软件层
设备无关性:使应用程序独立于具体使用的物理设备
设备独立性可以提高设备分配的灵活性和设备的利用率
-
逻辑设备:请求使用
-
好处:增加设备分配的灵活性;易于实现I/O重定向(I/O设备可更换但不必改变应用程序)
-
-
物理设备
-
设备独立性软件
-
执行所有设备的公有操作
-
向用户层(或文件层)提供统一接口,
-
缓冲技术
Spooling技术
将独占设备改造成共享设备,可以对独享设备依次共享使用
磁盘管理
磁盘调度算法
FCFS(先来先服务)
最短寻找时间优先
选与当前磁头所在磁道距离最近的磁道
容易造成饥饿
扫描算法(电梯调度算法)
在磁头当前移动方向上,选与当前磁头所在磁道距离最近的磁道
只有不公平问题(对于两端磁道请求),没有饥饿
循环扫描算法
磁头单向移动
(消除了对两端磁道请求不公平的现象)
RAID
RAID 0、1、0+1、1+0?
RAID 0条带化存储,无冗余。
RAID 1普通存储,镜像冗余。
RAID 0+1先条带化再镜像。
RAID 1+0先镜像再条带化。