rCore-Tutorial-Book-v3 icon indicating copy to clipboard operation
rCore-Tutorial-Book-v3 copied to clipboard

rCore-Tutorial-Book-v3/chapter8/0intro

Open utterances-bot opened this issue 4 years ago • 6 comments

引言 — rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档

https://rcore-os.github.io/rCore-Tutorial-Book-v3/chapter8/0intro.html

utterances-bot avatar Jan 04 '22 03:01 utterances-bot

对于很多应用(以单一进程的形式运行)而言,逻辑上存在多个可并行执行的任务,如果其中一个任务被阻塞,将会引起不依赖该任务的其他任务也被阻塞。

为什么不依赖该任务的其他任务会被阻塞?感觉应该是依赖该任务的才会被阻塞

uran0sH avatar Jan 04 '22 03:01 uran0sH

@uran0sH 他举的是以单一进程形式运行的任务,此时不支持并发。那么如果这个任务在进程执行中阻塞了,整个进程会被杀死,这个任务后的其他任务也无法被执行了。

PeterWrighten avatar Jul 12 '22 12:07 PeterWrighten

在互斥锁的设计实现中,设计了一个更底层的 ~~UPSafeCellSafeCell<T>~~ 类型

应为 UPSafeCell

liang2kl avatar Mar 14 '23 03:03 liang2kl

而对于内核态管理的用户态线程,则需要新增线程控制块(Thread Control Block, TCB)结构,把之前进程控制块(~~Process Control Block, PCB~~Task Control Block, TCB)中与执行相关的内容剥离给了线程控制块。

这里有点问题,本书从一开始的进程控制块并不是常规意义的PCB,尽管作用相同,但是名字却是TCB,这里如果不做说明直接切换到PCB这个术语,可能会造成困惑。后文中对原来的TaskCB拆分,使得线程作为调度的基本实体继承了TaskCB的名字,分离出的管理资源的数据结构成为传统意义的PCB。因此可以作一定的修缮。

最后一部分关于条件变量的代码解释也有一个笔误:

在上述代码片段的第~~7~~6行,可以看到挂在条件变量上的线程,会被放入到条件变量的等待队列 wait_queue 中。

实际上应该是第6行

chestNutLsj avatar Oct 09 '23 08:10 chestNutLsj