Synchronization primitives for the rCore tutorial operating system.
- 为教学内核提供线程同步原语:互斥、信号量、条件变量。
- 在单核/教学环境下通过关中断保护关键区,降低实现复杂度。
- 与任务管理层协同,实现阻塞与唤醒语义。
up.rs:单核关中断保护与可变借用封装。mutex.rs:互斥接口与阻塞互斥实现。semaphore.rs:计数信号量。condvar.rs:条件变量。- 与
tg-rcore-tutorial-task-manage::ThreadId协作记录等待队列。
UPIntrFreeCell:关中断临界区保护。MutexBlocking:支持阻塞与唤醒的互斥锁。Semaphore:down/up资源计数控制。Condvar:条件等待与通知。no_std兼容。
- 单核假设下使用关中断避免抢占导致的数据竞争。
- 同步原语与调度器协作,阻塞线程通过 ID 进等待队列。
- 接口设计兼顾“教学可读性”和“内核运行需求”。
- 类型:
UPIntrFreeCell<T>UPIntrRefMut<'_, T>MutextraitMutexBlockingSemaphoreCondvar
- 常用方法:
MutexBlocking::new(),lock(tid),unlock()Semaphore::new(count),down(tid),up()Condvar::new(),wait(tid),signal()
use tg_sync::{MutexBlocking, Semaphore};
let _mutex = MutexBlocking::new();
let _sem = Semaphore::new(1);- 章节内真实用法:
tg-rcore-tutorial-ch8/src/main.rs注册并处理同步相关系统调用。tg-rcore-tutorial-ch8/src/process.rs管理互斥锁、信号量、条件变量对象。
- 直接依赖章节:
tg-rcore-tutorial-ch8。 - 关键职责:为并发章节提供内核同步原语实现。
- 关键引用文件:
tg-rcore-tutorial-ch8/Cargo.tomltg-rcore-tutorial-ch8/src/main.rstg-rcore-tutorial-ch8/src/process.rs
Licensed under either of MIT license or Apache License, Version 2.0 at your option.