Skip to content

rcore-os/tg-rcore-tutorial-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tg-rcore-tutorial-sync

Synchronization primitives for the rCore tutorial operating system.

设计目标

  • 为教学内核提供线程同步原语:互斥、信号量、条件变量。
  • 在单核/教学环境下通过关中断保护关键区,降低实现复杂度。
  • 与任务管理层协同,实现阻塞与唤醒语义。

总体架构

  • up.rs:单核关中断保护与可变借用封装。
  • mutex.rs:互斥接口与阻塞互斥实现。
  • semaphore.rs:计数信号量。
  • condvar.rs:条件变量。
  • tg-rcore-tutorial-task-manage::ThreadId 协作记录等待队列。

主要特征

  • UPIntrFreeCell:关中断临界区保护。
  • MutexBlocking:支持阻塞与唤醒的互斥锁。
  • Semaphoredown/up 资源计数控制。
  • Condvar:条件等待与通知。
  • no_std 兼容。

功能实现要点

  • 单核假设下使用关中断避免抢占导致的数据竞争。
  • 同步原语与调度器协作,阻塞线程通过 ID 进等待队列。
  • 接口设计兼顾“教学可读性”和“内核运行需求”。

对外接口

  • 类型:
    • UPIntrFreeCell<T>
    • UPIntrRefMut<'_, T>
    • Mutex trait
    • MutexBlocking
    • Semaphore
    • Condvar
  • 常用方法:
    • 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-ch1~tg-rcore-tutorial-ch8 的关系

  • 直接依赖章节:tg-rcore-tutorial-ch8
  • 关键职责:为并发章节提供内核同步原语实现。
  • 关键引用文件:
    • tg-rcore-tutorial-ch8/Cargo.toml
    • tg-rcore-tutorial-ch8/src/main.rs
    • tg-rcore-tutorial-ch8/src/process.rs

License

Licensed under either of MIT license or Apache License, Version 2.0 at your option.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors