莫小帅|kernel同步机制(上篇),Linux( 四 )
*这里的owner实际上是task_struct的指针 , 也就是地址 , 由于task_struct的地址是L1_cache对齐的 , 因此实际上指针地址后三位为0 , 因此linux内核利用这三个比特位用于设置mutex的标志位 , 不影响指针地址的表示也更高效利用了冗余的比特位 。
Mutex的改进
最初的互斥锁仅支持睡眠等待 , 然而经过漫长时间的改进 , 如今的互斥锁已经可以支持自旋等待 , 通过MCS锁机制实现 。 在内核中可以选择配置以支持 , CONFIG_MUTEX_SPIN_ON_OWNER 。
经过改进后 , mutex的性能有了相当大的提高 , 相对信号量的实现要高效得多 。 因此我们尽量选用mutex 。
Mutex的使用条件
Mutex虽然高效 , 灵活 , 但存在若干限制条件 , 需要牢记:
同一时刻只有一条内核路径可以持有锁只有锁持有者可以解锁不允许递归加锁解锁进程持有mutex时不可退出Mutex可能导致睡眠阻塞 , 不可用于中断处理与下半部使用MutexAPI
推荐阅读
- 莫小帅|不仅配置颜值很高,性价比也不错,目前最值得购买的三款华为手机
- 莫小帅|14块8包邮廉价游戏耳麦晒单:RGB、蛋白耳罩、双钢梁全配齐
- 滴滴出行|阿里Java60万年薪(4面真题):线程同步+数据库锁+中间件等
- 产业气象站|自媒体多平台分发,自媒体多平台管理,自媒体多平台同步
- 莫小帅|马斯克用“三只猪”告诉全世界,“脑机接口”是啥
- 孤独酒馆|柔宇智能手写本RoWrite2上手体验,办公学习绘画同步记录
- 莫小帅|还在等什么,100本最前沿的Python编程电子书免费下载
- Nexkey|与“酷客”同步,与时代同行,iQOO速度
- 莫小帅|键盘上的F1到F12,各个都能当快捷键用,涨知识了,才知道
- 忧家娱乐|FreeFileSync:开源的文件同步工具