我对操作系统的同步部分感到困惑。我不理解在 Monitor 和 Semaphore 中使用 Mutual Exclusion 的问题。这有什么不同吗?
显然;在Monitor和Semaphore中使用相互排除是否有任何区别?或者在Monitor和Semaphore上使用Mutual Exclusion时也适用相同的规则吗?
附加说明=这句话让我很困惑。 “信号量和监视器都是为解决一个或多个CPU上的互斥问题而设计的,这些CPU都可以访问公共内存”
我也读过那些文章= Monitor - Mutual Exclusion
答案 0 :(得分:2)
相互排除是对使用共享内存的多个并行进程的行为的要求。困惑你的句子指的是:公共记忆=共享记忆。
互斥要求规定在任何给定时间最多只有一个进程可以处于其关键部分(关键部分是使用驻留在共享内存中的特定资源的一段程序代码)。该要求没有说明如何实现,只有必须实现的目标。
信号量和监视器是可以实施互斥的设备,因此他们回答"如何"题。两者都必须根据自己的规则使用,但两者都可以强制互斥。
希望这有帮助。
答案 1 :(得分:0)
以下是你应该如何考虑相互排斥。
相互排斥是仲裁关键部分(不同线程之间的共享代码)的访问,这样只允许一个线程在任何时间执行关键部分。有多种方法可以确保互斥,包括使用信号量,互斥量和监视器。你使用哪种机制来确保信号量或信号量的相互排斥没有任何区别,唯一的区别在于信号量和monitor.semaphore是由os提供的(尽管你可以创建你的拥有)和监视器是用于提供互斥的编程语言构造。