内存模型的相关概念 算计机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中势必涉及到数据的读取和写入。当程序在运行时,会将运算需要的数据从主存复制一份到CPU的高速缓存,CPU进行计算时就可以直接从他的高速缓存读取数据和向其中写入数据,当运算结束后,在将高速缓存中的数据刷新到主存当中。 ...
分类:
编程语言 时间:
2018-04-06 22:26:19
阅读次数:
297
CPU多级缓存-缓存一致性下图简单的展示了最简单的高速缓存的配置,数据的读取和存储都经过高速缓存,CPU核心与高速缓存有一条特殊的快速通道;主存与高速缓存都连在系统总线上(BUS)这条总线同时还用于其他组件的通信:在高速缓存出现后不久,系统变得越来越复杂,高速缓存与主存之间的速度差异被拉大,直到加入了另一级缓存,新加入的这级缓存比第一缓存更大,但是更慢,而且经济上不合适,所以有了二级缓存,甚至有些
分类:
编程语言 时间:
2018-04-04 00:00:36
阅读次数:
265
任何被volatile修饰的变量,都不拷贝副本到工作内存,任何修改都及时写在主存。因此对于Valatile修饰的变量的修改,所有线程马上就能看到,但是volatile不能保证对变量的修改是有序的。什么意思呢?假如有这样的代码:Java代码 public class VolatileTest{ pub... ...
分类:
其他好文 时间:
2018-03-25 18:14:16
阅读次数:
153
定义 根据输入,实现自动化处理,并输出的系统。 划分层次 在这七层之下还应该有一层:第0层——电路层——电子技术,它是实现第一层逻辑门层的基石,也是整个计算机系统最根本的技术。 硬件 计算机有4个基本的硬件组成: 输入设备 输出设备 主存储器 中央处理单元CPU 输入设备 输入设备是从外部世界来的信 ...
分类:
其他好文 时间:
2018-03-17 12:21:39
阅读次数:
184
以下基本不是原创,都是转载。 JVM运行时,首先需要类加载器(ClassLoader) 加载所需类的字节码,加载完毕交由执行引擎执行,执行过程中需要一段空间来存储数据(类比CPU与主存)。这段内存空间的分配和释放过程正是我们所关心的,称为运行时数据区。 运行时数据区 如上图所示,运行时数据区包括:程 ...
分类:
其他好文 时间:
2018-03-15 16:19:13
阅读次数:
214
20172314 2017 2018 2 《程序设计与数据结构》第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令。在接下来的Jav ...
分类:
其他好文 时间:
2018-03-10 18:12:06
阅读次数:
185
排序 1.主存能放下的数据进行排序称为内部排序,反之称为外部排序(磁盘上)。2.任何进行交换相邻元素进行排序的算法均需要O(N2)的复杂度,任何进行比较的排序算法至少需要O(N*log(N))的算法复杂度。 3.堆排序和归并排序的时间复杂度平均和最坏均为O(N*log(N)) 4.Java中执行一次 ...
分类:
编程语言 时间:
2018-03-04 11:55:28
阅读次数:
197
虚拟存储器 虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。通过一个很清晰的机制,虚拟存储器提供了三个重要的能力: (1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间 ...
分类:
系统相关 时间:
2018-02-22 19:28:48
阅读次数:
217
一、可见性 多个线程对同一个变量(称为:共享变量)进行操作,但是这多个线程有可能被分配到多个处理器中运行,那么编译器会对代码进行优化,当线程要处理该变量时,多个处理器会将变量从主存复制一份分别存储在自己的存储器中,等到进行完操作后,再赋值回主存。 这样做的好处是提高了运行的速度,同样优化带来的问题之 ...
分类:
编程语言 时间:
2018-02-10 14:08:47
阅读次数:
167
一 为什么要有操作系统 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。 一般而言,现代计算机系统是一个复杂的系统。 其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率:全部掌握这 ...
分类:
其他好文 时间:
2018-02-05 00:32:00
阅读次数:
166