1、中断上下文不能和用户空间数据交换
2、不能交出CPU(不能休眠、不能schedule)
3、ISR运行时间尽可能短,越长则系统响应性越差。
4、中断上下半部理解:
a、必须立即处理的极少量任务放在终端的额顶半部中,此时屏蔽了自己同类型的中断,由于任务量少,所以可以迅速不受打扰地处理完紧急任务。
b、需要较少时间的中等数量的急迫任务放在tasklet中。此时不会屏蔽任何中断(包括与自己的顶半部同类型的中断),所以不影响顶半部对紧急事务的处理,同事又不会进行用户进程调度,从而保证了自己急迫任务得以迅速完成。
c、需要较多时间并不急迫(允许被操作系统剥夺运行权)的大量任务放在workqueue中。此时操作系统会尽量快速地处理完这个任务,但如果任务量太大,期间操作系统也会有机会调度别的用户进程。从而保证不会因为这个任务需要运行时间导致其他用户进程无法进行。
2、不能交出CPU(不能休眠、不能schedule)
3、ISR运行时间尽可能短,越长则系统响应性越差。
4、中断上下半部理解:
a、必须立即处理的极少量任务放在终端的额顶半部中,此时屏蔽了自己同类型的中断,由于任务量少,所以可以迅速不受打扰地处理完紧急任务。
b、需要较少时间的中等数量的急迫任务放在tasklet中。此时不会屏蔽任何中断(包括与自己的顶半部同类型的中断),所以不影响顶半部对紧急事务的处理,同事又不会进行用户进程调度,从而保证了自己急迫任务得以迅速完成。
c、需要较多时间并不急迫(允许被操作系统剥夺运行权)的大量任务放在workqueue中。此时操作系统会尽量快速地处理完这个任务,但如果任务量太大,期间操作系统也会有机会调度别的用户进程。从而保证不会因为这个任务需要运行时间导致其他用户进程无法进行。
d、可能引起睡眠的任务放在workqueue中。因为workqueue中睡眠是安全的,在需要获得大量的内存时,在需要获取信号量时,在需要执行阻塞式的I/O操作时,用workqueue是很合适的。
e、中断上半部一旦开始执行,必须执行完,才能允许同级别甚至高级别的中断响应。