用户模式与管理员模式

时间:2009-01-26 05:54:59

标签: switch-statement supervisor-mode

我对类Unix机器上的用户模式和管理员模式有几个问题。

用户模式和管理员模式有什么区别?我知道用户进程无法访问所有内存和硬件并执行所有指令。还有更多吗?

拥有不同模式有什么好处?

从用户模式切换到超级用户模式时涉及的步骤是什么?

当用户程序进行系统调用时,模式必须从用户模式更改为管理员模式。我在其他地方读过,这是通过使用int x80在x86机器上实现的。那么模式切换与中断处理有何不同呢?

它与上下文切换有什么不同?

如何在不同架构中实施管理程序模式?

任何答案或指示都将不胜感激!

2 个答案:

答案 0 :(得分:4)

CPU不会物理地允许访问被确定为“特权”的区域。由于这是在硬件中强制执行的,因此它为您的操作系统提供了保护自身的能力。没有这种机制,操作系统就没有“安全性”,因为最模糊的代码片段可以简单地访问内核内存并读取所有密码。

用户模式到管理员模式切换是昂贵的,因为它是一个上下文切换,为了安全起见,必须刷新缓存(否则你可能能够访问你不想要的东西)。

对于上下文切换,这本身就涉及切换到内核模式以执行任务。当CPU Scheduler定时器中断触发时,它会切换到内核模式,选择要执行的下一个任务,然后切换回用户模式,并继续执行下一个任务。

答案 1 :(得分:2)

存在两个概念:

  • 软件用户/内核模式,在执行系统调用或返回表单系统调用时相互切换,
  • 硬件用户/管理员模式,在中断时相互切换。

在HW管理程序模式下执行的代码非常少,主要是在低级别和启动开始时中断例程。甚至大多数SW内核模式都是在HW用户模式下执行的。