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

Whether the cpu scheduling is based on processes or threads in linux?

在一些教科书中,有一章被命名为"process scheduling"。在这样的章节中,它讨论了 cpu 调度。而在很多文章中,他们使用线程调度来指代 cpu 调度。 我知道进程和线程的概念是不同的。我很困惑 cpu 调度程序实际操作的是线程还是进程?

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

我也比较熟悉windows,但我觉得原理是一样的。进程不是可执行代码而是存储单元。所以这将是通过线程。 Linux 我读到有一个比 windows 更复杂的调度算法(作为权衡可能会有更多的开销),但我完全有可能推测同一进程的线程竞争 cpu 时间。不同之处在于没有必要的上下文切换,因为线程共享进程使用相同的地址 space.

这可以解释当使用比物理内核数(英特尔线程)更多的线程时减少的 returns。一个进程的线程有很小的机会同时 运行ning。相反,他们竞争。所以如果你有 4000 个线程,这意味着其中任何一个线程 运行ning 的时间减少了 1/4000。但是,如果您要使用 4000 个线程来处理单个同步问题,使用共享存储来加载当前状态,那么您可以通过将更大比例的 cpu 时间作为任何一个的概率来获得性能提升4000 个线程 运行ning 更高。