据我所知,一般的操作系统和计算机的运行方式是机器码被调度器安排成一个指令列表,然后由CPU执行。
由于每个进程的专用时间量是可变的,因此程序似乎应该以不一致的“速率”运行。然而,这会成为问题的许多程序,例如游戏、视频播放器和驱动程序,似乎都运行得非常一致。当然,它可能会发生,然后在游戏中特别引人注目,但我认为它会更频繁地发生并持续很长时间。
避免这种情况的唯一方法似乎是告诉进程有多少时间单位用于执行其代码,因为我还认为定期查询系统时钟效率非常低,而且必须非常频繁地发生。
操作系统是否将此信息提供给进程?如果是这样,是否有一些标准?
他们是这样。在现代操作系统中,每个程序/进程都分配了可用 CPU 时间的一部分。但是大多数程序,尤其是服务/守护进程,确实需要比分配的时间更少的时间,因此其他程序/进程可以利用更多。
你是对的:似乎是这样。
但是每个认真的玩家都知道后台进程/程序的恶化影响。一般规则是:后台进程越少,(前台)游戏可用的 CPU 速度/容量就越大。所以通常,在“游戏”情况下,大部分 CPU 处理时间片不会被其他进程使用;主要消费是游戏。
你错了。抢占式多任务处理的概念避免了进程之间相互合作的必要性。您假设正在发生的事情称为协作式多任务处理,它“在现代大型系统中很少使用”。
两者都是不同的方法,这里是抢占式多任务定义的相关部分:
这是您错误地认为无效的概念:
抢占式多任务就是这样:在定时器中断引起的给定时间
中断每个进程,并将执行转移到调度程序(然后选择下一个要执行的进程)。
大多数现代操作系统(如 Windows、Linux 和 MacOS)都使用抢占式多任务处理。
有关多任务处理方法的深入信息,请访问 OSDev。