linux内核互斥锁mutex实现详解(基于ARM处理器)
1、互斥锁mutex结构体
- count: 互斥锁变量,0表示被占用(已经被获取),1表示没有被占用(空闲可获取)
- owner: 当前获取该锁的任务(线程/进程),细节没有仔细看,对应实时系统,高优先级进程尝试获取被低优先级进程抢占的互斥锁时,可以通过类似owner类似的指针,优先级反转,主动切换到低优先级进程,等低优先级释放互斥锁时检查到高优先级进程因未获取到互斥锁而暂停了,主动执行进程调度,让出cpu给高优先级进程
- wait_list: 等待获取互斥锁的任务链表,互斥锁释放时会唤醒wait_list表头任务
- wait_lock: wait_list是多任务(进程/线程)共享的,需要采用自旋锁互斥访问,自旋锁会不停循环检查且不会阻塞任务的执行,适合时间短的加锁。