wordpress多站点模式,ui网页设计培训学校,实验教学网站建设策划方案,做导购型网站我的计算机模型是这样的#xff1a;CPU执行指令#xff0c;内存犹如一个巨大的字节数组#xff0c;存储着指令和数据#xff0c;硬盘保存着各种程序与程序用到的数据。I/O完成输入输出的功能。在本文中我们抛开I/O#xff0c;谈一谈关于CPU#xff0c;内存#xff0c;硬…我的计算机模型是这样的CPU执行指令内存犹如一个巨大的字节数组存储着指令和数据硬盘保存着各种程序与程序用到的数据。I/O完成输入输出的功能。在本文中我们抛开I/O谈一谈关于CPU内存硬盘的故事。CPU包含了许多寄存器用于保存临时使用的数据和指令。这是CPU可以访问到的最快的存储器设备CPU可以在一个时钟周期内访问到它们。如果程序员理解了寄存器和内存是如何合作完成任务的也就明白了冯诺依曼计算机的本质。举例来说int fun(void)
{int a;int b;int c;cab;return c;
}汇编代码fun:pushl %ebp movl %ebp,%espsubl $16,%espmovl -8(%ebp),%eaxaddl -12(%ebp),%eaxmovl %eax,-4(%ebp)leaveret变量a占用-8(%ebp)变量b占用-12(%ebp)变量c占用-4(%ebp)。movl -8(%ebp),%eax将变量b的值放入寄存器%eax中。addl -12(%ebp),%eax将%eax的值加上变量a的值。movl %eax,-4(%ebp)完成cab的功能。可以看出程序将内存的值放入寄存器进行运算完成计算任务。其中寄存器与内存亲密接触完成计算任务。作为存储设备CPU寄存器之下并不是内存而是多级高速缓存。最多可以分为三级L1高速缓存L2高速缓存L3高速缓存。它们是基于SRAM技术构成的高速缓存存储器CPU可以在几个时钟周期中访问它们。L1快于L2L2快于L3。高速缓存是不可编程的是CPU设计者用硬件构造出来的。它们按照固定的算法完成缓存内存数据的任务。所以我在计算机抽象模型中忽略了它。它的基本原理是根据要缓存的数据的地址读出一系列与该地址相同或是临近的的数据缓存起来。当再次访问或访问临近的数据时缓存命中CPU直接读取数据。如果读取其他地址缓存不命中CPU从下一层存储器中读取并缓存数据如果下一层也没有就用下下一层直到读取到数据。为什么要用高速缓存存储器因为程序有局部性原理。局部性通常分为两种不同的形式时间局部性和空间局部性。在一个具有良好的时间局部性的程序中被引用过一次的存储器位置很可能在不远的将来被多次引用。在一个具有良好的空间局部性的程序中如果一个存储器位置被应用了一次那么程序很可能在不远的将来引用附近的一个存储器位置。所以如果数据或者指令被缓存高速缓存器那么程序运行的速度将加快许多倍。在说道内存内存由动态RAM构成。内存可以看成是一个巨大的字节数组根据地址可以访问到内存字节。而内存的每一个位都是由一个电容和一个访问晶体管组成。但它很容易漏电使得DRAM单元在10-100毫秒时间内失去电荷。所以存储器必须周期性的通过读出然后重新刷新存储器的每个位。DRAM芯片包装在存储器模块中他是插到主板的扩展槽中的。常见的包装包括168个引脚的双列直插存储器模块它以64位为块传送数据到存储器控制器和从存储器控制器传出数据。还包括72个引脚的单列直插式存储器模块它以32位为块传送数据增强型DRM有快页模型DRAM扩展数据输出DRAM同步DRAM双倍速率同步DRAM视频RAM。内存之下是硬盘。如果程序需要的数据是存储在CPU寄存器的那么1个周期便能访问到它们。如果存储在高速缓存中需要1-30个周期。如果存储在主存中需要50-300个周期。而如果存储在磁盘中需要大约几千万个周期。是的磁盘就是这么慢。所以linux内核中构建了一层高速缓存器。使用内存来缓存磁盘的内容。内核以4KB为一个块使用散列表的方式根据磁盘的块号散列在内存中。磁盘由盘片构成每个盘片由两面或称为表面表面覆盖着磁性记录材料。磁盘通常包含一个或者多个这样的盘片并封装在一个密封的容器内。磁盘表面由一组称为磁道的同心圆组成。每个磁盘被划分为一组扇区。所有盘片表面上到主轴中心的距离相等的磁道称为柱面。固态硬盘是一种基于闪存的存储技术在某些情况下是传统旋转磁盘的极有吸引力的替代品。