1、计算机 首先我们需要讲解下计算机的模型:现代计算机模型是基于-冯诺依曼计算机模型 我们不用管输入和输出设备,最主要的就是中间计算器和存储器之间的交互,也就是CPU与主内存之间取数、存数。 大家会看到有一个IO总线在进行数据的流通,所以CPU与此磁盘的交互也会通过IO ...
内存模型 在计算机CPU,内存,IO三者之间速度差异,为了提高系统性能,对这三者速度进行平衡。 CPU 增加了缓存,以均衡与内存的速度差异 操作系统增加了进程 线程,以分时复用 CPU,进而均衡 CPU 与 I O 设备的速度差异 编译程序优化指令执行次序,使得缓存能够得到更加合理地利用。 以上三种系统优化,对于硬件的效率有了显著的提升,但是他们同时也带来了可见性,原子性以及顺序性等问题。基于Cp ...
2019-10-25 01:00 2 369 推荐指数:
1、计算机 首先我们需要讲解下计算机的模型:现代计算机模型是基于-冯诺依曼计算机模型 我们不用管输入和输出设备,最主要的就是中间计算器和存储器之间的交互,也就是CPU与主内存之间取数、存数。 大家会看到有一个IO总线在进行数据的流通,所以CPU与此磁盘的交互也会通过IO ...
1. 并发编程的3个概念 并发编程时,要想并发程序正确地执行,必须要保证原子性、可见性和有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。 1.1. 原子性 原子性:即一个或多个操作要么全部执行并且执行过程中不会被打断,要么都不执行。 一个经典的例子就是银行转账:从账户A向账户B ...
本文主要是学习Java内存模型的笔记以及加上自己的一些案例分享,如有错误之处请指出。 一 Java内存模型的基础 1、并发编程模型的两个问题 在并发编程中,需要了解并会处理这两个关键问题: 1.1、线程之间如何通信? 通信是指线程之间以何种机制来交换信息。在命令式编程中 ...
一、硬件内存架构 一个现代计算机通常由两个或者多个CPU。其中一些CPU还有多核。每个CPU在某一时刻运行一个线程是没有问题的。如果你的Java程序是多线程的,在你的Java程序中每个CPU上一个线程可能同时(并发)执行。 当一个CPU需要读取主存时,它会将主存的部分读到CPU缓存中 ...
如果你输入一个命令,比如java那么系统是如何找到这个命令的呢?按照顺序,系统先在当前目录搜索是否有java.exe, java.bat 等。 如果没有,就得到系统的PATH(不区分大小写)里面查找。 比如你的环境变量的PATH里面有 C:\program files\java\jdk1.6 ...
引言 在计算机系统的发展过程中,由于CPU的运算速度和计算机存储速度之间巨大的差距。为了解决CPU的运算速度和计算机存储速度之间巨大的差距,设计人员在CPU和计算机存储之间加入了高速缓存来做为他们之 ...
从 PC 内存架构到 Java 内存模型 你知道 Java 内存模型 JMM 吗?那你知道它的三大特性吗? Java 是如何解决指令重排问题的? 既然CPU有缓存一致性协议(MESI),为什么 JMM 还需要volatile关键字? 带着问题,尤其是面试问题的学习才是 ...
一、概述 1.1 什么是线程安全? 1.2 案例 1.3 线程安全解决办法: 二、synchronized 2.1 ...