4.4 进程的相互制约关系
在多进程系统中,诸进程可以并发执行,并以各自独立的速度向前推进。但由于它们共享系统资源并协同,因而使进程之间产生了错综复杂的相互制约关系。
4.4.1 资源共享
资源共享是当代计算机系统的一个重要特征。现代计算机系统中的硬件资源( CPU 、主存、外部设备)和软件资源(系统程序、数据结构、库、服务性程序等)不再只为单个用户独占,而可为多个用户共同使用。对资源的共享有下面两种可能的方式。
1. 由系统进行统一分配
进程间的相互制约关系,有一种情况是由于共享系统资源而产生制约的。在这种情况下,各进程对共享资源的使用是通过系统来协调的。凡需使用共享资源的进程,先向系统提出申请,然后由系统根据资源情况,按一定的策略来实施分。通常,系统中的硬件资源采用这种方式分配。比如,进程对处理机的共享是靠操作系统的进程调度程序来协调的。又如,当系统采用分页存储管理技术时,各进程对主存页面的共享是靠操作系统的分页存储管理程序来协调的。当进程 A 向系统要求资源 R ,但得不到满足时,资源管理程序将其状态改为“等待”,并标明等待原因是等资源 R ;反之,当另一进程释放资源 R 时,资源管理程序唤醒等资源 R 的进程,使其转为“就绪”状态。
2. 由程序自行使用
系统有些资源无需由系统分配,而由程序自行使用,例如某些数据基、变量、队列等。为了使各程序不致因争夺资源而发生混乱,系统提供一种同步机构。各程序利用这些同步机构使用共享资源,这样能互相协地共享资源,很好地解决诸进程由于共享资源可能引起相互制约关系,以保证资源的完整性。
4.2.2 进程合作
为了尽快地完成一个任务,在可能的情况下,往往将它分成若干并发执行的进程。这些进程之间必然共享一定的数据信息,必有一定的逻辑联系,这些进程即为合作进程。为了正确、有效地完成这一共同任务,这些合作进程需要协同操作,它们之间也存在着直接的相互制约关系。
这种直接的相互制约关系必然导致进程之间按一定的方式进行信息传递,这就是进程通信的关系。 |