RISCV上下文切换小优化技术 in UniProton

RISCV上下文切换小优化技术 in UniProton

前言

  • 关于RISCV上下文切换技术博客[后续更新链接]

正文

Mutex, msgQueue, semaphore 实现基础

  • 无论是mutex 还是 msgQueue 以及semaphore 都是一致的实现

  • [比较粗略,细致一点需要考虑临界区的问题]

在放到睡眠队列前 pcb_aaa 在哪里?

scheduler干了什么?

scheduler之前需要干什么?

  • 我们需要在sceduler 之前将需要将当前PCB的状态保存

其他RTOS实现

  • 使用软件中断,利用中断发生硬件特性保存自己的上文
  • 软件中断特殊处理 → 进入调度器

UniProton RISCV RTOS实现

  • 模拟RISCV中断行为
    • 根据MIE 设置 MIPE
    • 关闭中断 [设置 mstatus MIE = 0]
    • 设置 MPP
  • 保存上文
  • 进入 scheduler

UniProton RISCV RTOS实现好处

  • 节约了硬件进行中断硬件操作的时间
  • 释放了软件中断处理,留起来用于做核间通信 IPI