我试图找到一个可以先发制人的方式处理任务(或线程)的c或c ++库。我需要一种可以像在RTOS中一样逐个管理任务的机制。创建任务(作为任务的入口点),计时,切换等......
是否可以在用户空间中编写它?
答案 0 :(得分:2)
最简单的解决方案可能是在虚拟机或处理器模拟器中运行真正的 RTOS。任何带有x86端口的RTOS都可能被说服在PC VM中运行,但您也可以使用QEMU。
例如,您可以运行RTEMS on QUEMU,而QUEMU本身可以模拟ARM目标 - 尽管这可能无关紧要,i386仿真可能适合您的需求并且速度更快。
答案 1 :(得分:1)
RTOS调度/调度以高效方式处理线程需要硬件中断与外围硬件(KB,鼠标,磁盘,NIC,计时器等)进行有效通信。标准C无法处理中断,因此您无法执行此操作。
如果你有内存管理硬件定义了单独的用户和内核内存访问权限,那么没有 - 硬件中断会改变硬件中的状态,因此无论你是否愿意,你都会留下用户空间。
您应该知道抢占式调度程序主要不是为了在定时器中断时需要CPU的任务之间切换 - 它们首先设计用于通过从不需要的任务中删除CPU来提供高效,高性能的I / O因为它们的I / O请求不能立即得到满足。