操作系统的目的:
操作系统的作用:
作为用户和计算机硬件系统之间的接口
作为计算机系统资源的管理者
实现了对计算机资源的抽象
多道批处理系统的优缺点:
资源利用率高
系统吞吐量大
平均周转时间长
无交互能力
分时系统:
目标:交互性和及时相应
问题:及时接收、及时处理
特征:多路性、独立性、及时性、交互性
实时系统:
目标:快速响应、及时响应
类实时系统的类型:工业控制系统、信息查询系统、多媒体系统、嵌入式系统
实时任务的类型:
实时系统与分时系统比较:
操作系统的基本特征:
共享:指系统中的资源可供内存中多个并发执行的进程使用(互斥共享方式、同时共享方式)
虚拟:通过某种技术将一个物理实体变为若干个逻辑上对应的功能时(时分复用技术、空分复用技术)
分时复用技术:使资源的利用率提高。他利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用
程序执行的两种方式:
顺序执行:
顺序性
封闭性
可再现性
并发执行:
宏观上并行
微观上串行
进程:
在系统中能独立运行并作为资源分配的基本单位(拥有资源、调度)
线程:
PCB:进程控制块
创建状态和终止状态
1)创建状态:
创建一个进程要经过以下几步:
首先进程申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息
然后为该进程分配运行时所必须的资源
最后把该进程转入就绪状态并插入就绪队列
引入创建状态是为了保证进程的调度必须是在创建工作完成之后
2)终止状态:
进程的终止状态有以下两步:
首先,等待操作系统做善后处理
最后将其PCB清零,并将PCB空间返还给系统
当一个进程达到了自然结束点或是出现了无法克服的错误,或是被操作系统终结,则进入终止状态。进入终止状态的进程以后不能再执行,但在操作系统中保存状态码和一些计时统计数据供其他进程收集
1.挂起操作的引入:
1)终端用户的需要:当终端用户在运行程序期间发现有可疑问题,希望暂停程序的运行以便研究其执行情况或做一定的修改
2)父进程请求
3)符合调节的需要
4)操作系统的需要:有时希望挂起某些进程以便检查运行中的资源使用情况或进行记账
2.原语Suspend和激活原语Active
分别使用挂起原语Suspend和激活原语Active后,在它们的作用下,进程将可能发生以下几种状态的转换:
(1) 活动就绪→静止就绪。
(2) 活动阻塞→静止阻塞。
(3) 静止就绪→活动就绪。
(4) 静止阻塞→活动阻塞。
具有挂起状态的进程状态图:
具有创建、终止和挂起状态的进程状态图:
增加下面几种情况:
(1) NULL→创建
(2) 创建→活动就绪
(3) 创建→静止就绪
(4) 执行→终止
进程同步
概念:是对多个相关进程在执行次序上进行协调,是并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使进程的执行具有可再现性
两种形式的制约关系:
进程互斥:在多道程序环境下,每次只允许一个进程对临界资源进行访问
临界资源:
互斥资源(如打印机)不只是硬件资源,也有软件资源,一次仅允许一个进程访问的资源
临界区:在进程中涉及到临界资源的程序段
空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程进入自己的临界区,以有效地利用临界资源
忙则等待:当已有进程进入临界区是,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界去,以免陷入“死等”状态
让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态
信号量机制:
wait(S){
while(S<=0);
S–
}
signal(S){
S++;//释放了一个资源
}
经典进程同步问题:
生产者–消费者问题
信号量(S):拥有的资源总数
V:释放资源。资源+1;唤醒等待进程
处理机调度的层次:
1. 处理机调度算法的共同目标
(1) 资源利用率
(2) 公平性
(3) 平衡性
(4) 策略强制执行
2. 批处理系统的目标
(1) 平均周转时间短
(2) 系统吞吐量高
(3) 处理机利用率高
3. 分时系统的目标
(1) 响应时间快
(2) 均衡性
4. 实时系统的目标
(1) 截止时间的保证
(2) 可预测性
作业调度算法:
先来先服务(FCFS)
每次调度就是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机。该进程一直运行到完成或者发生某事件而阻塞后,进程调度程序才将处理及分配给其他进程
短作业优先(SJF)
基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据改优先级进行调度的
优先权=(等待时间+要求服务时间)/(要求服务时间)=(响应时间)/(要求服务时间)
死锁
可重用性资源
(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都满足,则表示系统处于安全状态;否则,系统处于不安全状态。
基于顺序搜索的动态分区分配算法
分页存储管理方式
地址结构
图中的地址长度为32位,其中011位为页内地址,即每页的大小为4KB;1231位为页号,地址空间最多允许1M页。
若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可以算:
P=INT[A/L],d=p[A]MOD L
设系统页面大小为1KB,设A=2170B,则可以求出:P=2,d=122
页表
3、页表项长度
6、物理块=页表起始地址+(页号*页表项长度)
EAT:内存的有效访问时间;访问一次内存的时间为t;λ表示查找块表所需的时间;a为命中率
两级和多级页表
分段存储管理方式(内存没有进行划分·)
-
分段有主程序段MAIN、子程序段X、数据段D及栈段S等
段表
而在分段式存储管理系统中,则是为每个分段分配一个连续的分区。进程中的各个段,可以离散地装入内存中不同的分区中。
地址变换机构
在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号。若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址。然后,再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号。若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。图4-20示出了分段系统的地址变换过程
分页和分段的主要区别 (1) 页是信息的物理单位。 (2) 页的大小固定且由系统决定。 (3) 分页的用户程序地址空间是一维的
虚拟存储器的定义:
特征:
分页请求系统:
缺页中断机构
(1) 在指令执行期间产生和处理中断信号
(2) 一条指令在执行期间可能产生多次缺页中断
地址变换机构
2.实现请求分页的件
请求分段系统:
1.硬件支持
请求分段的段表机制
缺段中断机构
地址变换机构
页面置换算法:
最佳置换算法:其所选择的被淘汰页面将是以后永不使用的,或许是在最长时间内不再被访问的页面
先进先出FIFO页面置换算法:选择在内存中驻留时间最长的页面予以淘汰
LRU置换算法:选择最近最久未使用的页面
栈:栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号
假定现有一进程,它分有五个物理块,所访问的页面的页面号序列为:
4,7,0,7,1,0,1,2,1,2,6
LFU置换算法:选择在最近时期使用最少的页面作为淘汰页
LRU算法和LFU算法的区别
(1)LRU关键是看页面最后一次被使用到发生调用的时间长短
(2)LFU关键是看一定时间段内页面被使用的频率
原文地址:https://blog.csdn.net/chenyu_Yang/article/details/134748057
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25638.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!