一些预备知识

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

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

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

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

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

至强CPU的部分参数

处理器

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



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

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

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

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

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

内存

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

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

高速缓存

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容