上一章我们讲解了hello world 程序在计算机系统中是如何运行的。 hello 程序的机器指令最初是存放在磁盘上的,当程序加载时,他们被复制到主存;当处理器运行程序的时候,指令又从主存复制到处理器。相似的,数据串"Hello World" 初始时在磁盘上,然后复制到主存,最后从主存上复制到显示设备。
从程序员的角度来看,上面的复制就是开销,减缓了程序的真正工作。因此如何将这些复制操作尽快完成则是系统设计者的一个主要目标。
1、从磁盘加载可执行文件到主存
2、将输出字符串从内存写到显示器
3、高速缓存存储器
那么如何减少这种由数据复制所引起的开销呢?
根据机械原理,较大的存储设备比 较小的存储设备运行的慢,而快速设备的造价远高于同类的低速设备。类似的,一个典型的寄存器文件只存储几百字节的信息,而主存里可以存放几十亿字节。然而处理器从寄存器文件中读数据的速度要比从主存中读取几乎快100倍。而且随着半导体技术的进步,这两者差距还在加大。因此加快处理器的运行速度比加快主存的运行速度要容易和便宜的多。针对这种处理器和主存之间的差异,系统设计者采用了更小、更快的存储设备,也就是 高速缓存存储器(简称高速缓存) ,作为暂时的集结区域,用来存放处理器近期可能会需要的信息,类似于Java Web 框架的缓存机制。如下图:
4、存储设备的金字塔结构
在处理器和一个又大又慢的设备(比如主存)之间插入一个更小更快的存储设备(例如高速缓存)的想法已经是一个普遍的观念。实际上,每个计算机系统中的存储设备都被组织成了一个存储器层次结构。如下图所示:
存储器层次结构的主要思想是一层上的存储器作为低一层存储器的高速缓存,因此,寄存器文件就是L1的高速缓存,L1是L2的高速缓存,L3是主存的高速缓存,而主存又是磁盘的高速缓存。
正如可以运用不同的高速缓存的知识来提高程序性能一样,程序员同样可以利用对整个存储器层次结构的理解来提高程序性能。这个后面我们会详细讲解。
5、本章总结
本章主要介绍了高速缓存的产生的原理以及存储器设备的层次结构,如何理解整个存储器的层次结构,对于提高程序性能有很大的帮助。下一章将讲解操作系统的抽象概念。
Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。
它的内容包括:
- 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
- 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
- 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
- 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
- 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
- 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
- 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
- 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw
目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:
想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询
同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。