《Linux 下半部机制介绍》将逐步介绍linux的一些下半部机制原理(软中断/tasklist/工作队列等),本章内容先聊聊上下部机制的由来
为什么要有下半部机制?
要聊上下部机制,那么就先要从硬件中断,也就是上下部机制的上部机制聊起,也就是硬件中断
在没有硬件中断设计的日子里,CPU是可以快乐的光明正大的耗电(拿工资)摸鱼的,在它处理外设的请求时,它并不知道外设什么时候能准备好,所以它可以光明正大的过一段时间就去轮序一下外设,问他们准备好没有。
CPU:好没好?
外设:没有
CPU:好没好?
外设:没有
CPU:好没好?
外设:没有
……
CPU:好没好?
外设:好了
CPU:我处理一下,处理好了
CPU:好没好?
外设:没有
CPU:好没好?
外设:没有
这程序员一看不高兴了,合着你耗着我这么多电,就在哪儿不停”好没好?”,半天干不了一件正事儿,程序员心想,这可不行,要想办法。思来想去,外设工资低啊,那就让外设准备好了的时候,来通知CPU ,CPU停下手里的活,马上帮外设处理。其余时间CPU老老实实干自己的活。这样就是硬件中断设计,有了硬件中断设计,CPU摸鱼的机会少很多了。
这样愉快的工作了一段时间,程序员又发现一个问题。CPU有时候会和外设一起摸鱼,这是为什么呢?原来外设打断CPU(硬件中断),让它帮忙处理事情的时候,CPU是不响应其他外设的(处理中断的时候中断时被屏蔽掉的)。结果就是CPU腻腻歪歪在关中断的情况下慢慢处理工作(抽空摸鱼),导致有的中断不能及时处理,这显然有问题。继续想办法优化(压榨)!
于是就有了下半部机制设计,上下部机制原理简单来说就是
上半部记录,下半部处理
防止CPU长时间在关中断状态下工作(摸鱼)
准备一个小本儿,中断来了先给CPU记下来,然后处理一些紧要的事情,马上把中断打开。
小本记录的工作放到了下半部(开中断的情况下)让CPU处理。这样在处理下半部工作的时候,新的中断来了还能及时响应,又能提高(压榨)一波效率,美滋滋。
上面就是上下部分机制设计的中心思想,后续的文章详细聊聊几种下半部机制,如软中断/tasklet(基于软中断实现)/工作队列等