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

 


 

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

摘要

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

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

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

    • 方便应用程序

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

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

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

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

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

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

一、概念

  • 系统调用 (system call)

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

  • 异常 (exception)

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

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

  • 中断(hardware interrupt)

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

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

  • 源头

    • 中断:外设

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

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

  • 响应方式

    • 中断:异步

    • 异常:同步

    • 系统调用:异步或同步

  • 处理机制

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

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

    • 系统调用:等待和持续

  • 中断处理机制

    • 硬件处理

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

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

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

    • 软件

      • 现场保持 (编译器)

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

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

      • 现场恢复 (编译器)

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

  • 中断嵌套

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

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

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

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

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

 

 

posted @   douzujun  阅读(1455)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示