(二) 中断、异常和系统调用比较
摘要
为什么要中断、异常和系统调用
在计算机运行中,内核被信任的第三方
只有内核可以执行特权指令
方便应用程序
中断和异常希望解决的问题
当外设连接计算机时,会出现什么现象
当应用程序处理意想不到的行为时,会出现什么现象。
系统调用希望解决的问题
用户应用程序是如何得到系统服务?
系统调用和功能调用的不同之处?
一、概念
-
系统调用 (system call)
-
应用程序 主动 向操作系统发出的服务器请求
-
-
异常 (exception)
-
非法指令或其他原因导致当前 指令执行失败
-
如: 内存出错后的处理请求
-
-
-
中断(hardware interrupt)
-
来自硬件设备的处理请求
-
二、中断、异常和系统调用的比较
-
源头
-
中断:外设
-
异常:应用程序意想不到的行为
-
系统调用:应用程序请求操作提供服务
-
-
响应方式
-
中断:异步
-
异常:同步
-
系统调用:异步或同步
-
-
处理机制
-
中断:持续,对用户应用程序是透明的
-
异常:杀死或重新执行意想不到的应用程序指令
-
系统调用:等待和持续
-
-
中断处理机制
-
硬件处理
-
在CPU初始化时设置 中断使能 标志
-
依据内部或外部事件设置中断标志
-
依据 中断向量 调用相应 中断服务 例程
-
-
-
软件
-
现场保持 (编译器)
-
中断服务处理 (服务例程)
-
清除中断标记 (服务例程)
-
现场恢复 (编译器)
-
注: 都到了中断向量表,中断--中断服务例程,异常--异常服务例程,系统调用--总共占有一个中断编号,不同系统调用功能由系统调用表来表示的。由系统调用表的不同,选中不同的系统调用实现。
-
-
-
中断嵌套
-
硬件中断服务例程可以被打断
-
不同硬件 中断源可能硬件中断处理时出现
-
硬件中断服务例程中需要 临时禁止中断 请求
-
中断请求会保持到cpu做出响应
-
-
异常服务例程可被打断
-
异常服务例程执行时可能出现硬件中断
-
-
异常服务例程可嵌套
-
异常服务例程可能出现缺页
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于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保姆级教程