在多线程单核CPU上多个进程可以运行并行吗?
Do multiple processes may run in parallel on a multi thread single core CPU?
我知道线程之间有一些共享资源,如 L2 缓存等,所以同一内核上的两个线程是否可以并行地 运行 来自不同进程的指令?
这是术语问题。硬件和软件人员以不同的方式使用相同的词。我对你的问题的理解如下:
我知道 硬件线程 之间有一些共享资源,如 L2 缓存等,所以两个 硬件线程 在同一个核心可以运行来自不同进程的并行指令?
然后我将硬件术语翻译成软件语言:
我知道 处理器 之间有一些共享资源,如 L2 缓存等,所以同一个内核上的两个 处理器 可以运行 来自不同 软件线程 的并行指令?
并立即回答:是的,当然。
UPDT
"Does two software threads (from the same process) can be run on two different CPUs in parallel?"
当然可以。此外,如果每个 CPU 由许多内核组成,则每个内核都可以服务于单独的软件线程,因此与处理器没有区别。例如,我的 Intel i7 微芯片有 4 cores/8 个线程和标准 Java 函数 Runtime::availableProcessors() returns 8,也就是说,8 个单独的软件线程可以是 运行 并行。如果我的机器有 2 个这样的微芯片,它将 return 16 和 16 个独立的线程可以 运行 并行。
我知道线程之间有一些共享资源,如 L2 缓存等,所以同一内核上的两个线程是否可以并行地 运行 来自不同进程的指令?
这是术语问题。硬件和软件人员以不同的方式使用相同的词。我对你的问题的理解如下:
我知道 硬件线程 之间有一些共享资源,如 L2 缓存等,所以两个 硬件线程 在同一个核心可以运行来自不同进程的并行指令?
然后我将硬件术语翻译成软件语言:
我知道 处理器 之间有一些共享资源,如 L2 缓存等,所以同一个内核上的两个 处理器 可以运行 来自不同 软件线程 的并行指令?
并立即回答:是的,当然。
UPDT "Does two software threads (from the same process) can be run on two different CPUs in parallel?"
当然可以。此外,如果每个 CPU 由许多内核组成,则每个内核都可以服务于单独的软件线程,因此与处理器没有区别。例如,我的 Intel i7 微芯片有 4 cores/8 个线程和标准 Java 函数 Runtime::availableProcessors() returns 8,也就是说,8 个单独的软件线程可以是 运行 并行。如果我的机器有 2 个这样的微芯片,它将 return 16 和 16 个独立的线程可以 运行 并行。