软件线程是指windows *** 作系统中每个运行的程序都是一个进程,每一个进程都会创建一个或多个线程,这些线程称之为软件线程。一个进程至少有一个线程,称为主线程。
进程------CPU执行某个运算任务的过程。好比工厂生产线上正在执行的一个生产任务。
例如,你用酷狗播放一首歌曲,你会在任务管理器中看到一个名字叫做KuGou.exe的进程在工作。当你关闭(推出)酷狗时,这个进程就会在任务管理器中消失,CPU不再执行关于它的任何运算。
线程------CPU的一个逻辑核心,是 *** 作系统和应用软件可以调用、用于独立执行运算任务的核心,就好比工厂中的一条生产线。
在没有超线程技术的CPU中,一个物理核心就是一个线程(一个逻辑核心);支持超线程技术的CPU中,一个物理核心可以模拟出两个甚至更多个逻辑核心,即虚拟出多个线程。
例如,支持超线程技术的六代 i3-6100,为双核四线程结构。它拥有两个物理核心,每个物理核心在超线程技术的支持下,可以虚拟出两个逻辑核心(两个线程),在 *** 作系统看来,i3-6100一共就拥有四个核心,和真正的物理四核 i5-6400一样可用。但实际上呢?超线程技术无非是每个物理核心在运算时,多级流水线有时候会有空闲,多虚拟出来的核心就是利用空闲的流水线搭建的“虚假核心”。
比如,某CPU一个核心拥有16级流水线,大多数时候流水线只用到了8~12级就完成了运算任务,剩下的流水线处于空闲,导致了CPU运算资源的闲置浪费。如果将一个物理核心的16级流水线划分为两段,每段8级流水线虚拟出一个逻辑核心(一个线程),就可以让 *** 作系统以及应用软件为它们同时分配并行运算任务,这样可以让各级流水线都忙起来别闲着,尽量压榨CPU的运算性能潜力,提高性能。
对于高密度运算任务来说,有时候16级流水线耗尽了都忙不过来,根本没有空余的流水线可供调取,这时超线程技术就无米下锅,起不到提升性能的目的了。
最后,做个比喻:CPU的物理核心好比工厂的生产流水线,线程好比流水线上划分出来的能完成独立生产任务的区段,而进程则为流水线上正在执行的一个个生产任务。如果一个拥有40个独立工位的流水线只用于生产电视机不干别的,那么这个核心就只有一个线程,只执行了一个进程;如果将40个工位分成两个独立的区段,就变成了两个线程,看起来和两个流水线一样。如果这四十个工位在生产电视机的同时,还在组装电吹风、印刷扑克牌、杀猪剥皮、……,就代表流水线上同时在执行多个独立的进程;杀猪剥皮是一个进程,组装电吹风是一个进程,印刷扑克牌也是一个进程,……
在多核时代,一个进程,可以分解成为多个并行运算子任务,交给多个线程齐头并进的进行运算,然后再将多个线程的运算结果合并。
也就是说,一个线程可以同时承担多个进程,一个进程也可以交给多个线程同时运算。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)