And*_*ter 10 interrupt multitasking dcpu-16
我正在研究各种OS设计,希望为DCPU-16编写简单的多任务操作系统.但是,我读到的关于抢先式多任务处理的所有内容都以中断为中心.听起来在16位硬件和软件时代,协作式多任务处理更为常见,但这需要考虑每个程序的多任务处理.
有没有办法在无中断架构上实现抢占式多任务处理?我能想到的只是一个可以动态切换任务的解释器,但这会产生巨大的性能损失(如果它必须解析每个操作并且不让任何东西本地运行,可能会大约10-20x +,我是想象).
抢占式多任务处理通常是通过让中断例程将状态更改/有趣事件发送给调度程序来实现的,调度程序根据优先级决定要挂起哪些任务以及要启动/继续哪些新任务。然而,当正在运行的任务调用操作系统例程时,可能会发生其他有趣的事件,这可能具有相同的效果。
但重要的是某些事件在某处被记录,并且调度程序决定运行谁。因此,您可以使所有此类事件信号发送/调度仅在操作系统调用上发生。
您可以在各种任务应用程序代码中的“方便”点添加对调度程序的过分调用,以使系统更频繁地切换。无论它只是切换,还是使用一些背景信息,例如自上次调用以来经过的时间,都是调度程序详细信息。
你的系统不会像中断驱动的系统那样响应迅速,但你已经通过选择你所选择的 CPU 放弃了这一点。
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |