gpt4 book ai didi

c - 现代系统架构?

转载 作者:行者123 更新时间:2023-12-02 03:47:34 24 4
gpt4 key购买 nike

如果我们在现代计算机上使用彼得森的临界区问题解决方案会发生什么?据我了解,由于内存读写相对于内存中其他读写的顺序,具有多个 CPU 的系统可能会遇到困难,但这是大多数现代系统的问题吗?使用信号量 VS 互斥锁有什么优势吗?

最佳答案

嘿,有趣的问题!所以基本上,为了理解您要问的内容,您必须确保您知道您要问的是什么。 临界区 只是程序的一部分,一次不应由该程序的一个以上进程或线程同时执行。不允许多个并发访问,所以这意味着一次只有一个进程与系统交互。通常,此“关键部分”访问数据结构或网络连接等资源。

Mutual Exclusionmutex只是描述了一次只有一个并发进程在临界区的需求,所以并发访问共享数据必须保证这种“互斥”排除”。

所以这引入了问题!我们如何确保进程完全独立于其他进程运行,换句话说,我们如何确保线程对各个关键部分的“原子访问”?

“临界区问题”有几种解决方案,但您提到的是 Peterson 的解决方案,因此我们将讨论它。

Peterson 算法专为互斥而设计,允许两个任务共享一次性资源。他们使用共享内存进行通信。

算法中,两个任务会竞争临界区;您将不得不更多地研究互斥锁、绑定(bind)等待和其他属性以全面了解,但只是在彼得森的方法中,进程等待 1 轮和 1 轮才进入临界区,如果它给予其他任务或进程优先权,那么该进程将运行完成,从而允许其他进程进入临界区。

这是最初提出的解决方案。

然而,这并不能保证适用于当今的多处理现代架构,而且它仅适用于两个并发任务。在现代计算机上,当涉及到读写时,它有点困惑,因为它具有乱序执行类型,因此有时顺序操作会以错误的顺序发生,因此存在局限性。我建议您也看看。希望有所帮助:)

还有谁能想出我可能遗漏的任何内容来补充吗?

关于c - 现代系统架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58295917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com