并发与并行以及抽象的重要性
并发与并行以及抽象的重要性
前言
并发与并行已知时IT界的热词,大到西天诸佛,小到织席贩履之徒都应该知道吧?
并发是指一个同时具有多个活动的系统,并行则是指用并发使得一个系统运行的更快.
并发是一种模式,并行是实现这种模式的手段之一.
并发是虎,并行是翼.
线程级并发
在进程的抽象概念下引入了线程,而线程级并发的概念就是指多个线程在同一时间(并非是绝对同时)活动.
OS从单处理器,直到现在的多核多处理器系统,乃至超线程技术,已经经历了很大的变化.这也使得针对多线程编程变得更加重要,否则就无法利用多处理器带来的好处.
针对多处理器系统来说,比较好理解,其实就是物理上将多个CPU集中在一个集成电路的芯片上.而对于超线程技术来说,则是利用N个物理内核,模拟出2N个逻辑内核的技术.在硬件来讲,超线程需要CPU的某些不见有多个备份,比如寄存器和程序计数器,但是其他部分只有一份,比如ALU.
指令级并行
指令级并行的解释:如果处理器可以同时执行多条指令,则称这种属性为指令级并行.其实指令级并行就是利用了指令的执行过程中会有不同的阶段,或者更精确的手,是在同一时间只会利用部分CPU的硬件,因此可以利用这一点做到多个指令并行执行.
更好的情况下,现代的很多处理其能够做到执行一条指令的平均时间尚且不到一个周期,这种处理器就成为超标量处理器.
单指令,多数据并行
单指令多数据的概念是指一条命令可以产生多个并行执行的操作的方式.当今的一些处理其中配备了特殊的硬件,可以达到这个效果.由于产生了多个并行执行的操作,,因此就会涉及懂啊多个数据,通俗的讲就是一条指令操作多个数据.比如一些处理器具有并行的对4对单精度浮点数做加法的指令.
抽象
抽象的概念不用我说了?面向对象的过程就是抽象的过程.
抽象可以使得一些具体的视线变得更加易于描述,而且也可以针对一些实现的方式作出规定.
举个例子.就JAVA中的类来说,他其实是通过编译器和JVM来实现的,而JVM本身又是一个抽象的概念,他也会有具体的实现.倘若针对我们平时使用的hotspot虚拟机来说,类的实现是将类的信息存放在永久代,然后将实例存放在堆中,并且在每一个实例中,都会存放一个类信息的引用.从而我们在操作这个实例的时候,会通过这类信息确定我们所做的操作并执行它.
没听过JVM?没关系,你知道使用class可以声明一个类吧,并且在你创建了一个实例之后,使用实例名.方法名可以调用他的方法,实例名.变量名可以取得它的属性值就可以了(忽略访问修饰符的作用).这就使得我们操作类的时候变得简单,也正是抽象的意义之一.
JVM(JAVA虚拟机)是一种抽象,有了这个抽象,我们就可以针对JVM制定规范,也就是JVM规范.
并发与并行以及抽象的重要性相关推荐
- CPU时间分片、多线程、并发和并行
1.CPU时间分片.多线程? 如果线程数不多于CPU核心数,会把各个线程都分配一个核心,不需分片,而当线程数多于CPU核心数时才会分片. 2.并发和并行的区别 并发:当有多个线程在操作时,如果系统只有 ...
- 转一篇关于并发和并行概念的好文,附带大神评论
转自:https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/ 还在疑惑并发和并行? OK,如果你还在为并发(concurre ...
- 进程(并发,并行) join start 进程池 (同步异步)
一.背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有 ...
- 多线程是并行还是并发_并发,并行,线程,进程,异步和同步有相关性吗?
本文翻译自:https://medium.com/swift-india/concurrency-parallelism-threads-processes-async-and-sync-relate ...
- 【操作系统】进程、线程、协程和并发、并行
文章目录 一.并发介绍 1. 进程和线程 (1)进程 (2)线程 (3)进程与线程的区别 (4)任务调度 (5)何时使用多进程,何时使用多线程? 2. 线程和协程 (1)协程 (2)协程和线程的区别 ...
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结
转自:http://www.cnblogs.com/kubixuesheng/p/4355786.html 进程:是个动态的概念,指的是一个静态的程序对某个数据集的一次运行活动,而程序是静态的概念,是 ...
- 还在疑惑并发和并行?
转载自:https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/ OK,如果你还在为并发(concurrency)和并行(pa ...
- 关于并发和并行,Go和Erlang之父都弄错了?
作者|Yossi.Kreinin 来源|OSChina网站 翻译|Andy.袁不语.YuanyuanL.姜鹏飞 校对|胡燕君(OneFlow) 根据字面词义,并发(concurrent)是指竞争或对抗 ...
- 如何向纯洁的女朋友解释并发与并行的区别?
原文链接:并发与并行的区别 现在我们都说设计可并行.高并发的程序,而且我们很多时候会在潜意识里觉得自己对并行(Parallelism)和并发(Concurrency)的区别很清楚,但如果要明确的说出二 ...
最新文章
- K8s 实践 | 如何解决多租户集群的安全隔离问题?
- 51Nod 1314 定位系统
- SAP UI5页面动画效果的实现,实际借用了jQuery的库文件
- erlang下lists模块sort(排序)方法源码解析(二)
- SQL Server 2019中的行模式内存授予反馈
- 如何动态获取UILabel的高度、宽度
- Git:tag标签的使用
- 云服务器远程桌面复制
- lcd4linux 支持的相框,最新版AIDA64支持LCD4WIN相框太给力了(20140826更新啦)!
- 设计文档应该怎么写?
- Nginx转发Tcp、Udp详细教程(简单粗暴)
- 19种音频格式介绍及音质压缩比的比较
- 我的世界服务器物品箱子,我的世界:使用箱子储存物品居多,难不成他们很“鸡肋”?...
- LWIP应用开发|DNS域名解析
- MD5 SHA1 SHA256 SHA512 SHA1WithRSA RSA 的区别
- Win7如何显示/隐藏Administrator账号
- mysql 中文截取_中文字符串截取
- 读PPK谈javascript
- 一份游戏策划书的范例[转载]
- 计算机电路英文专业翻释术语,电子专业词汇翻译中英文对照(新手必备知识)