A.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
B.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
C.互斥条件:一个资源每次只能被一个进程使用。
D.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
A.必须互斥进入临界区访问临界资源
B.可以同时进入临界区间访问临界资源
C.允许n个进程进入临界区访问临界资源
D.至多允许两个进程同时访问临界资源
假设当前处于非抢占调度策略,进程只有两种方式可以放弃CPU,一个是主动调用系统调度函数sysnc(),此时进程主动放弃CPU;另一个方式是当进程执行I/O操作时,系统将调度下一个进程。试分析如下三种进程对,何时会出现不符合下列原则,并说明原因: 1)空闲则人;2)有限等待;3)保证互斥。 第一种: Threadl(){ sysnc();—— ——critical section—— g=g+b; f=g—a; //临界区不能被打断 ——critical section—— } Thread2(){ ——critical section—— g=g+b; f=g—a; ——critical section—— } 第二种 Threadl(){ sysnc(); ——critical section—— g=g+b; f=g—a; ——criticaI section—— } Thread2(){ ——critical section—— g=g+b; f=g—a; ——critical section—— sysnc(); } 第三种; Threadl(){ sysnc(); ——critical section—— g=g+b; fstring=printf(…);//调用I/O; f=g—a; ——critical section—— } Thread2(){ Sysnc() ——critical section—— g=g+b; f=g—a; ——critical section—— sysnc(); }