(二) 中断、异常和系统调用比较

 

(二) 中断、异常和系统调用比较

摘要

  1. 为什么要中断、异常和系统调用

    • 在计算机运行中,内核被信任的第三方

    • 只有内核可以执行特权指令

    • 方便应用程序

  2. 中断和异常希望解决的问题

    • 外设连接计算机时,会出现什么现象

    • 当应用程序处理意想不到的行为时,会出现什么现象。

  3. 系统调用希望解决的问题

    • 用户应用程序是如何得到系统服务?

    • 系统调用和功能调用的不同之处?

一、概念

  • 系统调用 (system call)

    • 应用程序 主动 向操作系统发出的服务器请求

  • 异常 (exception)

    • 非法指令或其他原因导致当前 指令执行失败

      • 如: 内存出错后的处理请求

  • 中断(hardware interrupt)

    • 来自硬件设备的处理请求

二、中断、异常和系统调用的比较

  • 源头

    • 中断:外设

    • 异常:应用程序意想不到的行为

    • 系统调用:应用程序请求操作提供服务

  • 响应方式

    • 中断:异步

    • 异常:同步

    • 系统调用:异步或同步

  • 处理机制

    • 中断:持续,对用户应用程序是透明的

    • 异常:杀死或重新执行意想不到的应用程序指令

    • 系统调用:等待和持续

  • 中断处理机制

    • 硬件处理

      • 在CPU初始化时设置 中断使能 标志

        • 依据内部或外部事件设置中断标志

        • 依据 中断向量 调用相应 中断服务 例程

    • 软件

      • 现场保持 (编译器)

      • 中断服务处理 (服务例程)

      • 清除中断标记 (服务例程)

      • 现场恢复 (编译器)

      • 注: 都到了中断向量表,中断--中断服务例程,异常--异常服务例程,系统调用--总共占有一个中断编号,不同系统调用功能由系统调用表来表示的。由系统调用表的不同,选中不同的系统调用实现。

  • 中断嵌套

    • 硬件中断服务例程可以被打断
      • 不同硬件 中断源可能硬件中断处理时出现

      • 硬件中断服务例程中需要 临时禁止中断 请求

      • 中断请求会保持到cpu做出响应

    • 异常服务例程可被打断
      • 异常服务例程执行时可能出现硬件中断

    • 异常服务例程可嵌套
      • 异常服务例程可能出现缺页

 

 

posted @ 2017-02-23 01:06  douzujun  阅读(1407)  评论(0编辑  收藏  举报