作者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/m.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