gpt4 book ai didi

multithreading - 多个OS进程可以在多核CPU上并行运行吗?

转载 作者:行者123 更新时间:2023-12-03 13:04:21 26 4
gpt4 key购买 nike

因此,我引发了一个争论,即多核CPU是否允许并行执行单独的进程。

据我了解,每个内核都允许执行不同的线程,但是它们都必须属于一个进程。还是我错了?

我的理由是,尽管每个内核都有单独的寄存器和L1/L2缓存集(取决于硬件),但是它们都必须共享其他内容,例如L3缓存或TLB(我对cpu架构没有很多知识,请随时纠正我)。

我尝试搜索答案,但找不到任何结果(也许这个问题太愚蠢了)。

非常感谢。

最佳答案

可以调度多个进程的多个线程在单个内核上运行。当然,在给定的时间,只有一个线程在内核上运行。在核心上运行的进程队列由调度程序管理。一个好的调度程序将为内核提供CPU约束进程和I/O约束进程的良好结合,从而使计算机中的所有组件都具有均衡的负载。

因此,多核CPU不仅允许并行执行,而且还允许并发执行进程。另一方面,单个核心CPU只能允许并行执行。单核计算机中没有并发。

内核的所有资源都分配给当前正在其上运行的线程/进程(但是不在Hyper Threading中)。如果我没记错的话,同时拥有多个进程的第一个资源是主内存或RAM。即使所有进程不在内核上运行,它们也都使用RAM的某些部分。要将进程加载到内核,可以通过将寄存器,地址空间和堆栈设置为与进程处于相同状态的方式从RAM加载进程控制块(PCB),当从内核中卸载进程以给另一个进程留出时间时。

每个过程的时间量从few ms to a few hundred ms变化。与之相比,L1/L2缓存访问为几ns,而主内存访问为几百ns。下图应该很有趣:

enter image description here

关于multithreading - 多个OS进程可以在多核CPU上并行运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com