我知道在单核处理器中使用信号量 可以轻松完成同步。但是在我们有多核的情况下,如果多个进程想要同时进入临界区瞬间,它们是全部进入临界区还是只有一个获胜?获胜者进程获胜的标准是什么?
最佳答案
当两个核心同时尝试进入临界区时,它们都尝试同时写入内存中的信号量,使用锁定的读取-修改-写入操作。为了让核心完成写入,缓存必须获得对包含信号量的缓存行的独占访问权。这迫使另一个核心将该行标记为无效。缓存协议(protocol)确保只有一个内核可以获得独占访问权限,并且该内核进入临界区。
与此同时,另一个也在尝试写入信号量的核心必须等待,因为它仍然需要独占访问缓存行。一旦第一个核心完成其写入操作,另一个核心就获得独占访问权并可以完成其读取-修改-写入。但是read-modify-write的结果告诉它信号量忙,所以它不能进入临界区,直到检测到信号量被释放。
关于process - 多处理器系统中的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620619/