[理工] OS priviledged instruction 請教

作者: can18 (18號)   2017-11-06 13:53:02
如題
想請問 "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的權力
怎麼想都覺得怪怪的
請教各位大大正確的觀念為何
作者: jerrymouseB (小小傑利鼠)   2017-11-06 14:22:00
課本錯了,兔的課本幾乎沒在debug的
作者: weilun911 (阿偷)   2017-11-06 14:59:00
switch to kernel mode 是特權指令這部分洪在上課有講過 你可以再去翻一下筆記回顧一下
作者: etesia329 (Etesia)   2017-11-06 15:09:00
User program 若要執行 kernel mode的指令 多是用syscall去產生中斷 os會收到請求後而處理。privilege 在會這時轉成 kernel mode是特權指令。因為user mode只是發出請求 由os收到中斷後(kernel mode)將user mode轉成kernel modeSwitch to kernel mode並不是主動去執行的一條指令,而是當pocess內有特權指令需要被執行時 會發出中斷,此時os接手 並將其privilege 轉至kernel mode 來執行這些特權指令Switch to kernel mode是一個行為 不是一個指令上面有點筆誤,應該是說 switch to kernel mode這個行為的指令,只有kernel mode能作User mode情況下,你沒辦法直接switch to kernel mode,通常必須由syscall 方式提出申請 由kernel幫你調整mode bit 而且執行完syscall 後,會再把你降成user mode。 user mode 底下能作的事情非常受限換個說法,一般來說一個東西從A模式切成B模式,一定是從A到B,我若說從A切到B卻只能在B模式下才能切,聽起來一定怪怪的。但是user mode 切到kernel mode的意思比較不像我們一般所認知的那種模式切換,他是在usermode發出syscall請os幫你執行kernelmode下才能執行的指令,而當你發出合法的syscall時 其實當下就是通知Cpu切成kernel mode了,但這個切換行為是間接的,不是直接在user mode就可以直接切換成kernel mode,如果這樣直接切合法 那還分成user, kernel mode根本沒意思了。而syscall會有一個handler,是可以把user mode 切成kernel mode的
作者: sarsman (DeNT15T♠)   2017-11-06 23:04:00
http://i.imgur.com/Aa1EtEA.jpg 這篇論點跟樓上差不多

Links booklink

Contact Us: admin [ a t ] ucptt.com