TID 和 PID
贯穿的那张表(实验机上 ps -eLo pid,tid,nlwp,stat,pcpu,comm 抓的,每行一个线程): PID TID NLWP STAT %CPU COMM 1 1 1 Ss 0.0 b
NLWP 是什么
贯穿的那张表(实验机上 ps -eLo pid,tid,nlwp,stat,pcpu,comm 抓的,每行一个线程): PID TID NLWP STAT %CPU COMM 1 1 1 Ss 0.0 b
STAT 里的 R 和 l
贯穿的那张表(实验机上 ps -eLo pid,tid,nlwp,stat,pcpu,comm 抓的,每行一个线程): PID TID NLWP STAT %CPU COMM 1 1 1 Ss 0.0 b
把表切开
(每道题开头都有同一段:那张线程表 PSL,和把它切成字典列表的 rows()——每个字典有 pid / tid / nlwp / stat / cpu / comm 六项。) rows() 把表切成字典列表。看一共几行、几个不同的 PID
每个进程几只手
(每道题开头都有同一段:那张线程表 PSL,和把它切成字典列表的 rows()——每个字典有 pid / tid / nlwp / stat / cpu / comm 六项。) 按 PID 分组数线程,和 NLWP 对一对: PSL = &
补全:找主线程
(每道题开头都有同一段:那张线程表 PSL,和把它切成字典列表的 rows()——每个字典有 pid / tid / nlwp / stat / cpu / comm 六项。) 补全 mains(r):挑出主线程的行(TID 等于 PID)
补全:某个进程的线程
(每道题开头都有同一段:那张线程表 PSL,和把它切成字典列表的 rows()——每个字典有 pid / tid / nlwp / stat / cpu / comm 六项。) 补全 threads_of(r, pid):交回这个进程所有线
等的时候处理器在干什么
「写盘」线程把数据交给磁盘后要等 3 格才能继续。如果整个程序只有一条线,这 3 格里处理器【0】。
并发要解决的事
(任务模型:每个任务写成 (名字, 算的格数, 等的格数)——「算」要占处理器,「等」是等磁盘或网络回话,不占处理器。「算账」的三个任务:核对算 4 等 0,写盘算 1 等 3,心跳算 1 等 5。) 把核对、写盘、心跳三件事交给同一个进程
响应也是理由
一个只有一条线的程序在算一道 4 格的账,这时用户点了「取消」。按钮要等到【0】。