- 有"spoc"标记的题是要求拿清华学分的同学要在实体课上完成,并按时提交到学生对应的ucore_code和os_exercises的git repo上。
- 信号量与条件变量有什么不同?
- 同步机制、处理机调度、等待队列和定时器有些什么相互影响?
- 操作系统内核如何利用定时器实现sleep系统?在定时队列中保存的时间格式是什么?
- 中断屏蔽控制位在哪个寄存器中?如何修改中断屏蔽控制位?
- 在ucore中有多少种等待队列?
- 等待队列的两个基本操作down()和up()对线程状态和等待队列有什么影响?
- ucore中的信号量实现能实现是按FIFO获取信号量资源吗?给出你的理由。
- 为什么down()要加一个_down()函数来进行实质的处理?类似情况还出现在up()和_up()。
参考回答:有多个有小差异的类似函数要使用相同的核心功能实现。类似情况还出现在do_fork()函数。
- 管程与信号量是等价的。如何理解?
- 基于信号量的管程中在什么地方用到信号量?
- 管程实现中的monitor.next的作用是什么?
- 分析管程实现中PV操作的配对关系,并解释PV操作的目的。
- 基于视频中对管程的17个状态或操作的分析,尝试分析管程在入口队列和条件变量等待队列间的等待和唤醒关系。注意分析各队列在什么情况下会有线程进入等待,在什么时候会被唤醒,以及这个等待和唤醒的依赖关系。
- 哲学家就餐问题的管程实现中的外部操作成员函数有哪几个?
- 哲学家就餐问题的管程实现中用了几个条件变量?每个条件变量的作用是什么?
- (扩展练习) 每人用ucore中的信号量和条件变量两种手段分别实现47个同步问题中的一题。向勇老师的班级从前往后,陈渝老师的班级从后往前。请先理解与采用python threading 机制实现的异同点。