Update ch8 exercise

This commit is contained in:
rcy 2022-05-22 09:52:38 +08:00
parent ab9be7e7fd
commit 1b98f62d6a
1 changed files with 11 additions and 7 deletions

View File

@ -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``