《程序是怎么跑起来的》第四章学习笔记

第一章笔记传送门 👉 点击这里
第二章笔记传送门 👉 点击这里
第三章笔记传送门 👉 点击这里
第四章笔记传送门 👉 点击这里
第五章笔记传送门 👉 点击这里
第六章笔记传送门 👉 点击这里
第七章笔记传送门 👉 点击这里
第八章笔记传送门 👉 点击这里
第九章笔记传送门 👉 点击这里

第四章:熟练使用有棱有角的内存

  • 有十个地址信号引脚的内存IC(集成电路)可以指定的地址范围是多少
    0000000000 - 1111111111 (即0 - 1023)
  • 高级编程语言中的数据类型表示的是什么
    占据内存区域的大小和存储在该区域的数据类型
  • 在32位内存地址的环境中,指针变量的长度是多少位
    32位
  • 与物理内存有着相同构造的数组的数据类型长度是多少
    1字节(物理内存是以字节为单位进行数据存储的)
  • 用LIFO方式进行数据读写的数据结构成为什么
    栈(Last In First Out)
  • 根据数据的大小链表分叉成两个方向的数据结构称为什么
    二叉查找树

4.1 内存的物理机制很简单

  • 内存实际上是一种名为内存IC的电子元件
     (包含DRAM,SRAM,ROM等多种形式)
  • 内存IC中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚(IC的引脚),通过为其指定地址来进行数据的读写)
    1. ROM(Read Only Memory):一种只能用来读取的内存
    2. RAM(Random Access Memory):可被读取和写入的内存
      2.1 DRAM(Dynamic RAM):需要经常刷新以保存数据
      2.2 SRAM(Static RAM):不需要经常刷新电路即可保存数据

在这里插入图片描述

  • 在上图表示的内存IC中,数据引脚有8个,表示一次可以输入输出8位。此外,地址信号引脚有10个,表示可以指定0000000000 -1111111111共1024个地址。而地址表示数据的存储场所,因此我们可以得出这个内存可以存储1024个字节的数据。所以该内存IC的容量就是1KB。
    (通常情况下,计算机使用的内存IC中会有更多的地址信号引脚,这样就能在一个内存IC中存储数十兆字节的数据。因此,只用数个内存IC,就可以达到512MB的容量)
  • 在上图IC中存入1KB数据的操作:
    给VCC接入+5V电源
    给GND接入0V电源
    使用A0 - A9的地址信号指定存储场所
    把数据的值输入给D0 - D7 这些数据信号
    把WR信号设定成1
  • 在上图IC中取出1KB数据的操作:
    把A0 - A9的地址信号指定成数据的存储场所
    将RD的信号设成1
     指定地址中存储的数据会被输出到D0 - D7的数据信号引脚
    像WR、RD这样可以让IC运行的信号称为控制信号
    (当WR、RD同时为0时,写入和读出的操作都是无法进行的)

4.2 内存的逻辑模型是楼房
在这里插入图片描述

  • 低字节序:将多字节数据的低位字节存储在内存低位地址的方式
  • 高字节序:相反

4.3 简单的指针

  • 指针:是一种变量。表示的不是数据的值,而是存储着数据的内存的地址。
    (在32的机器上,指针变量的长度是32位,在C语言中会遇到int * p, float *p这样指定类型的写法,这样的目的是从指针存储的地址中一次能读写的数据的字节数)
    (举例:char *d, short *e, long *f;这三句中,d,e,f的值都是100。这种情况下使用d时就能从编号100的地址中读写1个字节的数据,使用e时就是2个字节的数据,使用f时就是4个字节(100地址-103地址)的数据。

4.4 数组是高效使用内存的基础

  • 数组的索引和内存地址的变换工作是由编译器自动实现的
  • CPU通过利用基址寄存器和变址寄存器来指定内存地址
  • char类型以1个字节为单位对内存进行读写,long类型以四个字节对内存进行读写。
  • 数组是使用内存的基本
    在这里插入图片描述

4.5 栈、队列以及环形缓存区

  • 栈和队列,都可以不通过指定地址和索引来对数组的元素进行读写。
    (需要临时保存计算过程中的数据,连接在计算机的设备上的输入或者输出的数据时,都可以通过这些方法使用内存。)
  • 队列一般是以环状缓冲区的方式来实现的

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

  • 这部分书中讲的过于基础,不再赘述

4.7 二叉查找树使数据结构搜索更有效

  • 二叉查找树:指在链表的基础上往数据种追加元素时,考虑到数据的大小关系,将其分成左右两个方向的表现行式。

**下一章的简单引荐:**磁盘虽然在物理方面只能以扇区为单位进行读写,但是通过在程序种多花一些心思,磁盘也可以各种形态来用。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值