扫码关注公众号
进程间的同步是指进程间在逻辑上的相互( )关系.
正确答案是B某些进程为完成同一任务需要分工协作,由于合作的每一个进程都是独立地以不可预知的速度推进,这就需要相互协作的进程在某些协调点上协调各自的工作。为了解决进程间协作关系(直接制约关系),因此引入了进程同步。进程同步主要源于进程合作,是进程间共同完成一项任务时,直接发生相互作用的关系,为进程之间的直接制约关系。在多道环境下,这种进程间在执行次序上的协调是必不可少的。
简述进程同步的四种方法
1、临界区(CriticalSection):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量(Mutex):为协调共同对一个共享资源的单独访问而设计的。互斥量跟临界区很相似,比临界区复杂,互斥对象只有一个,只有拥有互斥对象的线程才具有访问资源的权限。3、信号量(Semaphore):为控制一个具有有限数量用户资源而设计。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。互斥量是信号量的一种特殊情况,当信号量的最大资源数=1就是互斥量了。4、事件(Event):用来通知线程有一些事件已发生,从而启动后继任务的开始。
进程同步是进程与进程间的间接制约问题,进程互斥是进程与进程间的直接制约问题
正确答案是B进程之间存在直接制约关系(即同步问题)和间接制约关系(即互斥问题);同步问题是存在逻辑关系的进程之间相互等待所产生的制约关系,互斥问题是相互逻辑关系的进程竞争使用资源所发生的制约关系。
设有一缓冲池 P , P 中含有 20 个可用缓冲区,一个输入进程将外部数据读入 P ,另有一个输出进程将 P 中数据取出并输出。若进程每次
与生产者和消费者问题一样,只是empty的初始值设为20即可参考代码:Semaphoreempty=20;//空缓冲区的大小Semaphorefull=0;//有数据的缓冲区的大小Semaphoremutex=1;//互斥信号量intin=0,out=0;Input(){while(true){produceaniteminnextp;//产生一个商品暂存在nextp中wait(empty);wait(mutex);p[in]=nextp;in=(in+1)%20;signal(mutex);signal(full);}}Output(){while(true){wait(full);wait(mutex);nextc=p[out];out=(out+1)%20;signal(mutex);signal(empty);}}