当前位置:首页 > 操作系统习题1(4)
习题5
1.操作系统对于资源的分配有哪两种基本方式?
答:操作系统对资源进行分配的方法主要有静态分配和动态分配两种。静态分配指在作业级实施的资源分配,分配给作业的资源伴随作业的整个运行过程,当作业完成时才被释放,因此利用率很低。动态分配指在进程级实施的资源分配,当进程请求资源时分配资源,进程使用完毕后立即释放,所以利用率很高。
2.什么是死锁?死锁产生的必要条件有哪些?操作系统如何规避死锁?
答:死锁是一种系统状态,在死锁状态下,系统中所有的进程都处于阻塞态,每个处于阻塞的进程都占有了其它阻塞进程所需要的资源或条件,而它所占用的资源或条件在其阻塞时不能被剥夺。因此,解除它们阻塞的事件或条件永远也不会发生。
死锁产生的必要条件有以下4个:
1.互斥条件。并发进程所请求的资源是互斥使用的独占资源,即一次只能被一个进程使用的资源,具有排它性。
2.不可剥夺条件。进程所占有的资源在没有使用完之前不能被其它进程强行占用,只能由占有该资源的进程自己释放。
3.部分分配条件。进程对于自己所需要的资源每次只请求一部分,操作系统允许部分资源的分配。 4.环路条件。系统中各并发进程对于资源的占有和请求形成环路,即请求箭头方向和占有箭头方向形成环路。
操作系统规避死锁的方法有3种:预防、避免、检测与恢复。
死锁预防就是事先预防死锁的发生。它要求操作系统采取某种策略,限制并发进程对资源的请求,从而使死锁的必要条件在任何时候都不会满足的一种静态解决方法。
死锁避免是指操作系统在动态分配过程中对每一次的分配都要采取某种策略去判断一下当前的分配有没有导致死锁的可能性,没有则实施分配,有则拒绝分配,从而动态地避免死锁的产生,是动态规避死锁的方法。
死锁的检测与恢复是指系统设置专门机构,在死锁发生时该机构能够及时检测出死锁发生的位置和原因,并能够通过外力破坏死锁产生的一个必要条件,从而使并发进程能够从死锁状态中恢复出来。
3.静态分配与有序分配分别破坏的是死锁必要条件中的哪个条件?
4.如果系统中有8个进程,它们对于某类独占资源的需求皆为10个,操作系统对于资源的分配采
用需要多少分配多少的方式。试问该资源最少需要多少系统才不会产生死锁?
解:设最小资源数为M,则M=8*(10-1)+1=73
∴当最小资源数为73时小题不会产生死锁。
答:静态分配破坏死锁必要条件中的部分分配条件;有序分配分别破坏的是死锁必要条件中的环路条件。
1
5.设某系统有R1、R2、R3三种资源,在T0时刻P1、P2、P3、P4进程对资源的占有和需求情况如
表错误!未找到引用源。-1所示,设系统剩余的可用资源向量为(2,1,2)。
表错误!未找到引用源。-1 进程对资源的占有和需求情况
进程 P1 P2 P3 P4 R1 3 6 3 4 最大需求 R2 2 1 1 2 R3 2 3 4 2 R1 1 4 2 0 已分配 R2 0 1 1 0 R3 0 1 1 2 ⑴.将系统中各种资源总数和此刻各进程对各资源的需求数目用向量或矩阵表示出来。 解:系统资源总数=已分配数+剩余数=(1+4+2+2, 1+1+1, 1+1+2+2)=(9,3,6)
剩余需求=最大需求-已分配数 剩余需求矩阵:
进程 P1 P2 P3 P4
⑵.如果此刻P1、P3都发出资源请求向量(1,0,2),系统应该如何实施分配?为什么?如果可以分配,请给出可以实施分配的一种安全序列。
答:P1、P3都不能分配。
∵如果对P1实施了分配,则系统剩余资源数为(1,1,0),该剩余资源数不能满足任何一个进程的剩余需求,因而找不到一个安全序列存在。
如果对P3实施了分配,则系统剩余资源数为(1,1,0),该剩余资源数同样不能满足任何一个进程的剩余需求,因而也找不到一个安全序列存在。
∴所以不能对它们实施分配。
此时只能对P2进行分配,因为当前的剩余资源数可以保证P2完成,而P2完成所释放的资源就可以至少得到下面的安全序列{P2,P1,P3,P4}。
6.作业调度属于哪一级调度?作业处于运行态时表示该作业占有了处理机吗?
7.进程调度或线程调度属于哪一级调度?进程处于运行态时表示该作业占有了处理机吗?
答:进程调度或线程调度属于微观调度或低级调度,当进程或线程处于运行态时表示占有了CPU。
2
剩余需求 R1 2 2 1 4 R2 2 0 0 2 R3 2 2 3 0 答:作业调度属于宏观调度或高级调度,当作业处于运行态时只表示该作业已经作为相应的进
程插入就绪队列,获得竞争CPU的权限,并不表示一定占有CPU。
8.什么是进程上下文?操作系统在进行进程上下文切换时需要做哪些工作?
答:进程上下文指发生进程切换时的运行现场,它由进程的正文段、数据段、CPU的寄存器以及有关的数据结构组成。寄存器包括继续执行的代码段寄存器、指令地址寄存器、处理机状态寄存器、控制寄存器以及堆栈指针寄存器等等;数据结构包括进程PCB在内的所有与当前即将释放处理机和即将获得处理机的进程有关的管理和控制用表、队列、数组等等。
操作系统在进行进程上下文切换时需要对释放处理机的进程进行善后处理,将当前运行结束处的现场和状态加以保护;同时还要对获得处理机的进程做运行前的准备工作,将其前一次运行的现场加以恢复后才能投入运行。
9.在单道批处理系统中,有下列3个作业。请分别用先来先服务调度算法和短作业优先算法进
行调度。设系统开工时间为10.00,单位为“时”。 ⑴.FIFO算法填表
作业 提交时间 执行时间 开始时间 完成时间 周转时间 带权周转时间 1 2 3 10.00 10.10 10.25 2.00 1.00 0.25 10.00 12.00 13.00 12.00 13.00 13.25 2.00 2.90 3.0 1 2.9 12 平均周转时间 t=(2+2.9+3)/3=2.63 平均带权周转时间 w=(1+2.9+12)/3=5.3 ⑵.SJF算法填表
作业 提交时间 执行时间 开始时间 完成时间 周转时间 带权周转时间 1 2 3 10.00 10.10 10.25 2.00 1.00 0.25 10.00 12.25 12.00 12.00 13.25 12.25 2.00 3.15 2.00 1 3.15 8 平均周转时间 t=(2+3.15+2)/3=2.38 平均带权周转时间 w=(1+3.15+8)/3=4.05 ⑶.将两种算法进行比较。
答:由上述计算结果可知,针对该作业序列而言,SJF算法有更短的平均周转时间和平均带权周转时间,所以SJF更好。
10.有5个批处理作业A、B、C、D、E在第一分钟内依次到达,其预计的运行时间分别为:2、6、
3、8、4分钟,如果系统采用时间片轮转算法,设时间片为1分钟时。 ⑴.如果下面每格代表1分钟时间间隔,将每分钟运行的作业名填入格内。 ⑵.用箭头标志各作业完成的地方。
A B C D E A B C D E B C D E B D E B D B D D D ↑ ↑ ↑ ↑ ↑ A=6 C=12 E=17 B=20 D23 ⑶.求此时系统的平均周转时间。
平均周转时间T=(6+12+17+20+23)/5=15.6
3
11.Unix中进程调度采用的是什么方法?试总结Unix对于进程的优先数分别采用静态设置和动态
计算两种方法的目的、对象、优先数的值、产生优先数的时机和效果。
答:Unix进程调度算法采用基于优先数的多级反馈轮转算法,优先数越小,优先权越高。 Unix采用静态设置优先数的目的是保证系统资源能够得到充分利用。 静态设置优先数的对象是针对系统中每一个即将进入睡眠的进程。 时机为在由运行态转为睡眠态时,根据其睡眠原因为其赋予不同的优先数。
静态优先数的值:若请求的是系统紧俏资源则赋予高优先权、低优先数,与系统资源无关的诸如进程之间的通信或等待消息则赋予低优先权、最高优先数。
Unix采用动态优先数计算的目的是保证系统中所有用户态进程能够均衡地占有CPU。 动态计算优先数的进程为所有处于用户态的进程,每隔一定的时间占有CPU的进程优先数增加,优先级减少;而等待CPU的进程优先数减少,优先级增加,从而达到负反馈的调度效果效果。
4
共分享92篇相关文档