进程,线程,超线程,并发,并行 等概念

进程是操作系统对一个正在运行的程序的抽象,即操作系统为该进程虚拟了独自的处理器资源,内存空间(又称虚拟地址空间)与磁盘空间
 
线程是进程中多个可以派遣的工作单位(或称执行单元,以CPU的角度来看)的集合,同一进程的多个线程共享该线程的资源(包括运行时在虚拟地址空间加载的代码,全局数据等)
 
 
并发(concurrency)从最终用户的角度来看,就是同时运行多个本地应用程序(或者网络应用程序例如 web服务器 同时处理来自多个远程用户的页面请求 / 活动连接 的过程)
 
并发  从计算机底层实现原理来看,是CPU等硬件  在操作系统所抽象出来的多个进程(或线程)之间快速来回切换执行的过程;具体讲,某一极短时间间隔内,CPU只能执行一个进程(或线程)
 
 
 
超线程(hyper  threading,HT)也称“同时多线程”(simultaneous  multi-threading)
 
采用超线程技术的多核CPU的任意一个物理核心在某一极短时间间隔内可以“同时”执行两个或多个线程
 
例如传统的单线程CPU,在某一极短时间间隔内只能执行一个线程,单线程CPU在不同线程间切换需要20,000个时钟周期
超线程多核CPU的任意一个物理核心在不同线程间切换只需要一个时钟周期;
 
典型的例子是  Intel Core i7 四核心处理器,一个物理核心可以同时执行两个线程,
    总共可以“并行”执行8个线程,等效于 拥有8个物理核心的单线程处理器(这种处理器应该没有吧?)
    这也是许多硬件检测软件(验机软件,如everest等)将其视为8个逻辑核心的原因:即多出的4个逻辑核心是通过超线程技术虚拟出来的
 
CPU在同一进程内的不同线程间切换速度比在不同进程间的切换速度快;
 
采用多线程编程技术的程序可以充分发挥出多核CPU的“指令级并行执行”优势,从而达到“线程级并发运行”的效果
 
 
并行(parallelism)的一个比较有实质意义的概念为“指令级并行”,是指CPU硬件同时执行多条指令的属性;
 
一个具体实现为 SIMD(Single  Instruction  Multiple  Data  stream,即单指令多数据流)
 
是一种单条指令同时控制多个数据并行运算,加速CPU在多媒体方面处理速度的技术,Intel 早期 Pentium  CPU采用的MMX指令集就是SIMD技术的一种实现,
 
具体讲,可以同时执行4条单精度浮点数(即 C 数据类型 float )的加法运算指令,无该技术的CPU一次只能执行1条加法运算指令
 
 
SSE(Streaming  SIMD  Extensions,即“流式”单指令多数据流“扩展”)从字面意义就可以了解它是SIMD技术的“流式扩展”版本;
 
SSE1指令集在MMX指令集的基础上增加70条用以“并行”处理多媒体与3D图形方面的指令;
 
此后的SSE2,SSE3等新增的指令条数越来越多,但无非是增强CPU在多媒体,3D图形图像,网络数据流方面的处理速度

你可能感兴趣的:(线程,并发,进程,并行,超线程)