(2)优先级调度算法
(3)时间片轮转法(每个作业获得相同的2分钟长的时间片) 按次序A B C D E A B D E A B E A E A轮转执行
20.有一个四道作业的操作系统,若在一段时间内先后到达6个作业,它们的提交和估计运行时间由下表给出:
系统采用SJF调度算法,作业被调度进入系统后中途不会退出,但作业运行时可被更短作业抢占。(1)分别给出6个作业的执行时间序列、即开始执行时间、作业完成时间、作业周转时间。(2)计算平均作业周转时间。
25.
每个作业运行将经过两个阶段:作业调度(SJF算法)和进程调度(优先数抢占式)。另外,批处理最多容纳2道作业,更多的作业将在后备队列等待,优先级高进入内存执行。
(1) 10:00,作业A到达并投入运行。
(2) 10:20,作业B到达且优先权高于作业A,故作业B投入运行而作业A在就绪队
列等待。 (3) 10:30,作业C到达,因内存中已有两道作业,故作业C进入作业后备队列等待。 (4) 10:50,作业B运行结束,作业D到达,按SJF短作业优先算法,作业D被装入 内存进入就绪队列。而由于作业A的优先级高于作业D,故作业A投入运行。 (5) 11:10,作业A运行结束,作业C被调入内存,且作业C的优先级高于作业D, 故作业C投入运行。
(6) 12:00,作业C运行结束,作业D投入运行。 (7) 12:20,作业D运行结束。
各作业周转时间为:作业A 70,作业B 30,作业C 90,作业D 90。平均作业周转时间为70分钟。
第三章
一、简答题
3.解释并发性与并行性
答:计算机操作系统中把并行性和并发性明显区分开,主要是从微观的角度来说的,具体是指进程的并行性(多处理机的情况下,多个进程同时运行)和并发性(单处理机的情况下,多个进程在同一时间间隔运行的)。
9.什么是临界区和临界资源?临界区管理的基本原则是什么? 并发进程中与共享变量有关的程序段称为临界区。共享变量所代表的资源叫做临界资源,即一次仅供一个进程使用的资源。
(1) 一次至多有一个进程进入临界区内执行;
(2) 如果已有进程在临界区内,试图进入此临界区的其它进程应等待;
(3) 进入临界区的进程应在有限时间内退出,以便让进程等待队列中的一个进程进入。
24.什么是死锁?什么是饥饿? 所谓死锁是指在多道程序系统中,一组进程中的每一个进程都无限期等待被该组进程中的另一个进程所占有且永远不会释放的资源。 例如:
1、桌子上有慢慢一桌子的美食,但是只有一双筷子。 2、甲拿了一根,然后在找另一根。 3、乙拿了一根,然后也在找另一根。
4、因为他们都掌握了对方必需的资源,导致最后他们俩谁都吃不到美食。
饥饿指的是等待时间已经影响到进程运行,此时称为饥饿现象。如果等待时间过长,导致进程使命已经没有意义时称该进程被饿死。 例如:
1、小明要告诉妈妈明天开家长会。
2、小明妈妈因为工作太忙,在公司加班,没有回家。
3、于是第二天,小明的妈妈就错过了家长会。(“饿死”)
4、其实小明的妈妈没有出现“死锁”。只是小明的优先级过低,不如工作重要。
25.试述产生死锁的必要条件。 (1) 互斥条件;
(2) 占有和等待条件; (3) 不剥夺条件; (4) 循环等待条件。 /*tips*/
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 死锁产生的原因及预防死锁的方法
进程推进顺序不当、PV操作使用不妥、同类资源分配不均或对某些资源的使用未加限制等,不仅与系统拥有的资源数量有关,而且与资源分配策略、进程对资源的使用要求以及并发进程的推进顺序有关。
(1) 破坏条件1(互斥条件);
(2) 破坏条件2(占有和等待条件); (3) 破坏条件3(不剥夺条件); (4) 破坏条件4(循环等待条件)。
32.一台计算机有8台磁带机.他们有N个进程竞争使用,每个进程可能需要3台磁带机.请问N为多少时,系统没有死锁的危险? N=1或2或3.
当N=3时,磁带机的分配为:2个进程是3个,1个进程是2个,所以前面的两个进程用完就可以释放出来,如果N=4时,可能出现每个进程都分配2个磁带机,这样,每一个进程都要等待一个磁带机,可是磁带机已经分配光了,所以每个进程都在等待,就造成了死锁了。 二、应用题 2、
答:不同
(1):初值为1,范围为[-n+1,1];(2):初值为m,范围为[-n+m,m]。 23.
31.
答案1:
(1) 将独木桥的两个方向分别标记为A和B。用整型变量countA和countB分别
表示A、B方向上已在独木桥上的行人数。初值为0。需要设置三个初值都为1的互斥信号量:SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现对独木桥的互斥使用。 (2)
A方向行人过桥: Begin
P(SA);
countA=countA+1;