简单的说就是存储以及的地方,可以分为和,通常我们所说的都是指机器的物理内存,当物理RAM满时(实际上,在RAM满之前),计算机就会用空间做内存来弥补计算机RAM空间的缺乏。虚拟内存就在硬盘上创建了。在的组成结构中,有一个很重要的部分,就是存储器。
存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称(简称)。外存通常是或光盘,像,,磁带,等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。内存指的就是主板上的存储部件,是直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的和,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。
随着电脑数据总线宽度的增加,电脑对内存数据线的要求也不断提高。内存数据线的宽度从早期的1bit提高到4bit、8bit、32bit和目前的64bit。内存接插形式也经历了DIP内存、和DIMM内存时代。
1、DIP内存DIP内存即普通双列直插内存,主要应用于数据宽度为8bit的Apple机、、PC/XT机时代。DIP内存直接焊接在主板上或插在主板的DIP插座上,早期的DIP仅有1bit数据,需以9片为一组安装,其中8片为数据位,一片为校验位。
2、SIMM内存SIMM(Single-InLineMemoryModule),单边接插内存模块。SIMM内存是一条焊有多片内存芯片的印刷电路板,插在主板内存插槽中,它分30线SIMM和72线SIMM两种类型。30线SIMM内存条诞生于286时代,有8bit数据位(部分另加有1位校验位)。对16bit数据总线的286、386SX主板均以两条为一组安装,对32bit数据总线的386DX、486主板则需以四条为一组安装,30线内存条常见容量有256KB、1MB和4MB。72线SIMM内存条诞生于486时代后期,有32bit数据位。对32bit数据总线的486主板,可以一条为一组安装;对有64bit内存数据总线的586主板,需以二条为一组安装。72线内存条常容量有4MB、8MB、16MB和32MB。
3、DIMM内存DIMM(DualIn-LineMemoryModule)双边接插内存模块。主板上的DIMM内存插槽两边均有金属引脚线,每边84线双边共有84*2=168条引脚,故而常称其为168线内存条。168线DIMM内存条有64bit数据位,在586级主板上安装一条即能工作。目前大多主板均采用DIMM内存条。168线内存条的常见容量有32MB、64MB、128MB。
技术的发展历程作为电脑主存储器的DRAM存储器问世以来,存储器制造技术也不断在提高,先后出现了FPMDRAM、EDODRAM、BEDODRAM、SDRAM、DDRDRAM、RambusDRAM等多种,主要技术向高集成度、高速度、高性能方向发展。
版权声明:本文为博主原创文章,未经博主允许不得转载。 /u/article/details/
首先需要解释的是数据对齐到底是什么,为什么有,如何处理。
以2012年408统考的一道题目为例,详细解释其中的细小知识点:
某计算机存储器按照字节编址,采用小端方式存储数据,假定编译器规定int和short型长度分别为32位和16位,并且数据按照边界对齐存储。 某C语言的程序段如下:
这种题目需要很小心每一个知识点的运用,一步错全全错。
首先,小端存储是指:数据的高位存在高地址,数据的低位存在低地址。
比如十六进制数0x123456,则我们知道12是最高位,34其次,56最低。那么存储的时候,如果用的是小端序,内存地址最小的那个用来存储56,地址增大一些存34,再高一些存12.
这里,其实我还要一个没弄明白的问题,分配的int数据,这个地址是高位还是低位?
当然按照题目的做法是,指代低位,继续增长。因此,一个int数据的4个字节,0xC008指代的是最小的地址。
现在我们把这个假定为一个条件,不去细说(我还不知道怎么来的)。
接着,重点在于对齐,结构体中会根据第一个数据的大小进行对齐。
问题来了,我们是按照最大数据进行对齐还是按照第一个数据进行对齐?
不同机器上的对齐策略不同,一般按照int的4个字节进行对齐。
而这个结构体共7个字节,所以对齐后是8个字节。
那么这个留空的字节位置在哪?
就需要牵涉到变量起始地址的问题。
规定:变量的起始地址必须能够被自身数据类型的大小整除。
对于273,十六进制是0x111,因此第一个低位字节存储0x11,再高一点的字节存储0x01,后面两个字节为空的不管。好了,看存储char b,这个大小是1个字节,存完之后,如果紧接着就存short c,那么c的起始地址是个奇数,不能被2整除。
因此在char b后留白一个字节。