中断上下文代码为什么不能阻塞
1. 中断的随机性与紧迫性
- 中断可能在任何时间点发生,打断任何正在执行的代码(包括内核或用户进程)。
- 系统需要尽快响应硬件中断(如网卡收到数据包、磁盘I/O完成),否则可能导致数据丢失或设备故障。
- 如果中断处理程序阻塞,被中断的代码将无法恢复执行,系统响应会严重延迟。
2. 中断上下文的特殊约束
- 中断上下文没有进程关联,不隶属于任何进程或线程,因此无法被调度器管理。
- 如果中断处理程序休眠(如调用可能阻塞的函数),系统无法切换到其他进程“等待”,可能导致死锁或系统冻结。
留下评论