[理工] OS priviledged instruction 請教消失

看板Grad-ProbAsk作者時間8年前 (2017/11/06 13:53), 8年前編輯推噓1(1018)
留言19則, 3人參與, 最新討論串1/1
如題 想請問 "switch to kernel model" 此指令 是否為priviledged instruction 我記得洪兔上課說是,但原文課本給的解答說不是 ( 補充 8,9 版課本解答都給不是 上網查有人說是課本錯 有人說是課本對 ) 我自己的想法如下 1.如果是 priviledged instruction 那如果在user mode 就永遠無法變成kernel mode 因為你必須要先在 kernel mode才能執行 priviledged instruction 2. 如果不是 priviledged instruction 那user program 不需在kernel mode 就可以執行此指令 則kernel mode 形同虛設, 因為user program可以直接執行此指令,等同讓 user program 擁有了kernel的權力 怎麼想都覺得怪怪的 請教各位大大正確的觀念為何 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.159.57 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1509947585.A.F34.html ※ 編輯: can18 (118.233.159.57), 11/06/2017 13:55:57

11/06 14:22, , 1F
課本錯了,兔的課本幾乎沒在debug的
11/06 14:22, 1F
你是指洪逸錯還是原文錯

11/06 14:59, , 2F
switch to kernel mode 是特權指令
11/06 14:59, 2F

11/06 15:04, , 3F
這部分洪在上課有講過 你可以再去翻一下筆記回顧一下
11/06 15:04, 3F
嗯嗯我知道 但想請問我第一個的想法錯在哪呢 ※ 編輯: can18 (118.233.159.57), 11/06/2017 15:05:38

11/06 15:09, , 4F
User program 若要執行 kernel mode的指令 多是用sysca
11/06 15:09, 4F

11/06 15:09, , 5F
ll去產生中斷 os會收到請求後而處理。privilege 在會這
11/06 15:09, 5F

11/06 15:09, , 6F
時轉成 kernel mode
11/06 15:09, 6F
最後那邊有點不太懂 所以switch to kernel mode 是特權指令嗎 ※ 編輯: can18 (118.233.159.57), 11/06/2017 15:15:37

11/06 15:15, , 7F
是特權指令。因為user mode只是發出請求 由os收到中斷
11/06 15:15, 7F

11/06 15:15, , 8F
後(kernel mode)將user mode轉成kernel mode
11/06 15:15, 8F
想請問 特權指令的定義不是只能在 kernel mode 執行嗎 但現在想要執行 switch to kernel mode 時還是 user mode 照理說應該是不能執行才對? (若它為特權指令) ※ 編輯: can18 (118.233.159.57), 11/06/2017 15:18:00

11/06 15:27, , 9F
Switch to kernel mode並不是主動去執行的一條指令,
11/06 15:27, 9F

11/06 15:27, , 10F
而是當pocess內有特權指令需要被執行時 會發出中斷,
11/06 15:27, 10F

11/06 15:27, , 11F
此時os接手 並將其privilege 轉至kernel mode 來執行這
11/06 15:27, 11F

11/06 15:27, , 12F
些特權指令
11/06 15:27, 12F

11/06 15:29, , 13F
Switch to kernel mode是一個行為 不是一個指令
11/06 15:29, 13F

11/06 15:32, , 14F
上面有點筆誤,應該是說 switch to kernel mode這個行
11/06 15:32, 14F

11/06 15:32, , 15F
為的指令,只有kernel mode能作
11/06 15:32, 15F
我換個說法好了 priviledged instruction 只能在 mode bit = 0時能被執行, 若 switch to kernel mode 此行為的指令是 priviledged instruction 那如果現在處在 user mode , mode bit = 1 想要變成kernel mode, 於是執行 switch to kernel mode 此行為的指令 但此時我的mode bit 為 1,按理說應該是不能執行 priviledged instruction 但我不執行此指令又無法change mode bit ? 造成我永遠無法進入 kernel mode ? ※ 編輯: can18 (118.233.159.57), 11/06/2017 15:44:51

11/06 16:07, , 16F
User mode情況下,你沒辦法直接switch to kernel mode
11/06 16:07, 16F

11/06 16:07, , 17F
,通常必須由syscall 方式提出申請 由kernel幫你調整mo
11/06 16:07, 17F

11/06 16:07, , 18F
de bit 而且執行完syscall 後,會再把你降成user mode
11/06 16:07, 18F

11/06 16:07, , 19F
。 user mode 底下能作的事情非常受限
11/06 16:07, 19F
我理解你說的 但在syscall完後還是必須要執行switch to kernel mode 之指令,若此指 令為 priviledged 不會造成 OS也無法執行此指令嗎?(因為在尚未執行此指令前mode bi t 還是1) ※ 編輯: can18 (118.233.159.57), 11/06/2017 16:21:12
文章代碼(AID): #1P__Z1yq (Grad-ProbAsk)