操作系统上下文中的中断是什么意思?


9

我决定阅读操作系统概念在整个夏天 Silberschatz的,Galvin Gagne(第8版)。我遇到了一个使我感到困惑的话题-中断及其在操作系统中的作用。

文字说,操作系统将开始第一个过程,例如“ init”,然后等待“事件”发生,该事件通常由中断来发出信号。文本还说,中断可以来自硬件或软件。更详细地说,这是如何工作的?操作系统是由中断驱动的吗?

我只是在寻找一些大的了解。

Answers:


8

当操作系统运行诸如“ init”之类的进程时,它将向其他子系统/设备管理器等发送信号,例如内存,I / O设备等。中断只是告诉处理器或处理器的一种方式。操作系统已准备就绪,或者具有新的输入等。因此,在初始化过程中的某个时候,操作系统正在等待子系统就绪,而来自这些子系统的中断将准确地表明这一点。这就是“事件”的含义。

关于硬件或软件中断,硬件中断是来自硬件的中断。例如。I / O设备(如键盘等)。硬件中断导致处理器保存其状态并开始执行中断处理程序。另一方面,软件中断是指令集中的指令,它导致处理器从用户管理器(也称为上下文切换)更改其特权级别。这些细节将在后面的教科书中介绍。


4

中断使操作系统能够注意到外部事件,例如鼠标单击。软件中断(通常称为异常)使操作系统能够处理异常事件,例如代码执行产生的被零除错误。

事件的顺序通常是这样的:

  1. 硬件向处理器发出中断信号
  2. 处理器注意到中断并挂起当前正在运行的软件
  3. 处理器跳至OS中匹配的中断处理程序功能
  4. 中断处理程序运行其过程并从中断返回
  5. 处理器将从先前运行的软件中中断的位置继续

对于操作系统,最重要的中断是计时器滴答中断。计时器中断允许OS定期从当前正在运行的用户进程中重新获得控制权。然后,操作系统可以决定调度另一个进程,返回到相同的进程,进行内务处理等。计时器滴答中断为抢先式多任务处理的概念提供了基础。


4

中断是发生的“异常”事件,无论其他情况如何,都需要立即对其进行处理。我用引号说“不寻常”,因为它们不一定是意料之外的或不好的,但从CPU的角度来看是“不寻常的”,因为它们在忙于执行可能无关的代码时“只是发生”。

CPU具有侦听中断的机制,以及在发生各种中断时配置“做什么”的某种方式。这使操作系统可以安排在硬件设备执行操作时将通知它(包括非常重要的硬件时钟,该时钟仅按固定的时间间隔生成中断)。通过CPU的中断处理配置,每当发生中断时,操作系统中的指定代码将获得控制权。

当中断处理程序开始运行时,计算机(对于应用程序程序员)处于非常不愉快的状态。机器忙于做其他事情(可能是任何事情),现在操作系统已收到通知“发生了什么事”。它必须收集所有实际需要的信息,以便从应该在其应位于机器中的任何位置实际处理该中断,并执行所需的任何处理,而不会干扰正在CPU上运行的“可能是任何东西”。如果操作系统要切换当前正在运行的应用程序进程,则必须保存足够的上下文,以便以后可以还原它(再次,不打扰该上下文),然后加载其他上下文,然后让CPU恢复正常在这种情况下执行。

如前所述,中断用于从硬件设备获取通知(唯一的选择是定期检查它们),跟踪时间并确保有机会从应用程序进程中重新获得控制权(以便切换正在运行的应用程序) ,从执行无效指令的应用程序进程中恢复,还使应用程序能够向操作系统发出请求。这些最后一个称为系统调用。为了防止应用程序相互干扰,计算机通常在“用户模式”下运行,这将阻止应用程序执行除读取和写入已分配给它的(虚拟)内存以外的任何其他操作。这意味着要做任何事情否则(读取/写入文件,请求更多的内存,访问设备等),应用程序必须进行系统调用;它基本上是通过在知道操作系统会寻找它的地方保留一些有关它想做什么的信息,然后执行导致正确中断的CPU指令来完成此操作的。然后,操作系统可以查看应用程序正在尝试执行的操作,并确定是否应执行该请求。这样可以确保操作系统将参与任何进程的尝试以执行任何会影响进程外部的操作,这是强制实施访问策略的唯一方法。

因此,从本质上讲,是的,操作系统是由中断驱动的。“抽象”操作系统将机器引导至“正常运行”状态,并在某些时候将控制权移交给“正常”进程。在正常情况下,操作系统将仅通过处理中断来重新获得控制权。但是由于几乎没有任何有趣的事情发生而没有中断,因此OS基本上可以始终控制所有内容。


3

操作系统由中断驱动。这意味着:

如果没有要执行的进程,没有要服务的I / O设备,也没有要响应的用户,则操作系统将静静地坐着,等待事情发生。事件几乎总是由中断或陷阱的发生来表示,陷阱是当给出无效指令时生成的硬件中断,然后它将控制权返回给OS。

无效指令的一个示例是程序在没有权限的情况下尝试访问另一个程序的内存空间。


中断不一定总是像您所描述的那样是坏的或无效的

据我所知,我正在描述陷阱中断,原因是由于某些错误或无效指令而产生的陷阱中断。thanx通知我
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.