os_exercises
示例
1.
Intro
1.1.
问卷
1.2.
lec0 SPOC讨论
1.3.
lab0 在线练习
1.4.
lab0 SPOC讨论
2.
中断、异常和系统调用
2.1.
lec3 SPOC讨论
2.2.
lab1 在线练习
2.3.
lab1 SPOC讨论
3.
物理内存管理
3.1.
lec5 在线练习
3.2.
lec5 SPOC讨论
3.3.
lec6 在线练习
3.4.
lec6 SPOC讨论
3.5.
lab2 在线练习
3.6.
lab2 SPOC讨论
4.
虚拟内存管理
4.1.
lec8 SPOC讨论
4.2.
lec9 在线练习
4.3.
lec9 SPOC讨论
4.4.
lab3 在线练习
4.5.
lab3 SPOC讨论
5.
进程、线程管理
5.1.
lec11 在线练习
5.2.
lec11 SPOC讨论
5.3.
lec12 在线练习
5.4.
lec12 SPOC讨论
5.5.
lab4 在线练习
5.6.
lab4 SPOC讨论
5.7.
lab5 在线练习
5.8.
lab5 SPOC讨论
6.
CPU调度
6.1.
lec15 在线练习
6.2.
lec15 SPOC讨论
6.3.
lab6 在线练习
6.4.
lab6 SPOC讨论
7.
同步
7.1.
lec17 在线练习
7.2.
lec17 SPOC讨论
7.3.
lec18 在线练习
7.4.
lec18 SPOC讨论
7.5.
lec19 在线练习
7.6.
lab7 SPOC讨论
8.
死锁和进程间通信
8.1.
lec20 在线练习
8.2.
lec20 SPOC讨论
9.
文件系统
9.1.
lec21 在线练习
9.2.
lec21 SPOC讨论
9.3.
lab8 在线练习
9.4.
lab8 SPOC讨论
10.
I/O子系统
10.1.
lec23 在线练习
10.2.
lec23 SPOC讨论
Powered by
GitBook
A
A
襯線體
無襯線體
白色
棕褐色
夜間
分享到 Twitter
分享到 Google
分享到 Facebook
分享到 Weibo
分享到 Instapaper
os_exercises
同步互斥(lec 19) spoc 思考题
有"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 机制实现的异同点。