Update ch8 exercise
This commit is contained in:
parent
ab9be7e7fd
commit
1b98f62d6a
|
@ -26,14 +26,16 @@ chapter8 练习
|
|||
编程作业
|
||||
--------------------------------------
|
||||
|
||||
.. warning::
|
||||
|
||||
本次实验框架变动较大,且改动较为复杂,为降低同学们的工作量,本次实验不要求合并之前的实验内容,
|
||||
只需通过 ch8 系列的测例和前面章节的基础测例即可。
|
||||
|
||||
.. note::
|
||||
|
||||
本次实验的工作量约为 100~200 行代码。
|
||||
本次实验框架变动较大,且改动较为复杂,为降低同学们的工作量,本次实验不要求合并之前的实验内容,
|
||||
可以直接 checkout 到助教的 ch8 框架开始实验,最终只需通过 ch8 系列的测例和前面章节的基础测例即可。
|
||||
|
||||
.. warning::
|
||||
|
||||
本次实验实现死锁检测算法本身只需要40行左右代码,但加上系统调用实现、变量声明与初始化、
|
||||
以及在锁的创建、锁、释放时维护死锁检测 Available、Allocation、Request 数组,
|
||||
总代码量预计在100~200行。
|
||||
|
||||
|
||||
死锁检测
|
||||
|
@ -106,8 +108,10 @@ chapter8 练习
|
|||
|
||||
1. 在我们的多线程实现中,当主线程 (即 0 号线程) 退出时,视为整个进程退出,
|
||||
此时需要结束该进程管理的所有线程并回收其资源。
|
||||
|
||||
- 需要回收的资源有哪些?
|
||||
- 其他线程的 TaskControlBlock 可能在哪些位置被引用,分别是否需要回收,为什么?
|
||||
- 其他线程的 ``struct thread`` 可能在哪些位置被引用,分别是否需要回收,为什么?
|
||||
|
||||
2. 对比以下两种 ``mutex_unlock`` 中阻塞锁的实现,二者有什么区别?这些区别可能会导致什么问题?
|
||||
(假设无论 ``mutex_lock`` 均正确处理了 ``m->locked``)
|
||||
|
||||
|
|
Loading…
Reference in New Issue