我确实想要在我的头脑中澄清一些事情,并模拟具体的知识。双核与一个处理器系统,每个核心只能同时执行一个进程中的两个线程。单核双处理器系统,每个CPU可以执行两个不同的进程。因此,我们可以说,每个处理器都可以并发地执行进程。当多核处理器在进程中并发执行线程时?
发布于 2021-05-06 14:11:26
我认为你对什么是进程和线程以及它们与硬件本身的关系有一个根本性的误解。
CPU核心在每个时钟周期内只能执行一条机器级指令(因此本质上,只能执行一条汇编指令)。CPU通常是通过它们在一秒内经历的时钟周期数来衡量的。因此,一个2.5 GHz的内核每秒可以执行25亿条指令。
操作系统(操作系统,如Windows、Linux、macOS、Android、iOS等)负责启动程序并为其提供访问硬件资源的权限。每个程序都可以被认为是一个“过程”。
每个进程可以启动多个线程。
为了确保多个进程可以共享相同的硬件资源,抢占式计算的想法在40多年前就出现了。
在坚果壳中,抢先计算或时间切片是操作系统的一项功能。它基本上为每个正在运行的线程提供几毫秒的时间,而不管该线程是哪个进程的一部分,并保留每个线程的“上下文”,以便在线程运行时可以适当地处理每个线程的状态;这也称为上下文切换。
双核、四核甚至128核CPU都不会改变这一点,系统中的CPU数量也不会改变这一点(例如,4个CPU,每个CPU有128个核心)。每个内核在每个时钟周期内只能执行一条指令。
改变的是可以真正并行运行的指令数量。如果我的CPU有16个核心,那么这意味着它可以在每个时钟周期执行16条指令,从而运行16个独立的执行线程,而不需要任何上下文切换(尽管它仍然会发生,但这是一个不同的问题)。
这不包括超线程,在超线程中,一个核心可以在每个周期执行2条指令,本质上是CPU计数的两倍,也不包括缓存未命中的想法或其他低级想法,在这些想法中,额外的周期可以花费在线程上,但它涵盖了CPU调度的一般概念。
https://stackoverflow.com/questions/67408813
复制相似问题