- 1
- 0
- 约1.07万字
- 约 29页
- 2017-05-11 发布于湖北
- 举报
计算机操作系统整合版精要
计算机操作系统
死锁的四个条件:
互斥条件
请求和保持条件
不可抢占条件
循环等待条件
二、页式管理中块表是干什么的,存的是什么,起什么作用,不用他为什么会变慢?
干什么的/目的:为了提高地址变换速度
存的是什么:当前访问的那些页表项
作用:实现从页号到物理块号的地址映射
不用他为什么会变慢:由于页表是存放在内存中的,这使得CPU在每存取一个数据时,都要两次访问内存。第一次访问内存中的页表,从中找到指定页的物理块号,再将块号与业内偏移量W拼接,以形成物理地址。第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址中写入数据)。因此,采用这种方式将是计算机的处理速度降低近1/2.正是由于引进了块表,CPU访问数据所耗费的时间明显减少。
三、有了进程为什么还要线程?
如果说,在OS中引入进程的目的是为了使多个程序能并发执行,以??高资源利用率和系统吞吐量。那么,在操作系统中在引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
四、进程调度
调度算法
First come first served (FCFS) (先来先服务调度)
Shortest job first (SJF) (短作业优先调度)
Priority scheduling (优先级调度)
Round robin (RR) (时间片轮转调度)
SJF可证明为最佳调度算法
SJF调度算法支持抢占和非抢占调度算法
适合于长程调度,不太适合短程调度
难以估计CPU脉冲时间
该算法存在的问题:饥饿
低优先权的进程可能永远无法执行
解决办法:老化
随着时间的推进,进程的优先权逐渐提高
考试要求:最终算平均周转时间:什么时候来,什么时候结束。
五、银行家算法
银行家算法中的数据结构
(1) 可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果Available[j]=K,则表示系统中现有Rj类资源K个。
(2) 最大需求矩阵Max。这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。
(3) 分配矩阵Allocation。这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。
(4) 需求矩阵Need。这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。
Need[i,j]=Max[i,j]-Allocation[i,j]
2. 银行家算法
设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:
(1) 如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
(2) 如果Requesti[j]≤Available[j],便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。
(3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:
Available[j]∶=Available[j]-Requesti[j];
Allocation[i,j]∶=Allocation[i,j]+Requesti[j];
Need[i,j]∶=Need[i,j]-Requesti[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]; 若找到,
原创力文档

文档评论(0)