操作系统中的特权指令和非特权指令

2024 年 8 月 28 日 | 阅读 6 分钟

在本教程中,我们将学习操作系统中的特权指令和非特权指令。在学习这些指令之前,让我们先了解一下操作系统。

操作系统

操作系统是一个程序,它充当计算机与计算机硬件之间的中介或网关。操作系统(OS)是在计算机安装完成后(或安装之前由引导程序安装)处理计算机上所有其他应用程序的软件。

引导程序的安装是通过特定的应用程序接口完成的,应用程序通过应用程序接口(API)向操作系统请求服务。此外,用户还可以通过用户界面(如图形用户界面(UI)、命令行界面(CLI)或(GUI))直接与操作系统进行通信。

双模式运行

只有当操作系统运行良好时,计算机才能正常工作。因此,我们必须确保操作系统正在进行或在适当的执行下工作。

为了确保操作系统的正常执行,我们必须能够区分操作系统代码和用户定义代码的执行。所有计算机都遵循这种方法。之所以这样做,是因为操作系统为硬件提供支持,并且它帮助我们并允许我们看到不同执行模式之间的差异。

我们还需要多种操作模式,因为程序中的错误可能会给现有和正在执行的进程带来许多问题。

例如,如果正在运行的程序陷入无限循环。那么,所有剩余的进程都必须等待现有进程完成。实际上,程序在耗尽所有资源之前永远不会停止执行。因此,为了防止所有这些问题的发生,使用了这种双模式操作。

双模式操作中使用的两种操作是:

  • 用户模式
  • 内核模式

用户模式

当计算机系统执行操作系统提供的进程时,例如创建记事本文档或使用任何内置程序等用户应用程序,此时将使用用户模式。在这种情况下,操作系统使用用户模式。

当用户程序发出操作系统服务请求、中断或系统调用时,将从用户模式切换到内核模式进行处理。

内核模式

当计算机系统执行操作系统提供的进程时,例如操作系统启动并处于加载状态时,系统会安装引导程序,硬件会以内核模式启动。此模式用于在用户模式下启动用户应用程序。

为了在内核模式下提供保护,操作系统仅使用特权指令,这些指令只能在内核模式下执行。如果用户尝试在用户模式下运行特权指令,操作系统将把该指令视为非法指令并触发到操作系统。

内核模式也称为监督模式、系统模式、特权模式等。

用户模式与内核模式的关系

用户模式和内核模式通过一个位来区分。这个位也称为模式位。这个模式位被添加到计算机硬件中。添加此位的目的是了解计算机的当前模式。

如果该位或模式位为零(0),则执行处于内核模式。

如果该位或模式位为一(1),则执行处于用户模式。

这有助于区分用户模式和内核模式的任务。当计算机系统代表用户应用程序执行时,系统处于用户模式。但是,当用户应用程序通过系统调用请求操作系统服务时,它必须从用户模式过渡到内核模式才能满足请求。在系统启动时,硬件以内核模式启动。然后加载操作系统,并在用户模式下启动用户应用程序。

指令

指令是应用程序或应用软件给计算机的任务、命令或指令。这些指令由计算机中使用的操作系统执行。操作系统中有两种类型的指令。它们是:

  1. 特权指令
  2. 非特权指令

在学习它们之前,让我们先了解一下指令在操作系统中的生命周期。

指令的生命周期

指令的演变始于指令的初始执行,它在内核模式下进行,由操作系统控制。当用户启动应用程序时,应用程序的控制立即转移到用户模式。

当指令被系统调用、发生系统中断或发生系统陷阱时,指令的工作会被突然发送到内核模式。执行完系统调用后,控制会返回到之前的指令。所有指令都以这种方式执行。

现在让我们讨论特权指令和非特权指令。

特权指令

只能在内核模式下执行的指令称为特权指令。

我们知道特权指令只能在内核模式下执行。但是,如果特权指令试图在用户模式下执行,则由于该指令无法在用户模式下执行,因此该指令将被丢弃并被视为非法指令。指令将被硬件在操作系统中阻止。

操作系统负责查看被阻止的指令是否可以执行。操作系统还有责任在将访问或控制权授予任何用户或系统应用程序之前,为任何系统中断设置计时器。

如果发生系统中断,操作系统可以掌握计时器的访问控制权。

操作系统的职责是确保特权指令的正常运行。

特权指令的例子

  1. 清除内存
  2. 输入输出指令
  3. 停止指令
  4. 上下文指令
  5. 将进程从内存中移除
  6. 设置计时器
  7. 关闭所有中断
  8. 修改设备状态表中的条目
  9. 刷新数据缓存
  10. 重置处理器
  11. 加载和读取系统寄存器
  12. 将处理器模式从内核更改为用户
  13. 更改处理器的电压和频率
  14. 使数据缓存无效
  15. 使 TLB 条目无效

特权指令非常危险。因此,我们必须非常小心。我们应该明智地使用它们。它们可能会在未来给我们的计算机带来问题。

非特权指令

只能在用户模式下执行的指令称为非特权指令。

非特权指令的例子

  1. 执行算术运算
  2. 读取系统时间
  3. 将最终输出发送到打印机打印
  4. 读取处理器状态
  5. 生成陷阱指令

模式切换机制遵循以下规则:

  1. 用户 → 内核(内置于硬件)
  2. 内核 → 用户(特权指令)

我们都知道计算机有两个不同的部分。它们是:

  1. 硬件
  2. 软件

软件部分通过上述指令与硬件部分通信。

非特权指令是安全指令。它们不会在未来给计算机带来任何问题。

软件部分可根据指令分为不同类别。它们是:

  1. 内核
  2. 应用

内核只能执行特权指令。

其中,

应用程序有能力执行特权指令和非特权指令。

操作系统中特权指令与非特权指令的区别

序号特权指令非特权指令
1. )只能在内核模式下执行的指令称为特权指令。只能在用户模式下执行的指令称为非特权指令。
2.)这些指令通常用于敏感过程,并且只允许在特定条件下执行。由于它们不共享任何资源,因此这些指令的执行不会干扰其他操作。