我只是想问一下,在特定的操作系统上,调度算法的实现是否独一无二,假设我在操作系统中实现循环调度,那么我的系统中的每个任务是否都会根据调度程序决定的时间片执行,或者只有当资源较少时,才会根据时间片执行系统内的线程或进程。
此外,如果使用循环算法,那么是否也可能实现 SJF 或 SRTF,那么调度程序如何决定使用哪种算法来执行特定的线程或进程。
答案1
你说的“我的操作系统”是指你自己写的吗?你真正想问的是“调度算法实现是否具有确定性?”
答案是:这取决于你的实现方式:-)
SJF(最短时间优先,对于那些不知道的人来说)和 SRTF(最短剩余时间优先)都可能出现多个等待调度的进程具有相同权重的情况,并且由调度程序实现来在它们之间做出决定。
简单的调度可能总是选择 PID 最低的调度,而智能调度程序可能会惩罚似乎不断回来的过程,而处于中间位置的调度程序则尝试进行循环。
是否有可能编写一个真正确定性的调度程序?是的,当然有可能,但在选择下一个要运行的进程时(从一组随机选项中)稍微随机一点可能不会有什么坏处,特别是如果进程之间存在未声明的死锁。