计算机原理之第一篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zanpengfei/article/details/86307415

1、CPU

1)CPU会有一级缓存、二级缓存、有的还会有三级缓存,其中CPU与一级缓存延迟的时间在2-3ns内,与二级缓存延迟10-15ns,与三级缓存在20-30内,但是与内存延迟在50ns内

2)CPU用来做计算,内存只是用作运行数据时的一个存储,CPU调度线程及进程指令请求,CPU提供数据的计算功能

2、多核

3、Cache line:

1)在CPU的三级缓存中,他将“连续的一段内存区域”进行Cache,不是每次就Cache一个内存单元,而是一系列内存单元,在计算机中,通常是已64字节为基础单位进行Cache操作。这样就不用每次从内存中读取数据

2)例如:

          int i [][] = new int[10][100];

         Int j [][]= new int[100][10]

       Java数组在内存上先cache第一维,所以遍历数组的时候如果是先遍历外层,即i数组的时候i[0][0]的时候会将i[0][1]、i[0][2]都cache到缓存中,连续的数据只cache一次,如果先遍历内层数组,遍历i[0][0]的以后,第二次遍历的是i[1][0],cache中没有该缓存,这俩块内存区域不是连续,所以不会别一次cache,需要重新访问内存就行。

3)如果CPU Cache的时候是按照连续空间进行的,那么对内存进行了修改,回写的时候是不是按照进行的呢?答案不是这样的,Cache line的目的是快速的访问,他对内存单元做出的修改有明确的规定,在回写的时候,也会找到对应的内存空间

4、缓存一致性协议

1)当有来自于内存中的同一份数据Cache在多个CPU中,且要求这份数据读写一致性时,多个CPU就要遵循缓存共享的一致性原则

2)内存单元有修改、独占、共享、失效多种状态,多个CPU通过总线相互连接,每个CPU不仅监听自己的读写操作,还要监听总线的读写操作,以便实现修改数据,达到数据同步

5、上下文切换

1)上下文也就是内容,即内容的切换

6、并发即征用

1)征用带来更多的是同步的开销,他会发出许多指令要求所有的CPU处理中不予许其他线程进入临界区,需要将等待的线程进入阻塞队列

2)征用CPU的访问也体现在CPU自身数量上,一个CPU也不会处理多个线程的任务

3)CPU密集型系统中理想的状态下的线程数是CPU数+-1

4)系统的CPU密集度分为:计算密集型和I/O密集型

7、内存

1)内存是磁盘储存于CPU之间一座“缓冲区桥梁” ,它与CPU通信的速度是磁盘的千百以上,几乎没有IOPS的概念

2)物理地址:系统为每个内存单元编写一些物理地址,物理地址是唯一的,

3)虚拟地址:所以“程序中”使用的地址都是虚拟地址(在段式管理中叫逻辑地址),在不同的进程中可以重复

4)线性地址:起始位置+逻辑地址,线性地址也就是是物理地址

5)系统回味每个进程分配页目录,改页目录也是一个页,大小4KB,由Kernel管理,通过虚拟地址访问内存过程:1、首先寻找对应进程的页目录的地址,加载到CR3寄存器中  2、传入的逻辑地址只需要10位就可以定位到一个页目录中保存地址的单元,这个单元存储的地址即使“页表肚子”

8、磁盘

1)IOPS:磁盘每秒最多可以完成的I/O次数

2)随机读写:由于频繁地发生磁盘小I/O请求,所以就频繁地寻找位置

3)顺序读/写:如果找到了位置,那么处理1MB和处理4KB的数据时间差不多

4)机械硬盘读取数据过程:首先,磁盘有个“摆头”,摆头在位于半切面的位置上摆动,在磁盘上进行“寻址”操作,从而找到数据所在的磁道;其次通过磁盘本身的不断“转动”转到数据实际的起始位置,开始读取数据,而地区数据之前的时间,被认为是延迟时间;最后磁盘找到数据后,加载数据,以后就是不断的随机读写硬盘,不断的寻道和寻址,所以每次的I/O都有这样的延迟

猜你喜欢

转载自blog.csdn.net/zanpengfei/article/details/86307415