"本章主要探讨的是在共享存储器系统中的并发控制,特别是关于互斥与同步的主题。在这样的系统中,进程通过共享数据结构或存储区进行通信,分为基于共享数据结构和共享存储区的两种通信方式。并发执行的进程之间存在同步和互斥两种制约关系。同步是指进程间为了共同完成任务而需要相互协作,而互斥则是指多个进程对同一资源的竞争,只允许一个进程使用资源,其他进程必须等待。为了描述进程执行的先后顺序,引入了前趋图的概念,即有向无环图(DAG),其中结点代表程序段或进程,边表示执行的依赖关系。前趋图有助于理解进程的同步需求。此外,章节还提到了进程的互斥,定义为最多只有一个进程能访问临界资源,其他进程在资源释放之前不能进入,以防止数据不一致和时间相关的错误。最后,提到了临界资源,如打印机等,这些资源需要通过特定的机制来确保互斥访问。"
在并发控制中,同步和互斥是多进程环境中的核心问题。同步是指多个进程在执行过程中,为了协同完成任务,需要在特定点上进行通信和协调。例如,进程可能需要等待其他进程完成某个操作或者传递必要的数据才能继续。这种合作关系是自愿的,以实现预定的目标。
另一方面,互斥是进程间的一种强制约束,通常是为了保护共享资源免受并发访问的影响。在共享存储器系统中,如果多个进程试图同时访问临界资源,如打印机或内存区域,就可能发生数据冲突,导致错误的结果。因此,操作系统提供了互斥机制,如信号量和管程,来确保在任何时候只有一个进程可以访问临界资源。
信号量是一种同步原语,它是一个整型变量,用于控制对公共资源的访问。当一个进程想要访问临界资源时,它会尝试减少信号量的值,如果值为正,则进程可以继续,否则必须等待。当进程完成资源使用后,会增加信号量的值,释放资源。
管程是另一种高级的同步机制,它提供了一个结构化的环境来管理共享资源。管程包含一个或多个进程可以请求的资源,以及一系列的条件变量,用于进程之间的等待和唤醒操作。通过管程,可以更清晰地控制并发进程的执行顺序,避免死锁和活锁等问题。
进程通信是实现同步和互斥的关键手段,它允许进程间交换信息,协调执行。在共享存储器系统中,进程可以直接读写共享的数据结构或存储区来进行通信,但这种通信方式需要谨慎处理,以防止竞态条件和数据不一致性。
共享存储器系统中的并发控制着重解决如何在多个进程共享资源时保证数据的一致性和正确性。通过同步和互斥机制,操作系统能够有效地管理进程间的协作和资源访问,确保系统的稳定和高效运行。