看板 Grad-ProbAsk 關於我們 聯絡資訊
遇到幾題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://www.ptt.cc/bbs/Grad-ProbAsk/M.1544030680.A.35D.html
sdfg014025xx: 1.我有點聽不懂你的意思 pc是一直更新的,指向下一 12/06 01:38
sdfg014025xx: 個指令位址,所以才是pc+4 12/06 01:38
我困惑的是PC是CPU的暫存器,而PCB中存process狀態的PC欄位在running的時候會不會隨 著暫存器改
sdfg014025xx: 特權是I/o指令才算吧?看了老師列的特權指令test&se 12/06 01:41
sdfg014025xx: t也都不太相關12/06 01:41
b0920075: 他的意思應該是是否pcb只在switch的時候做更新吧12/06 01:41
b0920075: 概念怎樣不確定,但我看了linux原始碼,pcb有child pro12/06 01:46
b0920075: cess的pcb pointer12/06 01:46
b0920075: 只有pointer所以應該是未包含在裡面,但不應該說完全不12/06 01:47
b0920075: 知道有child process吧12/06 01:47
所以應該是pointer不是整個process所以要選錯的意思
eggy1018: 在fork()的時候不是就是知道child process 是誰,所以par 12/06 01:49
eggy1018: ent process的fork ()!=0? 12/06 01:49
fork應該只是回傳值(? 如果沒有一個變數去接那個回傳值好像也不會知道(? ※ 編輯: skyHuan (36.229.122.14), 12/06/2018 01:57:40
TWkobe: PC當然自己會一直改, 這是硬體就有了 12/07 20:14
TWkobe: 還有PCB課本上是說只有要context switch才保存 12/07 20:15
TWkobe: 不過我看arm硬體都有專門做context switch的暫存器了 12/07 20:16
TWkobe: 而linux似乎也只是修改pointer所以問題不大 12/07 20:16
TWkobe: 參閱stackoverflow的回答https://reurl.cc/Gov5Z 12/07 20:35