用户态到内核态,调用api
ioctl是运行在用户态
中断的上下半部分
另外,与Linux中断息息相关的一个重要概念是Linux中断分为两个半部:上半部(tophalf)和下半部(bottom half)。上半部的功能是"登记中断",当一个中断发生时,它进行相应地硬件读写后就把中断例程的下半部挂到该设备的下半部执行队列中去。因此,上半部执行的速度就会很快,可以服务更多的中断请求。但是,仅有"登记中断"是远远不够的,因为中断的事件可能很复杂。因此,Linux引入了一个下半部,来完成中断事件的绝大多数使命。下半部和上半部最大的不同是下半部是可中断的,而上半部是不可中断的,下半部几乎做了中断处理程序所有的事情,而且可以被新的中断打断!下半部则相对来说并不是非常紧急的,通常还是比较耗时的,因此由系统自行安排运行时机,不在中断服务上下文中执行。
驱动同步方式自旋锁,读写锁,RCU,原子变量
自旋锁就是当一个cpu获得了一个自旋锁的时候,另外的cpu就一直判断这个自旋锁到底有没有解锁,如果没有的话,就一直询问,直到,占有的那个cpu释放这个锁的时候别的cpu才能再次占有该锁
读写锁就是读可多个,写只有一个
rcu文章有
原子变量就是取地址占用总线