RISCV上下文切换小优化技术 in UniProton
前言
- 关于RISCV上下文切换技术博客[后续更新链接]
正文
Mutex, msgQueue, semaphore 实现基础
-
无论是mutex 还是 msgQueue 以及semaphore 都是一致的实现
-
[比较粗略,细致一点需要考虑临界区的问题]
在放到睡眠队列前 pcb_aaa 在哪里?
-
RTOS
-
多核的情况,放到本核的就绪队列就好了
scheduler干了什么?
scheduler之前需要干什么?
- 我们需要在sceduler 之前将需要将当前PCB的状态保存
其他RTOS实现
- 使用软件中断,利用中断发生硬件特性保存自己的上文
- 软件中断特殊处理 → 进入调度器
UniProton RISCV RTOS实现
- 模拟RISCV中断行为
- 根据MIE 设置 MIPE
- 关闭中断 [设置 mstatus MIE = 0]
- 设置 MPP
- 保存上文
- 进入 scheduler
UniProton RISCV RTOS实现好处
- 节约了硬件进行中断硬件操作的时间
- 释放了软件中断处理,留起来用于做核间通信 IPI