我对类Unix机器上的用户模式和管理员模式有几个问题。
用户模式和管理员模式有什么区别?我知道用户进程无法访问所有内存和硬件并执行所有指令。还有更多吗?
拥有不同模式有什么好处?
从用户模式切换到超级用户模式时涉及的步骤是什么?
当用户程序进行系统调用时,模式必须从用户模式更改为管理员模式。我在其他地方读过,这是通过使用int x80在x86机器上实现的。那么模式切换与中断处理有何不同呢?
它与上下文切换有什么不同?
如何在不同架构中实施管理程序模式?
任何答案或指示都将不胜感激!
答案 0 :(得分:4)
CPU不会物理地允许访问被确定为“特权”的区域。由于这是在硬件中强制执行的,因此它为您的操作系统提供了保护自身的能力。没有这种机制,操作系统就没有“安全性”,因为最模糊的代码片段可以简单地访问内核内存并读取所有密码。
用户模式到管理员模式切换是昂贵的,因为它是一个上下文切换,为了安全起见,必须刷新缓存(否则你可能能够访问你不想要的东西)。
对于上下文切换,这本身就涉及切换到内核模式以执行任务。当CPU Scheduler定时器中断触发时,它会切换到内核模式,选择要执行的下一个任务,然后切换回用户模式,并继续执行下一个任务。
答案 1 :(得分:2)
存在两个概念:
在HW管理程序模式下执行的代码非常少,主要是在低级别和启动开始时中断例程。甚至大多数SW内核模式都是在HW用户模式下执行的。