[理工] 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