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

    操作系统中断

    中断的分类

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

    外部中断和内部中断

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

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

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

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

    中断的处理流程

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

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

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

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

  • 相关阅读:
    spring boot整合使用mybatis
    spring boot整合使用jdbcTemplate
    spring boot全局捕获异常
    springboot 静态资源访问
    spring boot项目的启动方式
    第一个spring boot项目 springboot-helloworld
    ASP.Net MVC 登录授权验证
    C# mysql 事务处理
    无法删除数据库,因为该数据库当前正在使用"问题解决
    mysql 按照小时去除一段时间内的不同状态数据统计
  • 原文地址:https://www.cnblogs.com/freesfu/p/11768627.html
Copyright © 2011-2022 走看看