进程是操作系统对一个正在运行的程序的抽象,即操作系统为该进程虚拟了独自的处理器资源,内存空间(又称虚拟地址空间)与磁盘空间
线程是进程中多个可以派遣的工作单位(或称执行单元,以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图形图像,网络数据流方面的处理速度
来源:oschina
链接:https://my.oschina.net/u/125782/blog/92746