进程互斥与同步

1.解释并发与并行,并说明两者关系。

       并发:交替做不同事情的能力,

       并行:同时做不同事情的能力,

       并发和并行都可以处理“多任务”,二者的主要区别在于是否是“同时进行”多个的任务。

 

2.进程间有哪几种关系?分别要采取什么策略?

    1.关系:进程之间存在着竞争关系(间接制约关系)和协助关系(直接制约关系)。

    2.策略:竞争关系会引发两个控制问题:一是死锁,二是饥饿。解决死锁最简单的策略是FCFS资源分配策略,向并发进程提供锁机制,在使用共享资源之前表达互斥要求,系统需要保证诸进程能互斥地访问共享资源,既要解决死锁问题,又要解决饥饿问题。进程互斥是解决进程间竞争关系(间接制约关系)的手段。协关系:进程同步是协作进程之间相互等待对方消息或信号的协调关系称为进程同步,进程互斥也是一种特殊的进程同步关系,即逐次使用进程互斥关系资源,也是对进程使用资源的次序的一种协调。

     

3.为什么说进程的互斥也是一种同步?

       进程互斥也是一种特殊的进程同步关系,即逐次使用进程互斥关系资源,也是对进程使用资源的次序的一种协调。在操作系统中,信号量、锁、管理、消息及其他软硬件机制都可被看做由进程和线程请求与释放的资源,多数同步机制主要用于内核层,有些同步机制也可用于更高层及应用程序。

   

4.解释死锁与“饥饿”,并说明两者关系。

     死锁:因为进程竞争资源或推进顺序不当而有可能造成的一种僵局,即系统中两个或多个程序无限期的等待永远不会发生的条件,这些进程都不能向前推进。

     饥饿:指系统中的每一个资源占用者都在有限的时间内释放它所占用的资源,但是仍然存在申请者永远得不到资源的现象。

 

5.什么叫做临界区?如何解决进程对临界资源的访问冲突?

    临界区:并发进程中与共享变量有关的程序段。

    解决方法:(1)一次至多只有一个进程进入临界区内执行。

                      (2)如果已有进程在临界区中,试图进入此临界区的其他进程等待。

                      (3)进入临界区内的进程应在有限时间内退出,以便等待队列中的一个进程进入。

 

6.信号量的物理意义是什么?

    信号量的物理意义如下:
                    (1) 若信号量s为正值,则该值等于在封锁进程之前对信号量s可施行的P操作数,亦即等于s所代表的实际使用的物理资源个数.
                    (2) 若信号量s为负值,则其绝对值等于登记排列在该信号量s队列之中等待进程的个数,亦即恰好等于对信号量s实施P操作而被封锁起来并进入信号量s队列的进程数.
                    (3) 通常P操作意味着请求一个资源,V操作意味着释放一个资源.在一定条件下,P操作代表挂起进程操作,而V操作代表唤醒被挂起进程的操作.

 

7.理解五个哲学家吃面问题,并能盲写出伪代码。

                       semaphore fork[5];

                           for(int i=0; i<5;i++)

                                fork[i]=1;

                      cobegin

                            process philosopher_i( ){

                                       while(ture){

                                                      think( );

                                                       P(fork[i]);

                                                       P(fork[(i+10%5]);

                                                                eat();

                                                       V(fork[i]);

                                                       V(fork[(i+10%5]);

                                                            }

                                           }

 

8.一个超市有n个顾客购物,只有一个收银员,试用信号量P、V操作描述顾客进程和收银员之间的关系。写伪代码

                      int counter=0;  in=0;out=0 ; mutex=1;

                           counter=counter+in;

                       process  consumer(void){

                                while(true){

                                     if(counter>0){

                                           P(mutex);

                                             /*临界区*/

                                           V(mutex);

                                     out-=out;

                                     counter=counter-out;

                                          }

                                       else

                                            V(mutex);

                                  }  }

                     

 

 

posted @ 2019-04-23 16:24  星瘾  阅读(603)  评论(0编辑  收藏  举报