主管模式与用户模式
为什么操作系统需要这种区别?
我知道Supervisor模式是用于OS支持的,我知道用户模式是用于应用程序支持的。我隐约明白,这些用于确保用户的操作仅在用户模式下发生,而OS操作仅在超级模式下发生。我只是想进行更深入的讨论,以填补我可能缺少的任何空白。
感谢。
答案 0 :(得分:3)
用户模式禁止某些操作 - 例如写入随机存储器 - 以保护程序彼此之间的连接。管理员模式允许这些操作,因为操作系统需要它们执行输入输出,启动程序等操作。
例如,查看内存保护。它可以防止程序写入彼此的内存。但是为了使其起作用,操作系统需要能够为每个程序设置内存页面映射。如果允许任何程序设置该怎么办?那时没有保护 - 每个程序都可以破坏保护。这就是为什么要执行这种操作需要超级用户模式的原因 - 只有操作系统可以执行此操作而用户程序不能执行此操作。
Btw管理员模式不禁止“用户操作” - 它允许任何操作。
答案 1 :(得分:1)
监控模式提供堆栈指针的第二个副本。用户堆栈和管理程序堆栈都位于不同的内存区域中。当前任务的堆栈指针将指向监控模式或用户模式。
USP - A7:用户堆栈指针
SSP - A7:监控堆栈指针
每种模式都有一个堆栈指针,因为每种模式都是自包含的代码线程 - 一个用于当前的顶级任务,另一个用于操作系统。如果它们都使用相同的堆栈,则操作系统可能会为用户应用程序分配堆栈。换一种说法。操作系统可能不知道堆栈的限制是什么,以支持任何给定的操作系统功能。
拥有两个独立的堆栈要安全得多。如果系统只有一个stakc,操作系统必须自己调整堆栈指针寄存器,以确保正确使用不同的存储区 - 即。操作系统的内存和任务的内存。