- 赛题:
Linux 锁优先级传递- 队名:
PriChain- 成员:
钟家意 汪文琦 慕欣杭- 学校:
华中科技大学
本项目旨在为 Linux 内核设计并实现一种统一的锁优先级传递机制,主要解决实时系统中的优先级反转问题。通过对互斥锁(mutex)、读写锁(rwlock)和读写信号量(rwsem)三类常用内核同步原语进行扩展,实现递归优先级传递、死锁检测与链路追踪等功能,并提供与原生锁时延对比数据结果,提升系统在高优先级任务竞争资源时的实时性和可靠性。项目支持通过内核宏开关灵活控制,便于在不同场景下进行性能与功能的权衡。
-
优先级传递:
优先级传递互斥锁,优先级传递读写互斥锁,优先级传递读写信号量
-
死锁机制:
死锁检测与日志追踪,支持链路追踪和调试分析
-
测试验证:
提供配套的用户态测试程序
-
宏开关实现:
支持内核 Kconfig 配置,便于功能裁剪和定制化部署
-
提供与原生锁或原生信号量的时延测试结果比较,rb_mutex性能优化约44.05%, rb_rwmutex性能优化约26.85%,rb_rwsem性能优化约25.29%
| 预期功能编号 | 完成情况 | 预期功能说明 |
|---|---|---|
| 1 | 已完成 | 解决mutex的优先级反转问题 |
| 2 | 已完成 | 实现rb_mutex的优先级继承链 |
| 3 | 已完成 | 实现rwlock和rwsem的优先级继承支持 |
| 4 | 已完成 | 通过宏开关优先级继承相关特性 |
| 5 | 已完成 | 可以编译安装修改后的内核 |
| 6 | 已完成 | 提供与原生锁等在时延方面的测试数据 |
| 7 | 已完成 | 把工作上传到openEuler社区主线 |
├── README.md
├── drivers # 锁和信号量代码
│ ├── Kconfig
│ ├── Makefile
│ └── PriChain_codes
│ ├── Makefile
│ ├── rb_mutex
│ │ ├── Kconfig
│ │ ├── Makefile
│ │ └── rb_mutex.c
│ ├── rb_rwmutex
│ │ ├── Kconfig
│ │ ├── Makefile
│ │ └── rb_rwmutex.c
│ └── rb_rwsem
│ ├── Kconfig
│ ├── Makefile
│ └── rb_rwsem.c
├── envr # 测试环境配置
│
├── img # 图片
│
├── include
│ └── linux
│ ├── rb_mutex.h
│ ├── rb_rwmutex.h
│ └── rb_rwsem.h
├── log # 日志文件
│
├── proj62-Linux 锁优先级传递.md # 项目文档
└── tests # 测试程序
├── mutex
│ ├── Makefile
│ └── mutex_test.c
├── rb_mutex
│ ├── Makefile
│ └── rb_mutex_test.c
├── rb_rwmutex
│ ├── Makefile
│ └── rb_rwmutex_test.c
├── rb_rwsem
│ ├── Makefile
│ └── rb_rwsem_test.c
├── rtmutex
│ ├── Makefile
│ └── rtmutex_test.c
├── rwlock
│ ├── Makefile
│ └── rwlock_test.c
└── rwsem
├── Makefile
└── rwsem_test.c
- !rb_mutex!
- !rb_rwmutex!
- !rb_rwsem!
- !mutex_test!
- !rb_mutex_test!
- !rwlock_test!
- !rb_rwmutex_test!
- !rwsem_test!
- !rb_rwsem_test!
- 百度网盘提取码: 0531
- 百度网盘提取码: tv25
当前的工作成果已上传至openEuler的社区,等待审核。
增量开发说明:虽发现了往届开源作品,但未在其基础上进行增量开发。开发借鉴了官方rtmutex实时补丁。
