工艺应用 Synchronization:操作系统中的关键部分问题
什么是流程 Sync讴歌?
工艺应用 Sync汉化 是以任何两个进程都无法访问相同的共享数据和资源的方式协调进程执行的任务。
在多进程系统中,当多个进程一起运行,并且多个进程同时尝试访问同一个共享资源或数据时,尤其需要它。
这会导致共享数据的不一致。因此,当其他进程访问相同的共享数据时,一个进程所做的更改不一定能反映出来。为了避免这种类型的数据不一致,进程之间需要相互同步。
如何处理 Synchronization 有效吗?
例如,进程 A 正在更改内存位置中的数据,而另一个进程 B 正在尝试从 同 内存位置。第二个进程读取的数据很有可能是错误的。
程序的各部分
以下是关键部分的四个基本要素:
- 参赛部分: 它是决定特定进程的进入的进程的一部分。
- 关键部分: 这部分允许一个进程进入和修改共享变量。
- 退出部分: 退出部分允许在进入部分等待的其他进程进入关键部分。它还检查是否应通过此部分移除已完成执行的进程。
- 剩余部分: 代码中除关键部分、入口部分和出口部分之外的所有其他部分称为剩余部分。
什么是临界区问题?
临界区是一段代码,在特定时间点,仅允许一个进程访问。该段由需要其他进程访问的共享数据资源组成。
- 进入临界区由wait()函数处理,用P()表示。
- 临界区的退出由 signal()函数控制,表示为 V()。
在临界区中,只能执行一个进程。其他进程在等待执行其临界区时,需要等到当前进程执行完毕。
临界区规则
临界区必须执行所有三条规则:
- 互斥: 互斥是一种特殊类型的二进制信号量,用于控制对共享资源的访问。它包含优先级继承机制,以避免扩展优先级反转问题。一次只能有一个进程在其临界区中执行。
- 进展情况: 当没有人在临界区而有人想进入时,使用此解决方案。然后,那些不在其提醒区中的进程应该在有限的时间内决定谁应该进入。
- 等待限制: 当一个进程请求进入临界区时,可以进入其临界区的进程数量是有特定限制的。因此,当达到限制时,系统必须允许该进程请求进入其临界区。
关键部分的解决方案
进行中 Sync同步化,临界区起主要作用,因此问题必须得到解决。
以下是一些广泛使用的解决临界区问题的方法。
彼得森解决方案
Peterson 解决方案是解决临界区问题的广泛使用的方法。该算法是由计算机科学家 Peterson 开发的,因此被称为 Peterson 解决方案。
在此解决方案中,当一个进程处于临界状态时,另一个进程将只执行其余代码,反之亦然。此方法还有助于确保在特定时间只有一个进程在临界区运行。
例如:
PROCESS Pi
FLAG[i] = true
while( (turn != i) AND (CS is !free) ){ wait;
}
CRITICAL SECTION FLAG[i] = false
turn = j; //choose another process to go to CS
- 假设有 N 个进程 (P1、P2、… PN),每个进程在某个时间点都需要进入临界区
- 维护一个大小为 N 的 FLAG[] 数组,默认情况下该数组为 false。因此,每当进程需要进入临界区时,它都必须将其标志设置为 true。例如,如果 Pi 想要进入,它将设置 FLAG[i]=TRUE。
- 另一个名为 TURN 的变量表示当前等待进入 CS 的进程号。
- 在退出时进入临界区的进程会将TURN更改为就绪进程列表中的另一个数字。
- 例如:turn 为 2,则 P2 进入临界区,退出时 turn=3,因此 P3 跳出等待循环。
Sync认证硬件
有时临界区的问题也可通过硬件解决。有些操作系统提供锁定功能,进程在进入临界区时获取锁定,离开临界区后释放锁定。
因此,当另一个进程试图进入临界区时,由于临界区已被锁定,因此无法进入。只有当它自己获得锁并空闲时,它才能进入临界区。
互斥锁
Sync同步硬件对于每个人来说并不是一个简单的方法,因此还引入了称为互斥锁的严格软件方法。
在这种方法中,在代码的入口部分,获取对临界区内使用的关键资源的锁定。在出口部分,释放该锁定。
Semaphore 解决方案
Semaphore 只是一个非负的变量,在线程之间共享。这是临界区问题的另一种算法或解决方案。它是一种信号机制,一个线程正在等待信号量,可以由另一个线程发出信号。
它使用两个原子操作,1)等待,和2)信号进行进程同步。
例如:
WAIT ( S ): while ( S <= 0 ); S = S - 1; SIGNAL ( S ): S = S + 1;
结语
- 进程同步是协调进程执行的任务,使得任何两个进程都不能访问相同的共享数据和资源。
- 临界区的四个元素是 1)入口区 2)临界区 3)出口区 4)提醒区
- 关键部分是可在特定时间点由信号进程访问的一段代码。
- 临界区必须执行的三个规则是:1)互斥 2)进程解决方案 3)边界等待
- 互斥是一种特殊类型的二进制信号量,用于控制对共享资源的访问。
- 当临界区内无人,而有人想进入时,可使用流程解决方案。
- 在绑定等待解决方案中,当一个进程发出进入其临界区的请求后,可以进入其临界区的其他进程数量是受到限制的。
- 彼得森解决方案是解决临界区问题的广泛使用的解决方案。
- 关键部分的问题也通过硬件同步得到解决
- Sync同步硬件对于每个人来说都不是一种简单的方法,因此还引入了称为互斥锁 (Mutex Locks) 的严格软件方法。
- Semaphore 是临界区问题的另一种算法或解决方案。


