实验二 阻塞与并发实验
一、实验目的:
1、掌握linux驱动对并发的处理,熟悉信号量,自旋锁,原子操作等的使用。
2、掌握linux驱动对阻塞的处理,熟悉等待队列的使用。
二、实验设备:
友善之臂4412开发板、学生自带笔记本、USB转串口线、电源、网线。
三、 实验地点及时间
地点:A2-303a
时间:教学周第四周
四、实验内容:
1、在ARM开发板上面,在驱动程序中利用自旋锁,编写程序,并进行测试验证所学内容。
2、在ARM开发板上面,在驱动程序中利用信号量,编写程序,并进行测试验证所学内容。
3、在ARM开发板上面,在驱动程序中利用等待队列,编写程序,并进行测试验证所学内容。
五、实验原理:
1、自旋锁原理
自旋锁最多只能被一个可执行单元持有。自旋锁不会引起调用者睡眠,如果一个执行线程试图获得一个已经被持有的自旋锁,那么线程就会一直进行忙循环,一直等待下去,在那里看是否该自旋锁的保持者已经释放了锁,“自旋”就是这个意思。 spinlock_t lock;定义自旋锁
spin_lock_init(x)该宏用于初始化自旋锁x,自旋锁在使用前必须先初始化。
spin_lock(lock)获取自旋锁lock,如果成功,立即获得锁,并马上返回,否则它将一直自旋在那里,直到该自旋锁的保持者释放。