并发编程之基础篇

一、计算机理论模型与工作原理

  • 1、理论模型 --> 现代计算机都是基于:冯诺依曼计算机模型
    运行过程:内存中获取指令 -> 控制器译码 -> 获取存储器数据进行运算 -> 将结果返回内存,如此往复,直到遇到终止指令结束运行。(大致过程如下图:)
    QQ截图20190810101110.png
  • 2、计算机五大核心组成部分:
    控制器(Control)、运算器(Datapath)、存储器(Memory)、输入设备(Input system)、输出设备(Output system)。(如下图:)
    计算机五大部件.png
  • 3、CPU内部结构划分:控制单元、运算单元、存储单元。
    1)、控制单元
    控制单元是整个CPU的控制中心。 由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decode)、操作控制器OC(Operation Controller)组成。
    2)、运算单元
    运算单元主要是运算器的核心,负责执行算数运算(加减乘除等基本运算)和逻辑运算(条件判断、位移等运算)。算数单元受控制单元控制,根据控制单元的命令执行相应的运算操作。
    3)、存储单元
    存储单元包含CPU片内缓存Cache、寄存器数组,是CPU暂时存放数据的地方。包含即将被处理的数据和已经处理完成的结果数据。其中寄存器是CPU的内部元件,具有超高的读写速度,采用寄存器可以减少CPU的访问内存的次数,从而提高CPU的工作效率。(寄存器又分为专用寄存器和通用寄存器,专用寄存器是固定的存储相应的数据,通用寄存器可以有程序员自己规定其用途)。
  • 4、CPU
    1.CPU多核:一个现代计算机的CPU除了处理器核心之外包含寄存器和三级缓存(L1、L2、L3)这些存储设备、浮点运算、整数运算单元等一些辅助运算设备、和内部总线等。如果是单核单线程CPU的情况下,某程序运行过程中不同线程需要经常在CPU之间的外部总线上进行通信,同时还需要处理不同CPU之间数据不一致的问题,会使得效率低下而且不能保证准确无误。此时多核CPU就可以发挥自己的优势,通信都在内部总线,共用同一个缓存。
    2.CPU缓存:高速缓冲存储器,是位于CPU与主存之间的一种容量较小但速度极高的存储器。缓存中保存着CPU循环使用的数据和刚用过的数据。当CPU再次使用的时候就会直接从缓存中获取,提高系统效率。
    3.CPU读取各级缓存中数据的过程:
    > 从寄存器中读取:直接读取。
    > 从L1中读取数据:将缓存行加锁,读取数据,解锁(如果加锁失败就慢了)。
    > 从L2中读取数据:先去L1中查找,如果没有,则去L2中查找,对L2加锁,将L2中的数据复制到L1中,在执行 从L1中读取数据 的操作,再解锁L2缓存行。
    > 从L3中读取数据:先去L1中查找,再去L2中查找,然后再去L3中查找,对L3进行加锁,将数据复制到L2中,再执行 从L2中读取数据的操作,再解锁L3的缓存行。
    > 从内存中去数据:通知内存控制器占用总线带宽,通知内存加锁,发起内存读取请求,等待回应,回应数据保存到L3,再从L3到L2到L1再到CPU,之后解除总线锁。
    4. 多线程环境下存在的问题:缓存一致性问题。针对缓存一致性问题大多数情况下会遵循缓存一致性协议(MESI)来确保多线程的数据同步问题,或者采用总线锁的方式,该方式效率极低,一般不会采用。
    (缓存行是CPU中最小的存储单元,有可能是32字节、64字节、128字节(一般根据CPU厂商不同,缓存行大小不同))
面试题:
  • Q:缓存一致性协议什么时候会失效?
  • A:1、当某变量x的值存储长度大于缓存行的时候,此时存储需要跨缓存行,而缓存一致性协议是基于缓存行加锁的,所以缓存一致性协议会因此失效。为保障数据一致,会采用总线锁的方式;2、CPU本身不支持缓存一致性协议(例如早期奔腾计算机的CPU)。

二、什么是线程

现代计算机上的运行的每一个程序都是一个进程,一个进程中包含了多个线程(因此线程也叫做轻量级进程),线程是操作系统调度CPU的最小单元,每个线程都有独自的程序计数器、操作栈和局部变量等属性,每个线程都能访问共享的内存变量。由于处理器速度极高,所以看似是这些线程在同时执行。
1.线程的实现可以分为两类,分别是:用户及线程、内核级线程

  • 用户线程:指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应 用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。另外,用户线程 是由应用进程利用线程库创建和管理,不依赖于操作系统核心。不需要用户态/核心态切换, 速度快。操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所 有线程)阻塞。由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间 相对减少。
  • 内核线程: 线程的所有管理操作都是由操作系统内核完成的。内核保存线程的状态和上下 文信息,当一个线程执行了引起阻塞的系统调用时,内核可以调度该进程的其他线程执行。在 多处理器系统上,内核可以分派属于同一进程的多个线程在多个处理器上运行,提高进程执行 的并行度。由于需要内核完成线程的创建、调度和管理,所以和用户级线程相比这些操作要慢 得多,但是仍然比进程的创建和管理操作要快。大多数市场上的操作系统,如Windows, Linux等都支持内核级线程。
  • Java的中的线程在1.2版本之前采用的用户级线程,1.2版本之后采用的内核级线程

三、JMM模型(CPU多核缓存架构的抽象)

  • JMM只是一个规范,实际并不存在,是为了屏蔽底层应届的操作。是CPU+缓存+主存的一种抽象概念。
  • JMM不同于JVM。JMM是为了兼容各种硬件操作系统底层的不同实现,即Java的跨平台性。JVM是方便对内存的管理提供的一种模型。两这没有必然关系。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容