Linux系统上的核心、CPU、线程和处理器之间有什么区别?请解释一下区别
答案1
核心是CPU,是处理器。机器可以是单核(一个CPU)或多核(多个CPU)。处理器是CPU的别称。
由于计算机上通常运行许多进程(所有进程都需要 CPU 资源),因此计算机必须调度如何处理竞争任务。在单处理器(单核)机器上,通过为每个进程分配较小的时间片来进行调度。计算机的性能和每个进程运行的时间跨度短(毫秒)使用户感觉进程是并发运行的。
线程和进程之间的区别可能因操作系统而异 - 本答案仅尝试提供基本解释。通常,一个进程可以包含许多线程。操作系统可以单独调度每个线程。每个进程的线程共享进程代码(每个线程都有自己的指令寄存器)并共享进程数据。但是每个线程都有自己的堆栈段。调用堆栈跟踪函数调用后的返回点。
多核机器(具有两个或更多CPU)不仅可以通过时间片来调度进程。它还可以为每个核心运行一个单独的线程。在单独的核心中运行的线程是真正并发的(与单核心机器不同,单核心机器给人的印象是时间切片并发)。
多线程提供更好的计算机处理性能。几年前,CPU 性能的持续改进放缓了(摩尔定律不再适用),此后CPU性能技术一直由多核和多线程技术驱动。
答案2
处理器是插入插座的物理芯片。早期的处理器大多由CPU组成。后来,处理器中添加了 MMU(虚拟内存管理)、FPU(浮点)、高速缓存,有时还添加了 GPU(图形)。
一个核心就是一个CPU。处理器可以有一个或多个内核。两核 CPU 大致相当于两个单核处理器,但如果某个组件是瓶颈,则共享组件可能会降低增益,或者相反,由于核心之间的内部通信速度更快,因此更常见的是提高性能。
一个核心可能支持多个硬件线程,即允许同时处理多个执行上下文(主要是寄存器)。尽管所有线程共享相同的 CPU,但这也提高了性能。增益是由于更快的上下文切换和由于内存访问延迟而近乎并发的执行。