什么是单独的“主管”和“用户”模式的需要?

时间:2011-10-25 06:38:11

标签: assembly operating-system x86

主管模式与用户模式

为什么操作系统需要这种区别?

我知道Supervisor模式是用于OS支持的,我知道用户模式是用于应用程序支持的。我隐约明白,这些用于确保用户的操作仅在用户模式下发生,而OS操作仅在超级模式下发生。我只是想进行更深入的讨论,以填补我可能缺少的任何空白。

感谢。

2 个答案:

答案 0 :(得分:3)

用户模式禁止某些操作 - 例如写入随机存储器 - 以保护程序彼此之间的连接。管理员模式允许这些操作,因为操作系统需要它们执行输入输出,启动程序等操作。

例如,查看内存保护。它可以防止程序写入彼此的内存。但是为了使其起作用,操作系统需要能够为每个程序设置内存页面映射。如果允许任何程序设置该怎么办?那时没有保护 - 每个程序都可以破坏保护。这就是为什么要执行这种操作需要超级用户模式的原因 - 只有操作系统可以执行此操作而用户程序不能执行此操作。

Btw管理员模式不禁止“用户操作” - 它允许任何操作。

答案 1 :(得分:1)

监控模式提供堆栈指针的第二个副本。用户堆栈和管理程序堆栈都位于不同的内存区域中。当前任务的堆栈指针将指向监控模式或用户模式。

USP - A7:用户堆栈指针

SSP - A7:监控堆栈指针

每种模式都有一个堆栈指针,因为每种模式都是自包含的代码线程 - 一个用于当前的顶级任务,另一个用于操作系统。如果它们都使用相同的堆栈,则操作系统可能会为用户应用程序分配堆栈。换一种说法。操作系统可能不知道堆栈的限制是什么,以支持任何给定的操作系统功能。

拥有两个独立的堆栈要安全得多。如果系统只有一个stakc,操作系统必须自己调整堆栈指针寄存器,以确保正确使用不同的存储区 - 即。操作系统的内存和任务的内存。