[理工] OS 幾個問題 (process、特權指令)

看板Grad-ProbAsk作者 (Huan)時間7年前 (2018/12/06 01:24), 7年前編輯推噓6(6010)
留言16則, 4人參與, 7年前最新討論串1/1
遇到幾題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

12/06 01:38, 7年前 , 1F
1.我有點聽不懂你的意思 pc是一直更新的,指向下一
12/06 01:38, 1F

12/06 01:38, 7年前 , 2F
個指令位址,所以才是pc+4
12/06 01:38, 2F
我困惑的是PC是CPU的暫存器,而PCB中存process狀態的PC欄位在running的時候會不會隨 著暫存器改

12/06 01:41, 7年前 , 3F
特權是I/o指令才算吧?看了老師列的特權指令test&se
12/06 01:41, 3F

12/06 01:41, 7年前 , 4F
t也都不太相關
12/06 01:41, 4F

12/06 01:41, 7年前 , 5F
他的意思應該是是否pcb只在switch的時候做更新吧
12/06 01:41, 5F

12/06 01:46, 7年前 , 6F
概念怎樣不確定,但我看了linux原始碼,pcb有child pro
12/06 01:46, 6F

12/06 01:46, 7年前 , 7F
cess的pcb pointer
12/06 01:46, 7F

12/06 01:47, 7年前 , 8F
只有pointer所以應該是未包含在裡面,但不應該說完全不
12/06 01:47, 8F

12/06 01:47, 7年前 , 9F
知道有child process吧
12/06 01:47, 9F
所以應該是pointer不是整個process所以要選錯的意思

12/06 01:49, 7年前 , 10F
在fork()的時候不是就是知道child process 是誰,所以par
12/06 01:49, 10F

12/06 01:49, 7年前 , 11F
ent process的fork ()!=0?
12/06 01:49, 11F
fork應該只是回傳值(? 如果沒有一個變數去接那個回傳值好像也不會知道(? ※ 編輯: skyHuan (36.229.122.14), 12/06/2018 01:57:40

12/07 20:14, 7年前 , 12F
PC當然自己會一直改, 這是硬體就有了
12/07 20:14, 12F

12/07 20:15, 7年前 , 13F
還有PCB課本上是說只有要context switch才保存
12/07 20:15, 13F

12/07 20:16, 7年前 , 14F
不過我看arm硬體都有專門做context switch的暫存器了
12/07 20:16, 14F

12/07 20:16, 7年前 , 15F
而linux似乎也只是修改pointer所以問題不大
12/07 20:16, 15F

12/07 20:35, 7年前 , 16F
參閱stackoverflow的回答https://reurl.cc/Gov5Z
12/07 20:35, 16F
文章代碼(AID): #1S20dODT (Grad-ProbAsk)