1,试述计算机系统中的存储器层次。为什么要配置层次式的存储器? 为了解决CPU运行速度太快,而内存的读写速度远远跟不上的额问题,同时也解决了主存储内存小的问题,采用cache可以解决这个问题,cache的速度比内存快。 2,简述不同编译、链接、装载与地址定位过程。 编译:源程序通过编译程序或汇编程序 ...
分类:
其他好文 时间:
2019-05-17 12:09:40
阅读次数:
162
1、试述计算机系统中的存储器层次。为什么要配置层次式的存储器? 计算机系统的存储器层次结构分为寄存器、高速缓存、主存储器、磁盘、磁带等5层。计算机系统均采用层次结构的存储子系统,以便在容量大小、速度快慢、价格高低等诸多因素中取得平衡点,获得较好的性能/价格比。 2、简述不同编译、链接、装载与地址定位 ...
分类:
其他好文 时间:
2019-05-14 20:51:42
阅读次数:
163
什么样的数据会存入缓存? 编译器或CPU可以明确知晓的,可能被经常访问的数据。例如一个在循环体中的变量,因为这个变量需要经常访问,如果每次都从主存中拿,那就太慢了。 缓存一致,是跟谁一致? 是跟主存一致,当主存中的对应数据发生变动的时候,CPU中的缓存也会随之变动。例如Cache中缓存了变量x的值, ...
分类:
其他好文 时间:
2019-05-11 16:31:36
阅读次数:
135
1、java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main menory,而每个线程又单独的you自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交由线程处理(操作码+操作数)。 (1)程序计数器 程序计数器(Program Counter ...
分类:
其他好文 时间:
2019-05-09 20:19:52
阅读次数:
157
所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。 问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。 ...
分类:
编程语言 时间:
2019-05-02 18:34:13
阅读次数:
210
并发编程的3个重要概念 1.原子性: 一个操作或者多个操作,要么全部成功,要么全部失败 1.java中保证了基本数据类型的读取和赋值,保证了原子性,这些操作不可终端 2.可见性: volatile 可以保证可见性.主要是把变量放在主存里 多个线程访问这个变量,一个线程修改之后必须保证另一个线程可以看 ...
分类:
编程语言 时间:
2019-04-30 18:34:00
阅读次数:
155
关键字:volatile 多线程的内存模型:main memory(主存)、working memory(线程栈),在处理数据时,线程会把值从主存load到本地栈,完成操作后再save回去(volatile关键词的作用:每次针对该变量的操作都激发一次load and save)。保证每次调用vola ...
分类:
编程语言 时间:
2019-04-25 15:56:07
阅读次数:
133
前提 计算机在执行程序代码的时候,实际上执行的是一条条指令,而这些指令,肯定会涉及到数据的读取和写入操作。 在我们的程序中,所定义的变量等临时数据,计算机会放在内存中,也称为主存。 那么问题来了,CPU执行指令的速度是很快的,但是从内存中读取数据和写入数据的过程,相比CPU执行指令的速度来说是比较慢 ...
分类:
其他好文 时间:
2019-04-12 23:20:07
阅读次数:
160
什么是内存屏障? 内存屏障,又称为内存栅栏,是一组处理器指令,用于实现对内存操作的顺序限制。 内存屏障为何重要? 对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存能够从数量级上降低内存延迟的成本,这些缓存为了性能重新排列待定内存操作的顺序。 也就是说,程序的读写操作不一定会按照它要求处理 ...
分类:
移动开发 时间:
2019-04-07 18:06:39
阅读次数:
195
Java 多线程 volitile 和 atomic 关键字 尝试运行以上代码,发现thread永远也无法发现key0的x被改变 所以这个时候需要加上volitile关键字 具体原因是java中每个线程都有工作内存,以及主存 我的理解就是不加volitile,线程读写变量是先在自己的工作内存中处理, ...
分类:
编程语言 时间:
2019-04-05 20:07:59
阅读次数:
200