cpu调度是基于进程还是基于linux中的线程



在一些教科书中,有一章被命名为"流程调度"。在这一章中,它讨论了cpu调度。而在许多文章中,它们使用线程调度来指代cpu调度。我知道进程和线程的概念是不同的。我很困惑到底是什么cpu调度程序在运行,线程还是进程?

部分基于量子,量子是线程将执行的基本时间单位。此外,我相信有一个优先级,所以多个线程正在争夺cpu上的时间。它们与具有相同优先级的其他线程排队等待,然后运行,直到超出量程。然后他们被送到后面。这不是确切的答案,而是一个高层次的总结。

此外,我对窗户更熟悉,但我认为原则上是一样的。进程不是一个可执行代码,而是一个存储单元。所以它将是线程。我读过的Linux有一个比windows更复杂的调度算法(可能会有更多的开销作为权衡),但我推测完全有可能是同一进程的线程在争夺cpu时间。不同之处在于没有必要的上下文切换,因为线程共享进程使用相同的地址空间。

这可以解释当使用的线程数超过内核的物理数量(英特尔上的线程数)时,回报会减少的原因。进程的线程同时运行的可能性很小。相反,他们相互竞争。因此,如果你有4000个线程,这意味着其中任何一个线程运行的时间都会减少1/4000。然而,如果您要使用4000个线程来处理单个同步问题,使用共享存储来加载当前状态,那么您可以通过拥有更大百分比的cpu时间来获得性能提升,因为4000个线程中任何一个运行的概率都更高。

最新更新