计算机是处理数据的设备,而程序则表现处理顺序和数据结构。在计算机内部,数据被存储在内存和磁盘中,因此程序必须要能够自由使用内存和磁盘。
因此认识内存很重要。
几种不同类别的内存:ROM,DRAM,SRAM
![](https://img.haomeiwen.com/i2105633/7a2611dfc181b29c.png)
内存的物理机制
内存IC
物理上,内存实际上是一种名叫内存IC的电子元件。内存IC含有大量的引脚。引脚可以被配置为表示不同的信号,包括控制信号、数据信号、地址信号和电源等。
下面用一个虚拟内存IC示例。
![](https://img.haomeiwen.com/i2105633/703bd8c75ad786c1.png)
能指定多少个地址?
A0~A9为地址信号引脚,这里有10个,因此可以指定2^10=1024个不同的地址。
一次可以输入输出多少数据?
D0~D7为数据信号引脚,这里有8个,因此可以指定长度为8bit的数据,即1字节的数据。
一共可以存储多少数据?
1024x1字节=1024字节=1KB的数据。
RD、WR能控制什么?
RD,即read,该引脚信号为1时,该内存IC为“读”模式,可以输出数据。WR,即write,该引脚信号为1是,内存IC为“写”模式,可以输入数据。RD和WR都为0时,既不能读,也不能写。
![](https://img.haomeiwen.com/i2105633/46d65e55f80a0ce5.png)
![](https://img.haomeiwen.com/i2105633/20412d1e1ec94280.png)
内存的逻辑模型
![]()
数据类型:代表在内存中存储的是哪种类型的数据。
![]()
指针
指针也是一种变量,存储数据在内存中的地址。在32位系统中,指针变量的长度也是32位。
![]()
数组
数组:多个同样类型的数据在内存中连续存放的数据结构。
通过 首地址 和 索引 来找到数组中的某一项。对比CPU中的基址寄存器和变址寄存器的机制,可以发现两者是一致的。
![]()
栈、队列和环形缓冲区
栈和队列:不通过指定地址和索引即可访问数组的元素。
栈:LIFO (Last In First Out),先进后出。
队列:FIFO (First In First Out),先进先出。
这两种数据结构已经基本了解了,就不记了。。。。。。
环形缓冲区
队列的一种常用的使用方式。
![](https://img.haomeiwen.com/i2105633/8a58efba008d950b.png)
链表和二叉查找树
同样,它们都不用通过指定地址和索引即可访问数组元素。
一般地,
链表:对数组元素的增、删、改操作更为高效。
二叉查找树:对数组元素的索引更为高效。
链表已经基本熟悉了,就不记了。。。。
网友评论