为什么在linux中中断服务程序中不能调用可能阻塞的函数
发布网友
发布时间:2022-05-16 14:37
我来回答
共2个回答
热心网友
时间:2023-10-26 04:30
任何操作系统,在中断服务函数中,都不能阻塞,另外中断服务函数还应该越短越好,主要原因是:
1、 中断服务函数的执行和一般进程执行某个函数时的上下文环境 (context) 是不一样的,是在一个特定的context中,这个环境不许阻塞,否则系统异常。
2、 中断服务函数过长甚至阻塞,会严重影响整个系统运行效率甚至挂死 (想想看,系统无时无刻不在产生各种各样中断,操作系统本身的运行也依靠某些精确发生的中断,比如定时器靠时钟中断等,如果某个中断处理函数执行了很长时间 【阻塞可以理解成导致函数执行了无限长的时间】,整个系统就无法正常工作了)
热心网友
时间:2023-10-26 04:31
你最好看些内核的书。
阻塞函数,就是不能被暂时唤出的程序,必须原子的执行完毕,当然不能被中断函数切换出去。