当前位置: 技术问答>linux和unix
书上说,中断用自旋锁,进程,用信号量,但是,为什么中断不能用信号量?
来源: 互联网 发布时间:2017-02-14
本文导语: 在中断处理程序中可以使用自旋锁”意思是使用自旋锁即使它一时获取不到需要的资源,也会在那里自旋,不会让出处理器,而导致睡眠。 书上说,中断用自旋锁,进程,用信号量,但是,为什么中断不能用信号量...
在中断处理程序中可以使用自旋锁”意思是使用自旋锁即使它一时获取不到需要的资源,也会在那里自旋,不会让出处理器,而导致睡眠。
书上说,中断用自旋锁,进程,用信号量,但是,为什么中断不能用信号量?我认为,不论spin lock或者信号量,你在中断程序中使用,他们的对象都是进程,只是让进程睡觉,或者旋转等待,为什么要这么说在中断处理程序中可以使用自旋锁,不用信号量
问题2 :spin lock能够在进程编程里使用吗?只能用在中断里?
问题3:DMA要求的内存是在内和空间的还是用户空间的?
书上说,中断用自旋锁,进程,用信号量,但是,为什么中断不能用信号量?我认为,不论spin lock或者信号量,你在中断程序中使用,他们的对象都是进程,只是让进程睡觉,或者旋转等待,为什么要这么说在中断处理程序中可以使用自旋锁,不用信号量
问题2 :spin lock能够在进程编程里使用吗?只能用在中断里?
问题3:DMA要求的内存是在内和空间的还是用户空间的?
|
看书不仔细!
LKD中的8.4节:信号量
Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已经被占用的信号量时,信号量会将其推进一个等待队列,然后让其睡眠。
显然,ISR中不能睡眠(中断上下文,ISR是一种内核控制路径,存在抢占),所以只能用spin lock,还要禁止中断(硬件中断和软中断)。