【问题标题】:What's the need for separate "supervisor" and "user" mode?单独的“主管”和“用户”模式需要什么?
【发布时间】:2011-10-25 06:38:11
【问题描述】:

监督者模式与用户模式

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

我知道主管模式是为了支持操作系统,我知道用户模式是为了支持应用程序。我隐约明白,使用这些是为了确保用户的操作只发生在用户模式,而操作系统的操作只发生在超级模式。我只是在寻找更深入的讨论来填补我可能遗漏的任何空白。

谢谢。

【问题讨论】:

    标签: assembly operating-system x86


    【解决方案1】:

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

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

    顺便说一句,管理员模式不禁止“用户操作”——它允许任何操作。

    【讨论】:

      【解决方案2】:

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

      USP - A7:用户堆栈指针

      SSP - A7:监督堆栈指针

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

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

      【讨论】:

        猜你喜欢
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 2014-05-19
        • 2023-03-15
        相关资源
        最近更新 更多