[理工] 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