作业四:《同步与多核》

截止时间: 2021年4月16号23时59分

提交方式: 好大学在线 《操作系统》 2021年春- ->第八章- ->本章练习

注意: 我们已经将选课的同学名单导入到好大学在线的操作系统课程中,大家可以在“我的课程”栏目中看到《操作系统》课程,请注意课程的学期是2021春。本门课程的作业均使用好大学在线的方式进行提交,注意,为减轻学生压力,本次作业开始将取消互评环节,同学们完成作业后不需要再对其他同学的作业进行批改。

请回答下列问题:

  1. 请说明为什么自旋锁不适用于单核系统,但在多核系统下可以正常工作? 对该问题有何种解决方案?
  2. 在课程中,我们了解了对读者友好的读写锁定的情况。 这种锁定会导致写者饿死,其原因是? 请提供一种对写者友好的读写锁定设计(避免写者饥饿)。
  3. 假设有一个包含四个处理器和五个相同资源的系统。 每个处理器在有限的持续时间内最多使用两个资源。 请说明为什么该系统没有死锁(所有处理器最终都将使用两个资源)。
  4. 排号锁可能会导致在高竞争情况下性能降低。下图描述了使用排号锁和MCS锁的open()系统调用的性能。请指出使得排号锁的吞吐量下降的代码行。 另外,MCS锁是如何达到高可扩展性的呢? (左图为排号锁代码)

img

  1. 在课程中,我们学习了NUMA-aware cohort lock。 尽管它可以提高锁在NUMA架构中的性能,但它会引入了公平性问题。请给出对此问题的问题的合理解决方案。
  2. 假设小明在ARM 处理器上实现自旋锁,并且发现关键部分没有通过锁定得到很好的保护。 在了解了弱顺序一致性后,他知道要在代码中添加内存屏障。 请在适当的位置帮助小明添加barrier()。