操作系统的目的:
- 方便性
- 有效性
- 可扩展性
- 开放性
操作系统的作用:
- 作为用户和计算机硬件系统之间的接口
- 作为计算机系统资源的管理者
- 实现了对计算机资源的抽象
多道批处理系统的优缺点:
- 资源利用率高
- 系统吞吐量大
- 平均周转时间长
- 无交互能力
分时系统:
- 目标:交互性和及时相应
- 问题:及时接收、及时处理
- 特征:多路性、独立性、及时性、交互性
实时系统:
- 目标:快速响应、及时响应
- 类实时系统的类型:工业控制系统、信息查询系统、多媒体系统、嵌入式系统
实时任务的类型:
- 周期性实时任务和非周期性实时任务
- 硬实时任务和软实时任务
实时系统与分时系统比较:
- 多路性
- 独立性
- 及时性
- 交互性
- 可靠性
操作系统的基本特征:
- 并发
- 共享
- 虚拟
- 异步
并行性:两个或多个事件在同一时刻发生
并发性:两个或多个事件在同一时间间隔内发生
共享:指系统中的资源可供内存中多个并发执行的进程使用(互斥共享方式、同时共享方式)
虚拟:通过某种技术将一个物理实体变为若干个逻辑上对应的功能时(时分复用技术、空分复用技术)
时分复用技术:使资源的利用率提高。他利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用
空分复用技术:提高存储空间的利用率
异步:进程是以人们不可预知的速度向前推进
程序执行的两种方式:
顺序执行:
- 顺序性
- 封闭性
- 可再现性
并发执行:
- 宏观上并行
- 微观上串行
进程:在系统中能独立运行并作为资源分配的基本单位(拥有资源、调度)
线程:由进程创建的,它是比进程更小的基本单位
PCB:进程控制块
进程的三种基本状态:
- 就绪状态
- 执行状态
- 阻塞状态
创建状态和终止状态
1)创建状态:
创建一个进程要经过以下几步:
- 首先进程申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息
- 然后为该进程分配运行时所必须的资源
- 最后把该进程转入就绪状态并插入就绪队列
引入创建状态是为了保证进程的调度必须是在创建工作完成之后
2)终止状态:
进程的终止状态有以下两步:
- 首先,等待操作系统做善后处理
- 最后将其PCB清零,并将PCB空间返还给系统
当一个进程达到了自然结束点或是出现了无法克服的错误,或是被操作系统终结,则进入终止状态。进入终止状态的进程以后不能再执行,但在操作系统中保存状态码和一些计时统计数据供其他进程收集
1.挂起操作的引入:
1)终端用户的需要:当终端用户在运行程序期间发现有可疑问题,希望暂停程序的运行以便研究其执行情况或做一定的修改
2)父进程请求
3)符合调节的需要
4)操作系统的需要:有时希望挂起某些进程以便检查运行中的资源使用情况或进行记账
2.分别使用挂起原语Suspend和激活原语Active后,在它们的作用下,进程将可能发生以下几种状态的转换:
(1) 活动就绪→静止就绪。
(2) 活动阻塞→静止阻塞。
(3) 静止就绪→活动就绪。
(4) 静止阻塞→活动阻塞。
具有挂起状态的进程状态图:
具有创建、终止和挂起状态的进程状态图:
增加下面几种情况:
(1) NULL→创建
(2) 创建→活动就绪
(3) 创建→静止就绪
(4) 执行→终止
进程同步的概念:是对多个相关进程在执行次序上进行协调,是并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使进程的执行具有可再现性
两种形式的制约关系:
间接相互制约关系(进程互斥)资源竞争使用
直接相互制约关系(进程同步)有顺序问题
进程互斥:在多道程序环境下,每次只允许一个进程对临界资源进行访问
进程同步:多个相关进程在执行次序上的协调
临界资源:互斥资源(如打印机)不只是硬件资源,也有软件资源,一次仅允许一个进程访问的资源
临界区:在进程中涉及到临界资源的程序段
同步机制应遵循的规则:
- 空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程进入自己的临界区,以有效地利用临界资源
- 忙则等待:当已有进程进入临界区是,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
- 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界去,以免陷入“死等”状态
- 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态
信号量机制:
资源数码的整型量S
wait(S){
while(S<=0);
S–
}
signal(S){
S++;//释放了一个资源
}
经典进程同步问题:
生产者-消费者问题
信号量(S):拥有的资源总数
通过PV操作,S为正:表示当前剩余的资源数量
S为负:表示其绝对值---当前在等待唤醒的进程数
P:申请资源。批准,资源-1;不批准(无),阻塞调用进程
V:释放资源。资源+1;唤醒等待进程
处理机调度的层次:
高级调度:作业调度,对象是作业,从外存中调入内存
低级调度:进程调度,从内存中调度,给它分配CPU
中级调度:提高内存利用率和系统吞吐量
1. 处理机调度算法的共同目标
(1) 资源利用率
(2) 公平性
(3) 平衡性
(4) 策略强制执行
2. 批处理系统的目标
(1) 平均周转时间短
(2) 系统吞吐量高
(3) 处理机利用率高
3. 分时系统的目标
(1) 响应时间快
(2) 均衡性
4. 实时系统的目标
(1) 截止时间的保证
(2) 可预测性
作业调度算法:
先来先服务(FCFS)
每次调度就是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机。该进程一直运行到完成或者发生某事件而阻塞后,进程调度程序才将处理及分配给其他进程
短作业优先(SJF)
以作业的长短来计算优先级,作业越短,优先级越高。
优先级调度算法(PSA)
基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据改优先级进行调度的
高响应比优先调度算法(HRRN)
优先权=(等待时间+要求服务时间)/(要求服务时间)=(响应时间)/(要求服务时间)
死锁
-
可重用性资源
(1) 每一个可重用性资源中的单元只能分配给一个进程使用,不允许多个进程共享。
(2) 进程在使用可重用性资源时,须按照这样的顺序:
① 请求资源。如果请求资源失败,请求进程将会被阻塞或循环等待。
② 使用资源。进程对资源进行操作,如用打印机进行打印;
③ 释放资源。当进程使用完后自己释放资源。
(3) 系统中每一类可重用性资源中的单元数目是相对固定的,进程在运行期间既不能创建也不能删除它 -
可消耗性资源
可消耗性资源又称为临时性资源,它是在进程运行期间,由进程动态地创建和消耗的,它具有如下性质:
① 每一类可消耗性资源的单元数目在进程运行期间是可以不断变化的,有时它可以有许多,有时可能为0;
② 进程在运行过程中,可以不断地创造可消耗性资源的单元,将它们放入该资源类的缓冲区中,以增加该资源类的单元数目;
③ 进程在运行过程中,可以请求若干个可消耗性资源单元,用于进程自己的消耗,不再将它们返回给该资源类中; -
可抢占性资源
可把系统中的资源分成两类,一类是可抢占性资源,是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占。 -
不可抢占性资源
另一类资源是不可抢占性资源,即一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。
产生死锁的原因:竞争资源,进程推进顺序不合理
产生死锁的必要条件:
- 互斥条件
- 请求和保持条件
- 不可抢占条件
- 环路条件
预防死锁:
- 破坏“请求和保持条件”,采用“资源一次性分配” 危害:造成资源浪费
- 破坏“不剥夺条件”,采用“可剥夺资源”
- 破坏“环路等待”,采用“资源有序申请”
避免死锁:银行家算法 --Dijkstra
- 银行家算法中的数据结构
(1) 可利用资源向量Available。
(2) 最大需求矩阵Max。
(3) 分配矩阵Allocation。
(4) 需求矩阵Need。 - 银行家算法
设Requesti是进程Pi的请求向量,如果Request i[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:
(1) 如果Request i[j]≤Need[i, j],便转向步骤(2); 否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
(2) 如果Request i[j]≤Available[j],便转向步骤(3); 否则,表示尚无足够资源,Pi须等待。
(3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:
Available[j] = Available[j] - Request i[j];
Allocation[i, j] = Allocation[i, j] + Request i[j];
Need[i, j] = Need[i, j] - Request i[j];
(4) 系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。 - 安全性算法
(1) 设置两个向量:
① 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work := Available;
② Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i] := false;当有足够资源分配给进程时,再令Finish[i] := true。
(2) 从进程集合中找到一个能满足下述条件的进程:
① Finish[i]=false;
② Need[i, j]≤Work[j];
若找到,执行步骤(3),否则,执行步骤(4)。
(3) 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:
Work[j] = Work[j]+Allocation[i, j];
Finish[i] =true;
go to step 2;
(4) 如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。
基于顺序搜索的动态分区分配算法
分页存储管理方式
1. 页面和物理块
(1) 页面。
(2) 页面大小。
地址结构
前一部分为页号P,后一部分为偏移量W,记页内地址。
图中的地址长度为32位,其中011位为页内地址,即每页的大小为4KB;1231位为页号,地址空间最多允许1M页。
若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可以算:
P=INT[A/L],d=p[A]MOD L
INT是整除函数,MOD是取余函数;
设系统页面大小为1KB,设A=2170B,则可以求出:P=2,d=122
页表:每个进程建立一张页面映像表
1、页表项存放物理块号
2、页表长度=页表项长度*分页的个数
3、页表项长度
4、页表项的个数=分页的数目
5、分页的数目=页号+1
6、物理块=页表起始地址+(页号*页表项长度)
EAT:内存的有效访问时间;访问一次内存的时间为t;λ表示查找块表所需的时间;a为命中率
EAT=aλ+(t+λ)(1-a)+t=2t+λ-ta
两级和多级页表
- 两级页表(Two-Level Page Table)
分段存储管理方式(内存没有进行划分·)
-
分段有主程序段MAIN、子程序段X、数据段D及栈段S等
-
段表
而在分段式存储管理系统中,则是为每个分段分配一个连续的分区。进程中的各个段,可以离散地装入内存中不同的分区中。 -
地址变换机构
在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号。若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址。然后,再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号。若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。图4-20示出了分段系统的地址变换过程 -
分页和分段的主要区别 (1) 页是信息的物理单位。 (2) 页的大小固定且由系统决定。 (3) 分页的用户程序地址空间是一维的
虚拟存储器的定义:
对内存空间加以扩充,实际容量成为逻辑容量
特征:
多次性、对换性、虚拟性
虚拟存储器的实现方法
分页请求系统:
1.硬件支持
请求分页的页表机制
缺页中断机构
(1) 在指令执行期间产生和处理中断信号
(2) 一条指令在执行期间可能产生多次缺页中断
地址变换机构
2.实现请求分页的件
请求分段系统:
1.硬件支持
请求分段的段表机制
缺段中断机构
地址变换机构
2.软件支持
页面置换算法:
最佳置换算法:其所选择的被淘汰页面将是以后永不使用的,或许是在最长时间内不再被访问的页面
先进先出FIFO页面置换算法:选择在内存中驻留时间最长的页面予以淘汰
LRU置换算法:选择最近最久未使用的页面
栈:栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号
假定现有一进程,它分有五个物理块,所访问的页面的页面号序列为:
4,7,0,7,1,0,1,2,1,2,6
LFU置换算法:选择在最近时期使用最少的页面作为淘汰页
LRU算法和LFU算法的区别
(1)LRU关键是看页面最后一次被使用到发生调用的时间长短
(2)LFU关键是看一定时间段内页面被使用的频率
抖动与工作集:
多道程序度与处理机的利用率 :
由于虚拟存储器系统能从逻辑上扩大内存,这时,只需装入一个进程的部分程序和数据便可开始运行,故人们希望在系统中能运行更多的进程,即增加多道程序度,以提高处理机的利用率。
产生“抖动”的原因:在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。从而致使每个进程在运行时,频繁地出现缺页。
工作集的基本概念:进程发生缺页率的时间间隔与进程所获得的物理块数有关
工作集的定义:是指在某段时间间隔Δ里,进程实际所要访问页面的集合。
“抖动”的预防方法:
-
采取局部置换策略
当某进程发生缺页时,只能在分配给自己的内存空间内进行置换,不允许从其他进程去获得新的物理块 -
把工作集算法融入到处理机调度中
在调度程序从外存调入作业之前,必须先检查每个进程在内存的驻留页面是否足够多。如果都已足够多,则可以调入新的作业;如果有些进程的内存页面不足,则应首先为那些缺页率居高的作业增加新的物理块,此时将不再调入新的作业。
利用“L=S”准则调节缺页率
L是缺页之间的平均时间,S是平均缺页服务时间
如果是L远比S大,说明很少发生缺页,磁盘的能力尚未得到充分的利用;反之,如果是L比S小,则说明频繁发生缺页,缺页的速度已超过磁盘的处理能力
- 选择暂停的进程
请求分段存储管理方式
请求段表机制:
缺段中断机构
缺段中断机构同样需要在一条指令的执行期间产生和处理中断,以及在一条指令执行期间,可能产生多次缺段中断
不可能出现一条指令被分割在两个分段中,和一组信息被分割在两个分段中的情况
地址变换机构
存取方式;访问字段A;修改位M;存在位P;增补位;外存始址。
缺段终端机制:
需要在一条指令的执行期间产生和处理中断,以及在一条指令执行期间,可能产生多次缺段中断
地址变换机构:
磁盘存储器的性能和调度:
磁盘性能的衡量指标:
(1)磁盘的寻道时间
(2)磁盘I/O速度
(3)磁盘系统的可靠性
磁盘容量=磁头数 x 磁道数 x 每道扇区数 x 每扇子字节数
-
数据的组织和格式
-
磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(Surface),每个盘面上有若干个磁道(Track),磁道之间留有必要的间隙(Gap)。为使处理简单起见,在每条磁道上可存储相同数目的二进制位
-
磁盘的类型
固定头磁盘
移动头磁盘 -
磁盘访问时间
(1)寻道时间
(2)旋转延迟时间
(3)传输时间
早期的磁盘调度算法
先来先服务(FCFS)
优点:公平、简单,每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。 缺点:(1)该算法由于未对寻道进行优化,致使平均寻道时间可能较长;(2)仅适用于请求磁盘I/O的进程数目较少的场合。
最短寻道时间优先(SSTF)
该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种算法不能保证平均寻道时间最短。