本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
大家在学并发编程的时候,基本上都是从Java层开始学习的。但是执行Java的JVM对服务器来说,只是执行在操作系统上的应用。而本文将为大家讲解的,就是硬件上为并发做了哪些支持。
CPU逻辑结构
在硬件中,跟并发关联最紧密的就是CPU,毕竟计算机就是通过CPU的多核并发运行来实现并行处理的,那么,CPU都是由哪些结构组成的?具体如下:
- 程序计数器
是的,你没看错,就是程序计数器,跟JVM的那个程序计数器的名字一样,而且,他们的功能也是类似的。都是用来记录当前命令执行到哪里了。
程序计数器是线程隔离的。
- 寄存器
用来存储运行时数据的。也是线程隔离的。
- 运算逻辑单元
功能如其名,就是用来进行算术运算的。
- 控制单元
用来控制CPU运行的
- 内存管理单元
计算机存储结构
了解了CPU的构成,我们再来看看,计算机的存储结构是怎样的,如下图:
从上图,我们可以看到,在计算机中,定义了4层缓存结构。在这4层缓存中,最靠近CPU的是寄存器,读写速度是最快的,但是其容量也是最小的,成本也是最高的;而主内存则与之相反,读写速度最慢,容量最大。
局部性原理
在CPU执行时,运行时数据是直接从寄存器
取的,若寄存器没有的话,再从L1 Cache
取,依次类推。
在取数据的时候,计算机并不是一个个数据的取的,而是以块
为单位去取的。比如我们要取变量A的数据,计算机是直接将将变量A所属数据块一起取回,返回给上一级的。
计算机为什么会这么做?这就涉及到一个叫做局部性原理
的东西。按照这个原理,如果一个数据被取用了,那么其周边数据也有很大的概率会在后续的逻辑中被用到。因此,计算机才会以块
为单位取数据。
在Linux中,一块
一般是4KB
大小。
后言
既然看到这里了,感觉有所收获的朋友,不妨来个大大的点赞吧~~~