[理工] OS 几个问题 (process、特权指令)

楼主: skyHuan (Huan)   2018-12-06 01:24:38
遇到几题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指令,为什么不用设特权指令就可以用了
作者: sdfg014025xx (随便就好)   2018-12-06 01:38:00
1.我有点听不懂你的意思 pc是一直更新的,指向下一个指令位址,所以才是pc+4特权是I/o指令才算吧?看了老师列的特权指令test&set也都不太相关
作者: b0920075 (Void)   2018-12-06 01:41:00
他的意思应该是是否pcb只在switch的时候做更新吧概念怎样不确定,但我看了linux原始码,pcb有child process的pcb pointer只有pointer所以应该是未包含在里面,但不应该说完全不知道有child process吧
作者: eggy1018 (羅密歐與豬過夜)   2018-12-06 01:49:00
在fork()的时候不是就是知道child process 是谁,所以parent process的fork ()!=0?
作者: TWkobe (中华柯比)   2018-12-07 20:14:00
PC当然自己会一直改, 这是硬件就有了还有PCB课本上是说只有要context switch才保存不过我看arm硬件都有专门做context switch的暂存器了而linux似乎也只是修改pointer所以问题不大参阅stackoverflow的回答https://reurl.cc/Gov5Z

Links booklink

Contact Us: admin [ a t ] ucptt.com