在公平性和粒度方面,进程/线程调度程序如何在典型系统上工作?调度程序是否通过在进程之间或线程之间切换将指令传递给处理器?如果是后者,那么我是否可以通过在我的进程中生成更多线程来提高计算密集型作业的性能?关于这个主题的文献似乎可以互换使用进程和线程。为清楚起见,我使用进程的定义,它是 1 个或多个执行线程的集合。
我假设多个线程不会改善单个处理器上的计算绑定作业,这意味着调度程序的调度粒度处于进程级别。例如,如果有 N 个进程,每个进程将获得处理器的 1/N,无论产生多少线程(当然,如果调度程序是公平的)。
我在这里找到了一个相关的对话:Linux 如何处理线程和进程调度
Linux 不区分线程和进程,因此线程实际上被视为具有共享内存的进程。如果是这种情况,我似乎可以通过产生更多线程来改善计算密集型运行时间。我是否正确解释了这一点?