假设一个系统有一个 CPU。
如果两个作业开始的时间不同,但优先级相同(20,20),那么晚开始的作业会等到先开始的作业完成吗?
你能帮我了解这一点吗?
先感谢您。
抱歉我的英语不好。
答案1
这是关于分时工作原理的一个非常基本的解释:
有(非常短的)时间片,在此时间片之后,正在运行的作业必须放弃 CPU,让位于其他等待的准备运行的作业。这是为了保证即使作业是纯计算作业,它也不会永远阻塞 CPU。当作业被迫离开 CPU 并且仍有工作要做时,它会被放回到“准备运行”作业队列中与其优先级相对应的位置。
如果某项作业必须等待(例如从内存读取或执行 I/O - 与 CPU 速度相比,这非常慢),它也会放弃 CPU,直到 I/O 完成后被中断唤醒。然后它将再次被放入“准备运行”作业队列中。
即使在单核/单线程系统上它也有效。
因此从外部看,两个作业将轮流在 CPU 上运行,并且似乎同时运行。
这种行为对于公平性非常重要:想象一下,一项工作进行无休止的计算(计算所有不超过 10^10 的素数),而第二项工作只想等到echo hello
第一项工作完成。