我正在研究各种OS设计,希望为DCPU-16编写一个简单的多任务OS。但是,我所读到的关于抢先式多任务处理的所有内容都围绕中断。听起来像在16位硬件和软件时代,协作多任务处理更为普遍,但是这要求每个程序在编写时都考虑到多任务处理。
有什么方法可以在无中断体系结构上实现抢占式多任务处理?我所能想到的是一个可以动态切换任务的解释器,但是它将带来巨大的性能损失(如果它必须解析每个操作并且不让任何内容 native 运行,那么性能可能会达到10-20x +)。想象)。
最佳答案
抢先式多任务处理通常是通过使中断例程将状态更改/感兴趣的事件发布到调度程序来实现的,该调度程序根据优先级确定要挂起的任务以及要启动/继续的新任务。但是,当正在运行的任务调用OS例程时,可能会发生其他有趣的事件,这可能具有相同的效果。
但是重要的是,某个事件被记录在某个地方,并且调度程序决定谁来运行。因此,您可以使所有此类事件信令/调度仅在OS调用上发生。
您可以在各种任务应用程序代码中的“方便”点向调度程序添加令人讨厌的调用,以使您的系统更频繁地切换。它是仅切换还是使用一些背景信息(例如,自上次调用以来耗时)是调度程序详细信息。
您的系统不会像由中断驱动的系统那样敏感,但是您已经通过选择所使用的CPU放弃了这一点。
关于multitasking - 中断器DCPU-16上是否可以抢先进行多任务处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068847/