zoukankan      html  css  js  c++  java
  • # 操作系统中断

    操作系统中断

    中断的分类

    中断按照触发的来源可以分为两类,内部中断和外部中断。其中内部中断实在cpu内部引起的,也就是说是由当前的进程触发的所以也叫异常。而外部中断也就是由cpu以外的设备触发的。

    外部中断和内部中断

    为什么要有外部中断呢?实际上我们可以由cpu来管理所有的设备,比如IO设备。

    但是现在就会存在一个问题,IO的响应十分的慢,而cpu的处理十分的快,所以我们就不希望缓慢的IO影响快速的cpu,我们希望cpu能够在他本来等待IO的时间里去干更多的事情。

    所以我们的IO设备内部自己就拥有一块控制芯片,他接受了这个IO任务。在他将这任务完成了以后就通过中断通知cpu。

    所以我们也就很容易明白外部中断是异步的,而内部中断由于是当前的运行进程引发的,所以很明显是同步的。

    中断的处理流程

    首先从指令的角度来看起。

    当一条指令执行完成以后,cpu检查是否有需要处理的中断。如果需要处理的中断就保存当前重要的上下文信息(并非完整的上下文信息),然后对照中断向量表(中断向量表是由操作系统预设的,也就是软件提供的)查找对应的中断处理程序,并设置下一条指令为中断处理程序的起始指令。这些都是硬件自动完成的。

    中断处理程序首先保存当前的上下文环境(更完整的),然后处理中断请求。处理完成之后,回复我们保存的之前的运行时环境,简单来说就是处理了一个中断以后一切又回归的原来的位置。这是软件处理的。

    在这里我可以觉得cpu的运行从计算机开机的那一刻起完全就是事件驱动的了。

  • 相关阅读:
    图片无缝横向滚动
    MySQL命令小结
    Git初级
    VS2012 创建的entityframework 4.1版本
    IE10 下系统出现Unable to get property 'PageRequestManager' of undefined or null reference错误
    MIME Types
    不兼容的数据类型
    使用Lambda .map函数将入参List转换至其它List
    MySQL中那种数据类型是只有true和false的
    ELK Stack
  • 原文地址:https://www.cnblogs.com/freesfu/p/11768627.html
Copyright © 2011-2022 走看看