深入理解计算机系统(1.4)---并发与并行、浅谈抽象

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer4.html

引言

并发与并行一直是IT界炙手可热的词汇,相信各位猿友都不会陌生。在计算机系统这本书当中,对并发与并行的解释是,并发是指一个同时具有多个活动的系统,而并行则是指的用并发使得一个系统运行的更快

这与LZ之前的理解应该是不冲突的,在LZ之前看来,并发是一种模式,而并行是实现这种模式的手段之一。

线程级并发

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

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

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

指令级并行

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

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

单指令、多数据并行

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

简谈抽象

抽象的重要性就不需要再强调了,它在计算机科学领域有着不言而喻的地位。抽象可以使得一些具体的实现变的更加易于描述,而且也可以针对一些实现的方式作出规定

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

以上是LZ对类实现的个人理解,对JVM不太熟悉的猿友们可能对这个描述比较迷惑。但是没关系,你只需要知道class可以声明一个类,并且在你创建了一个实例之后,使用实例名.方法名可以调用它的方法,实例名.变量名可以取得它的属性值就可以了(在此简单起见,忽略访问权限限制)。这就使得我们操作类的时候变的简单,也正是抽象的意义之一,也是上面对抽象描述的第一句话的解释。

对于后面一句就比较好理解了,JAVA虚拟机是一种抽象,有了这个抽象,我们就可以针对JAVA虚拟机制定规范,也就是JAVA虚拟机规范。

文章小结

本次我们简单了解了一下并发和并行的概念,以及抽象对于计算机科学的重要意义。

时间: 2024-10-22 04:43:02

深入理解计算机系统(1.4)---并发与并行、浅谈抽象的相关文章

4.2《深入理解计算机系统》笔记(五)并发、多进程和多线程【Final】

该书中第11章是写web服务器的搭建,无奈对web还比较陌生.还没有搞明白. 这些所谓的并发,其实都是操作系统做的事情,比如,多进程是操作系统fork函数实现的.I/O多路复用需要内核挂起进程.多线程需要内核创建和挂起线程.我么只是使用以下操作系统的这项并发技术.但是我们必须处理一些存在问题. ●进程.用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护.因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用进程间通信(IPC). ●I/O多路复用.这种形式的并发,应用程序在一个进

深入理解计算机系统9个重点笔记

引言 深入理解计算机系统,对我来说是部大块头.说实话,我没有从头到尾完完整整的全部看完,而是选择性的看了一些我自认为重要的或感兴趣的章节,也从中获益良多,看清楚了计算机系统的一些本质东西或原理性的内容,这对每个想要深入学习编程的程序员来说都是至关重要的.只有很好的理解了系统到底是如何运行我们代码的,我们才能针对系统的特点写出高质量.高效率的代码来.这本书我以后还需要多研究几遍,今天就先总结下书中我已学到的几点知识. 重点笔记 编写高效的程序需要下面几类活动: 选择一组合适的算法和数据结构.这是很

深入理解计算机系统,第一章:漫游

计算机系统漫游 1.1 信息就是位+上下文 先看一个简单的Hello World C程序. 1 #include <stdio.h> 2 3 void main() 4 { 5 printf("Hello World!\n"); 6 } 这个程序的源文件是文本格式,以字节序列的方式存储在文件中,由一种叫ASCII码的方式编码.除了文本文件之外的其它文件都是二进制文件. 由HelloWorld程序的存储方式可以猜测,信息,包括磁盘文件.内存中运行的程序.内存中储存的用户数据以

《深入理解计算机系统(原书第三版)》pdf

下载地址:网盘下载 内容简介  · · · · · · 和第2版相比,本版内容上*大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础.主要更新如下: 基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持. 处理器体系结构修改为支持64位字和操作的设计. 引入更多的功能单元和更复杂的控制逻辑,使基于程序数据流表示的程序性能模型预测更加可靠. 扩充关于用GOT和PLT创建与位置无关代码的讨论,描述了更加强大的链接技术(比如库打桩). 增加了对信号处理程序

计算机编程基础之深入理解计算机系统1

目录 概述——<深入理解计算机系统> 计算机系统漫游 信息的表示和处理 概述——<深入理解计算机系统> Computer Systems A Programmers Perspective  英文名 计算机系统漫游 本章简介 当系统上执行hello程序时,系统发生了什么以及为什么会这样 信息就是位+上下文 源程序(或者源文件) hello.c,实际上是由值0和1组成的位(bit)序列,8个位被组织成一组,成为字节.每个字节表示程序中某个文本字符,大部分的现代系统都使用ASCII标准

对找工作功不可没——评《深入理解计算机系统》

对找工作功不可没——评<深入理解计算机系统> 引子: 在我刚刚进入中科院计算所读研的时候,同宿舍的师兄便向我推荐了一本<深入理解计算机系统>,这本书从一个程序员的视角详细剖析了整个计算机系统,涵盖了组成原理.汇编语言.体系结构.操作系统.网络等计算机基础知识. 由于时间所限,我并没有立刻阅读,而是将其列入了找工作前的复习书单.2010年8月,我用了一个月的时间读完了这本书的原版<Computer System:A programmer's perspective>.后来

《深入理解计算机系统(原书第2版)》pdf

下载地址:网盘下载 内容简介  · · · · · · 本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性.性能和实用性.全书共12章,主要内容包括信息的表示和处理.程序的机器级表示.处理器体系结构.优化程序性能.存储器层次结构.链接.异常控制流.虚拟存储器.系统级I/O.网络编程.并发编程等.书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解. 本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个

深入理解计算机系统(1.3)---金字塔形的存储设备、操作系统的抽象概念

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer3.html 上一章LZ给各位展示了一下hello程序的简单执行过程,可以看出在这一过程当中,系统在数据的传输上花费了大量的时间.硬件开发商为了减少这种数据传输的时间成本,采用一种高速缓存的技术去减少这种时间成本. 高速缓存被置放于处理器当中,与处理器中的寄存器文件直接进行数据交换,这样大大减少了数据传输的时间成本,使得程序的运行速度可以得到数倍的提升.而作为一个程序猿,如果可以适当的利用高速

并发与并行的区别 The differences between Concurrency and Parallel

逻辑控制流 在程序加载到内存并执行的时候(进程),操作系统会通过让它和其他进程分时段占用CPU(CPU slices)让它产生自己独占CPU的假象(同时通过虚拟内存让它产生独占内存的假象).在CPU在执行一个进程的指令时,被执行的许多指令连接起来(也可以理解为程序计数器PC的变化)就构成了"逻辑控制流". 逻辑控制流的概念也不局限于进程,它在异常处理程序.线程.Java进程中均有体现.而"并发(concurrency)"和"并行(parallel)&quo