练习
练习1:说明不会出现死锁的原因
证明/说明为什么我们给出的信号量实现的哲学家问题不会出现死锁。不必特别严谨,但要能说服你自己/助教?
证明/说明为什么我们给出的条件变量实现的哲学家问题不会出现死锁。不必特别严谨,但要能说服你自己/助教?
练习2:设计方案
给出为用户态进程/线程提供信号量机制的设计方案,并比较说明给内核级提供信号量机制的异同。
给出为用户态进程/线程提供条件变量机制的设计方案,并比较说明给内核级提供条件变量机制的异同。
练习3:信号量实现条件变量
能否不基于信号量机制来完成条件变量?如果不能,请给出理由,如果能,请给出设计说明和具体实现。
练习4:禁用中断
kern/sync/sem.c的信号量实现中,出现了这样的暂时禁用中断的代码:
我们其实从正确的框架里删除了两句local_intr_restore(intr_flag)
和一句local_intr_save(intr_flag);
,请你找出是哪里删掉了,并举出删掉之后不能正常工作的一种情况。
最后更新于