资讯详情

计算机基础_程序是怎样跑起来的_04_有棱有角的内存

文章目录

  • 棱角分明的内存
    • 0、热身问题
    • 1.内存的物理机制非常简单
    • 2.内存的逻辑模型是建筑
    • 简单的指针
    • 4.数组是有效使用内存的基础
    • 5.栈、队列和环形缓冲区
    • 6.链表使元素更容易添加和删除。
    • 7.二叉搜索树使数据检索更有效

棱角分明的内存


0、热身问题

  1. 有十个地址信号引脚的内存IC(集成电路)指定的地址范围是多少? 2^10 = 1024个地址,即十六进制表示0x 00 00 00 ~ 0x 0F FF FF。
  2. 高级编程语言中的数据类型是什么? 内存区域的大小和存储在内存区域的数据类型。
  3. 指针变量的长度是多少? 32位。
  4. 数组的数据类型长度与物理内存相同? 1字节。因为物理内存是字节为单位存储数据。
  5. 用LIFO数据读写的数据结构叫什么? LIFO(Last In First Out,先进后出),栈。
  6. 为什么数据结构按数据的大小链表分为两个方向? 二叉查找树(Binary Search Tree)。

由于数据对象存储在内存和磁盘上,程序必须能够自由使用内存和磁盘。在本文中,让我们先了解内存,然后再了解磁盘。


1.内存的物理机制非常简单

内存:一种叫做内存IC电子元件。

内存中有大量的引脚输入和输出(IC引脚),包括电源、地址信号、数据信号、控制信号等。(address)读写数据。

在这里插入图片描述

例如,我们的计算机通常是512M内存相当于524288KB的内存IC。

512M = 512 MB = 512 * 1024 * 1024 * 1 B 1KB = 1024 B = 1024 * 1 B  512MB / 1KB = 512 * 1024 = 524288 

但一般来说,我们的计算机会有更多的地址引脚和数据引脚,这样的内存IC容量将达到数十兆字节。

接下来,我们来看看数据的读写。


2.内存的逻辑模型是建筑

我们上面提到的内存IC例如,类比于建筑,一楼可以存储一个字节数据,楼层号表示地址号。

数据类型:存储的数据类型。

变量:可以简单理解为内存地址的别名。

即使不指定内存地址,也可以在程序中读写内存。

以C语言为例。

char a = 123; //1字节 short b = 123; //2字节 long c = 123; //4字节 

低字节序:将多字节数据的低字节存储在低内存中。奔腾等英特尔处理器使用低字节序。

高字节序:将多字节数据的高字节存储在低内存中。

以低字节序为例,虽然变量值为123,但其内存空间可能会有所不同。


简单的指针

每个人都应该记住C语言中的指针,我个人又爱又恨。

指南:存储数据的内存地址。

指针变量:存储指针变量。

char* d; short* e;  long* f; 

对于“short* e”:

  1. *变量是指针变量;
  2. short指数据类型,表示一次性可读字节数。


4.数组是有效使用内存的基础

数组:在内存中连续排列多种相同数据类型的数据。

索引:数组元素的编号。

编译器自动实现索引与内存地址的交换。指定索引后,CPU内存地址由基址寄存器和变址寄存器指定,然后读写。

根据指针与数组的关系:

  • 基址寄存器对应数组名(指针)。
  • 对应变址寄存器的索引(指针增量)。
char g[100]; //char类型数组以1字节读写内存。 short h[100]; //short以2字节为单位的类型数组读写内存。 long i[100]; //long类型数组以4字节读写内存。 


5.栈、队列和环形缓冲区

栈:LIFO,后进先出。

队列:FIFO,先进先出。

应用:

  • 栈:暂时放弃的据,随后再还原。
  • 队列:先到先处理,如通讯中发的数据或同时运行的程序发送过来的数据。

这一块的知识在《数据结构与算法》这门课中会重点介绍。


6、链表使元素的追加和删除更容易

这一块的知识在《数据结构与算法》这门课中会重点介绍。


7、二叉查找树使数据检索更有效

这一块的知识在《数据结构与算法》这门课中会重点介绍。


注:如哟错误,敬请指正!

标签: mb3773集成电路

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台