并发与并行以及抽象的重要性

来源:互联网 发布:美国读博士条件知乎 编辑:程序博客网 时间:2024/06/05 16:16

并发与并行以及抽象的重要性

前言

并发与并行已知时IT界的热词,大到西天诸佛,小到织席贩履之徒都应该知道吧?

并发是指一个同时具有多个活动的系统,并行则是指用并发使得一个系统运行的更快.

并发是一种模式,并行是实现这种模式的手段之一.

并发是虎,并行是翼.

 

线程级并发

在进程的抽象概念下引入了线程,而线程级并发的概念就是指多个线程在同一时间(并非是绝对同时)活动.

OS从单处理器,直到现在的多核多处理器系统,乃至超线程技术,已经经历了很大的变化.这也使得针对多线程编程变得更加重要,否则就无法利用多处理器带来的好处.

针对多处理器系统来说,比较好理解,其实就是物理上将多个CPU集中在一个集成电路的芯片上.而对于超线程技术来说,则是利用N个物理内核,模拟出2N个逻辑内核的技术.在硬件来讲,超线程需要CPU的某些不见有多个备份,比如寄存器和程序计数器,但是其他部分只有一份,比如ALU.

 

 

指令级并行

指令级并行的解释:如果处理器可以同时执行多条指令,则称这种属性为指令级并行.其实指令级并行就是利用了指令的执行过程中会有不同的阶段,或者更精确的手,是在同一时间只会利用部分CPU的硬件,因此可以利用这一点做到多个指令并行执行.

更好的情况下,现代的很多处理其能够做到执行一条指令的平均时间尚且不到一个周期,这种处理器就成为超标量处理器.

 

 

 

 

单指令,多数据并行

单指令多数据的概念是指一条命令可以产生多个并行执行的操作的方式.当今的一些处理其中配备了特殊的硬件,可以达到这个效果.由于产生了多个并行执行的操作,,因此就会涉及懂啊多个数据,通俗的讲就是一条指令操作多个数据.比如一些处理器具有并行的对4对单精度浮点数做加法的指令.

 

 

 

抽象

抽象的概念不用我说了?面向对象的过程就是抽象的过程.

抽象可以使得一些具体的视线变得更加易于描述,而且也可以针对一些实现的方式作出规定.

举个例子.JAVA中的类来说,他其实是通过编译器和JVM来实现的,JVM本身又是一个抽象的概念,他也会有具体的实现.倘若针对我们平时使用的hotspot虚拟机来说,类的实现是将类的信息存放在永久代,然后将实例存放在堆中,并且在每一个实例中,都会存放一个类信息的引用.从而我们在操作这个实例的时候,会通过这类信息确定我们所做的操作并执行它.

 

没听过JVM?没关系,你知道使用class可以声明一个类吧,并且在你创建了一个实例之后,使用实例名.方法名可以调用他的方法,实例名.变量名可以取得它的属性值就可以了(忽略访问修饰符的作用).这就使得我们操作类的时候变得简单,也正是抽象的意义之一.

JVM(JAVA虚拟机)是一种抽象,有了这个抽象,我们就可以针对JVM制定规范,也就是JVM规范.

 

 

 

 

0 0
原创粉丝点击