操作系统的中断操作

一、中断的类型

1. 硬件中断(外部中断)
  • 触发源:由外部设备(如键盘、硬盘、网卡)通过硬件信号通知CPU。
  • 特点
    • 异步:发生时间不可预测(如用户按下键盘)。
    • 可屏蔽:可通过设置中断屏蔽位暂时忽略(如处理关键代码时关闭中断)。
  • 示例
    • I/O完成中断:硬盘读取完成时通知CPU处理数据。
    • 时钟中断:定时器周期性触发,用于任务调度或超时检测。
2. 异常(内部中断)
  • 触发源:CPU执行指令时检测到错误或特殊条件。
  • 特点
    • 同步:由当前执行的指令直接引发。
    • 不可屏蔽:必须立即处理(如除零错误、内存访问违规)。
  • 分类
    • 故障(Fault):可修复的错误(如缺页异常,处理后可继续执行)。
    • 陷阱(Trap):主动触发,用于系统调用(如int 0x80触发内核服务)。
    • 终止(Abort):严重错误(如硬件故障),导致进程终止。
3. 软中断(软件中断)
  • 触发源:由程序主动发起(如系统调用)。
  • 示例
    • 系统调用:用户程序通过syscall指令陷入内核态。
    • 调试断点:调试器通过软中断暂停程序执行。

二、中断处理流程

1. 中断触发
  • 硬件设备或异常条件发送中断信号到CPU的中断控制器(如APIC、PIC)。
  • 中断控制器根据优先级决定是否向CPU传递信号。
2. CPU响应
  • 保存上下文:CPU暂停当前任务,将寄存器状态(如程序计数器、标志寄存器)压入栈。
  • 关闭中断:部分场景需暂时屏蔽其他中断(通过CLI指令)。
3. 执行中断处理程序(ISR)
  • 查中断向量表(IDT):根据中断号(如IRQ编号)找到对应的处理函数。
  • 运行ISR
    • 硬件中断:读取设备状态,处理数据(如将键盘输入存入缓冲区)。
    • 异常:尝试修复错误(如缺页异常加载内存页)或终止进程。
    • 系统调用:切换至内核态,执行服务例程(如读写文件)。
4. 恢复执行
  • 恢复上下文:从栈中恢复寄存器状态。
  • 开启中断:重新允许响应中断(通过STI指令)。
  • 继续执行:返回原任务或调度新任务(如时钟中断触发进程切换)。

三、关键概念

1. 中断优先级
  • 多个中断同时发生时,高优先级中断优先处理(如时钟中断 > 键盘中断)。
  • 优先级由中断控制器配置,避免低优先级任务阻塞系统。
2. 中断嵌套
  • 允许高优先级中断打断正在处理的低优先级中断。
  • 需谨慎处理栈空间和资源竞争(如避免死锁)。
3. 中断与轮询
  • 中断驱动:事件触发响应,节省CPU资源(适合随机事件)。
  • 轮询(Polling):CPU主动检查设备状态,简单但效率低(适合高频事件)。
4. 中断上下文
  • 与进程上下文的区别
    • 中断处理程序运行在中断上下文,不能阻塞(如不可调用可能休眠的函数)。
    • 进程上下文可切换调度(如系统调用处理)。

四、中断的实际应用

1. 设备驱动
  • 网卡收到数据包后触发中断,CPU将数据从硬件缓冲区拷贝到内存。
2. 任务调度
  • 时钟中断触发调度器,决定是否切换进程(如时间片耗尽)。
3. 系统调用
  • 用户程序通过软中断(如syscall)进入内核态,执行特权操作。
4. 错误处理
  • 缺页异常触发页面加载,内存访问错误终止进程。

五、中断与线程中断的区别

特性操作系统中断线程中断(Java等)
触发源硬件或CPU异常另一个线程调用interrupt()
处理层级底层硬件/内核应用层代码协作
响应机制强制暂停CPU当前任务目标线程检查标志并决定是否退出
典型应用设备I/O、异常处理、任务调度协作式线程终止、取消任务

六、示例:键盘输入中断处理

  1. 用户按下键盘按键,键盘控制器发送中断信号。
  2. CPU保存当前寄存器状态,跳转到键盘中断处理程序。
  3. 程序从键盘缓冲区读取按键编码,转换为字符。
  4. 将字符存入输入队列,唤醒等待输入的进程。
  5. CPU恢复原任务继续执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值