作者skyHuan (Huan)
看板Grad-ProbAsk
标题[理工] OS 几个问题 (process、特权指令)
时间Thu Dec 6 01:24:38 2018
遇到几题T/F有些疑问想请教,先谢谢大家了
1. (False)对於一个处於running state的process,在其PCB中,Programming counter栏
位的值是他目前正在执行的指令的记忆体位址
洪逸的解释是应该是PC+4,我的想法是在running的时候会一直更新PCB吗,例如context
switch切进来的时候是从PC=100开始执行,一直到PC=500才切给其他process,那执行过
程中PCB中的PC是一直都是100到结束才更新成500,还是过程会不断更新100, 104, 108,
..., 500这样
2. (False) child process is included in its parent’s PCB
PCB中只会有自己的资讯不会有其他process的资讯,那如果有父子关系,例如父要等待子
完成後蒐集资讯,是要等子发出signal通知OS,OS再让父来蒐集成果吗?如果没有OS父亲
可以说完全不知道子的存在这个理解对吗?
3. (False) test-and-set指令应设为特权指令
test-and-set应该是CPU指令,为什麽不用设特权指令就可以用了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.229.122.14
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1544030680.A.35D.html
1F:推 sdfg014025xx: 1.我有点听不懂你的意思 pc是一直更新的,指向下一 12/06 01:38
2F:→ sdfg014025xx: 个指令位址,所以才是pc+4 12/06 01:38
我困惑的是PC是CPU的暂存器,而PCB中存process状态的PC栏位在running的时候会不会随
着暂存器改
3F:→ sdfg014025xx: 特权是I/o指令才算吧?看了老师列的特权指令test&se 12/06 01:41
4F:→ sdfg014025xx: t也都不太相关12/06 01:41
5F:推 b0920075: 他的意思应该是是否pcb只在switch的时候做更新吧12/06 01:41
6F:推 b0920075: 概念怎样不确定,但我看了linux原始码,pcb有child pro12/06 01:46
7F:→ b0920075: cess的pcb pointer12/06 01:46
8F:→ b0920075: 只有pointer所以应该是未包含在里面,但不应该说完全不12/06 01:47
9F:→ b0920075: 知道有child process吧12/06 01:47
所以应该是pointer不是整个process所以要选错的意思
10F:推 eggy1018: 在fork()的时候不是就是知道child process 是谁,所以par 12/06 01:49
11F:→ eggy1018: ent process的fork ()!=0? 12/06 01:49
fork应该只是回传值(?
如果没有一个变数去接那个回传值好像也不会知道(?
※ 编辑: skyHuan (36.229.122.14), 12/06/2018 01:57:40
12F:推 TWkobe: PC当然自己会一直改, 这是硬体就有了 12/07 20:14
13F:→ TWkobe: 还有PCB课本上是说只有要context switch才保存 12/07 20:15
14F:→ TWkobe: 不过我看arm硬体都有专门做context switch的暂存器了 12/07 20:16
15F:→ TWkobe: 而linux似乎也只是修改pointer所以问题不大 12/07 20:16