引用第2楼powerpan于2009-05-19 13:13发表的 :
这样说吧,中断处理linux的确很快,us级的,但是中断处理是在内核完成的,如果在内核中中断处理的时间过长(从总线读8K的数据),不知道什么原因,系统会死掉,从编程的角度这样也不太规范。但如果置标志位在应用程序读数据的话,就要改时间片了。
不要在硬件的中断处理函数(ISR)里做大量的数据IO,ISR应该尽快返回以免造成别的硬件中断延迟。那应该是中断处理线程(IST)该做的,比如,在硬件中断处理函数里唤醒一个专门用于从硬件中读数据的内核线程(kernel thread),将数据放到驱动的buffer中,最后唤醒等着读数据应用程序。这是目前主流的硬件中断+阻塞式读写数据实现方式。
关于中断处理,Linux Device Driver 第三版里第十章"Interrupt Handling"这一章里有很详细的描述。关于阻塞方式的IO,看这本书的第6章"Advanced Char Operations"
[ 此帖被kasim在2009-05-19 14:03重新编辑 ]