讨论记录 2021.6.21 #
参与成员:向勇、贺鲲鹏、尤予阳
用户态中断扩展 #
背景 #
在 RISC-V 邮件列表中出现了一个弃用 N 扩展的提案,洛佳在其中回复称 N 扩展可以用于异步操作系统的设计。
讨论 #
- 尤予阳:认可该提案中“通过 N 扩展在仅有 M 和 U 特权级的系统中引入中断的设计,可以被 M+S 替代”的观点,但认为用户态中断在 M+S+U 的系统中能够带来性能提升和功能增强;Intel 发布了自己的用户态中断扩展,值得关注。
- 贺鲲鹏:用户态中断可以减少许多开销,但是可能带来安全问题。
- 向勇:用户态中断能够提升应用程序的异常事件处理能力(等待时间会变小,切换开销变小),是操作系统需要的一个重要扩展。
统一调度 #
背景 #
rustsbi-qemu 中将 M 态的中断处理和 S 态的执行上下文写成了 Rust Generator ,通过 yield/resume
完成上下文的切换。
讨论 #
尤予阳:这种设计有协程调度的感觉,或许可以借鉴到用户态中断和操作系统之间互动方式的设计上。 向勇:一个思路,把进程、线程和协程调度与中断处理统一起来;后续开发可以以此为目标,在 QEMU 和 FPGA 上实现,并写测例展现优势;有可能写成文章投稿。
后续工作安排 #
- 确认后续的设计和实现均开源。设计文档尤予阳写第一稿,贺鲲鹏修改。
- 测例之一是(用户态)时钟中断,通过复用一个物理时钟,在三个特权级中支持各自独立的(多个)虚拟定时器。可能需要在硬件中记录每个时间点对应的特权级。
- 时间表:先在 QEMU 上实现,然后在 FPGA 上实现。