一些预备知识

转载请注明原文出处,谢谢!

接下我将总结一下垃圾收集的东西,首先补充一下基础知识。

    可能之前大家已经接触过收集器了,这里将会对收集器的一些基础知识进行描述。

    GC算法我的上一篇已经有过描述了,这里将会讲解一些硬件上东西,处理器和线程,内存和cache的一些东西。

接下来我们,看一下下图是至强cpu的一张图,cache这个东西大多数时候都是被我们忽略了。

一些预备知识_第1张图片
至强CPU的部分参数

处理器

Linux使用了Ring3级别运行用户态,Ring0作为内核态,没有使用Ring1和Ring2。Ring3状态不能访问Ring0的地址空间,包括代码和数据。


一些预备知识_第2张图片


一些预备知识_第3张图片

线程是单一顺序控制流(按照代码顺序执行),线程有三个状态,执行,就绪,准备。

引入线程的操作系统中,把线程作为调度和分派的基本单位,线程是独立运行的基本单位。

调度器是操作系统的组件,是为了确定,任意时刻哪些线程在哪些处理器上运行。

既然上面都贴图了,可以看到10核20线程,这个技术叫做超线程,指多个逻辑处理器公用一条指令流水线。调度器运行线程和处理器间有一定的亲和性。(当然空闲核心怎么窃取其他的核心上的线程这个我还不知道,希望知道的大牛给予回复)

分时操作系统是把CPU的时间划分成长短基本相同的时间区间,即"时间片",通过操作系统的管理,把这些时间片依次轮流地分配给各个用户使用.如果某个作业在时间片结束之前,整个任务还没有完成,那么该作业就被暂停下来,放弃CPU,等待下一轮循环再继续做.此时CPU又分配给另一个作业去使用。

内存

物理内存可能是跨越多个内存单元和处理器的,不过从垃圾收集器的角度来看,共享内存看起来就是一块由字或者字节组成的单个地址空间。

这里顺带提一下JVM的内存模型,JVM线程间通信有两种方式,一种是基于消息的,一种是共享内存。jvm是基于共享内存实现的。

一些预备知识_第4张图片

高速缓存

相对于cpu的计算速度来说,内存的速度的确非常慢的,现在的处理器和内出间通常会架设一到多层高速缓存,每一层间的速度当然不一样,这玩意贵弄不了太大。现代处理器大多为多级处理器,至强这款,就为三级处理器。cache命中后能提高交互速度。   深入了解搓这里。

你可能感兴趣的:(一些预备知识)