首页 > 系统相关 >《程序是怎样跑起来的》——第4章 熟练使用有棱有角的内存

《程序是怎样跑起来的》——第4章 熟练使用有棱有角的内存

时间:2024-02-19 19:00:12浏览次数:25  
标签:字节 示例 数据 数据类型 有棱有角 内存 数组 熟练

一、内存的物理机制
1、内存的作用:计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。
2、内存的概念:内存实际上是一种名为内存IC的电子元件。
3、内存的形式:包括DRAM、SRAM、ROM等多种形式。
(1、ROM(Read Only Memory)是一种只能用来读取的内存。
2、RAM(Random Access Memory)是可被读取和写入的内存,分为需要经常刷新(refresh)以保存数据的DRAM(Dynamic RAM),以及不需要刷新电路即能保存数据的SRAM(Static RAM)。

4、内存IC引脚:内存IC中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚(IC的引脚),通过为其指定地址(address),来进行数据的读写。
示例:内存IC(在这里假设它为RAM²)的引脚配置示例。

5、向内存IC中写入和读出数据的方法

二、内存的逻辑模型
1、内存的逻辑模型是楼房样:

2、数据类型:包含着物理内存中不存在的概念,那就是数据类型。编程语言中的数据类型表示存储的是何种类型的数据。
3、数据类型种类:表示1字节长度的char,表示2字节长度的short,以及表示4字节长度的long。
①在C语言中,int这一数据类型经常会用到。int也是CPU最容易处理的数据类型的长度。在32位的CPU中,int是32位的。在以前的16位的CPU中,int是16位的。
②将多字节数据的低位字节存储在内存低位地址的方式称为低字节序,与此
相反,把数据的高位字节存储在内存低位的方式称为高字节序。本章的示例图中使用的是奔腾等英特尔处理器所采用的低字节序方式。
4、变量的数据类型不同,所占用的内存大小也不一样

三、指针
1、概念:指针也是一种变量,它所表示的不是数据的值,而是存储着数据的内存的地址。
2、作用:通过使用指针,就可以对任意指定地址的数据进行读写。
3、各种数据类型指针的定义

4、指针的数据类型表示一次可以读写的长度

四、数组
1、概念:数组是指多个同样数据类型的数据在内存中连续排列的形式。
2、索引:作为数组元素的各个数据会通过连续的编号被区分开来,这个编号称为索引(index)。指定索引后,就可以对该索引所对应地址的内存进行读写操作。而索引和内存地址的变换工作则是由编译器自动实现的。
3、数组类型:在C语言中定义char类型、short类型和long类型这三个数组。
4、各种类型的数组定义

数组是使用内存的基本。数组的定义中所指定的数据类型,也表示一次能够读写的内存大小。char类型的数组以1个字节为单位对内存进行读写,而short类型和long类型的数组则分别以2个字节、4个字节为单位对内存进行读写。
5、不同数据类型的数组

五、栈、队列以及环形缓冲区
1、概括:栈和队列,都可以不通过指定地址和索引来对数组的元素进行读写。需要临时保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据时,都可以通过这些方法来使用内存。如果每次保存临时数据都需指定地址和索引,程序就会变得比较麻烦,因此要加以改进。
2、简介:栈和队列的区别在于数据出入的顺序是不同的。在对内存数据进行读写时,栈用的是LIFO(Last Input First Out,后入先出)方式,而队列用的则是FIFO(First Input First Out,先入先出)方式。
3、示例:
(1)使用栈的程序示例:

运行时栈的变化:

    (2)使用队列的程序示例:


运行时队列的变化:

(3)环状缓冲区的模型:

六、链表对元素的追加和删除
1、链表:在数组的各个元素中,除了数据的值之外,通过为其附带上下一元素的索引,即可实现链表。
2、作用:可以更加高效地对数组数据(元素)进行追加和删除处理。
3、示例:
(1)链表的示例(初始状态):

(2)链表删除:

(3)链表追加:

4、单纯使用数组的情况
(1)元素的删除:

(2)元素的追加:

标签:字节,示例,数据,数据类型,有棱有角,内存,数组,熟练
From: https://www.cnblogs.com/Li204217/p/18021759

相关文章

  • iPhone 16全系配置抢先曝光:首发史上最强A18/A18 Pro、标配8GB内存
    iPhone16后摄像头模组重回垂直排列的消息得到了证实。MR抢先曝光了iPhone16系列四款机型的核心配置,一起来看看。今年,iPhone16、16Plus和16Pro、16ProMax将分别升级A18、A18Pro芯片,采用台积电“N3E”增强型3nm工艺。A18系列芯片的一大变化是将采用“升级版神经引擎”,并大......
  • 内存和磁盘的密切联系
    现在的计算机基本上采用的是存储程序方法。从存储程序指令和数据的、角度来看,可以说内存和磁盘的功能是一样的。在计算机系统中,速度快、容量小的内存和速度慢、容量大的磁盘取长补短。内存指主存,磁盘主要指硬盘。存储在磁盘中的程序需要先加载到内存中才能运行,不能直接在磁盘上运......
  • Vulkan内存与资源管理
    在OpenGL中,当我们创建resource的时候,内存会被自动分配。不同于OpenGL,vulkan是更加底层的API,需要显式的内存管理。显式的内存管理可以在资源复用与特定平台的优化方面带来好处。1.Vulkan内存分类Vulkan内存分为2类:Hostmemory和Devicememory。Devicememory:指显存(GPU可直接......
  • 《程序是怎样跑起来的》第五章:内存与磁盘的亲密关系
    当我们谈论计算机的存储系统时,我们经常提及内存和磁盘。对于许多初学者,这两者似乎都是用于存储数据的,但它们之间存在巨大的差异。在第五章中,作者详细解释了这两者之间的区别和联系,帮助我们更深入地理解它们的角色和功能。内存,也被称为RAM(随机存取存储器)是计算机中用于临时存储数......
  • 第5章内存和磁盘的亲密关系
    内存利用电流实现:高速高价,磁盘利用磁效实现:低速低价磁盘中存储的程序:必须加载到内存中才能运行,因为负责解释和运行程序内容的CPU需要通过内部程序计数器来指定内存地址,然后才能读出程序,其次,磁盘的速度慢即使可以直接读取,效率也比较低下内存与磁盘相互促进:磁盘缓存:加快磁盘访问速......
  • 内存
    内存实际上是一种名为IC的电子元件。数据信号引脚有D0~D7八个,表示一次可以输出8位(1字节)的数据;地址信号引脚由A0~A9十个,表示可以指定0000000000·~1111111111共1024个地址。即这个内存IC可以储存1024个1字节的数据1024=1K,所以该内存IC容量为1KB。1MB=1000KB通常情况下......
  • 第五章——内存和磁盘的亲密关系
    上一章只讲了内存,这一章将讲到内存和磁盘的关系,可以更深入了解计算机内部存储信息数据的原理。磁盘和内存的亲密关系————*磁盘不读入内存就无法运行,因为负责解析和运行程序的CPU需要通过内部程序计数器来指定内存地址才能读出程序。*磁盘缓存加快了磁盘的访问时间,磁盘缓存......
  • JAVA基础-内存与垃圾回收
    1,运行时数据区1,程序计数器线程私有。生命周期:生命周期与线程同步。作用:它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。特点:它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域,唯一没有OutofMemory......
  • Java对象引用和内存管理的细节
    在Java中,当局部变量(比如方法参数)的作用域结束时,这个局部变量的引用确实不再存在,但这并不意味着它引用的对象会被销毁。对象的销毁是由Java的垃圾回收器(GarbageCollector,GC)来管理的。在Java中,局部变量(如方法参数)通常存储在栈内存(StackMemory)中,而对象实例(如ServletConfig对象)则......
  • 对于计算机内存的运行原理的认识(《程序是怎样跑起来的第4章》)
    在这一章节中,我了解到了计算机的重要组成部分“内存”的奥妙所在,书中说计算机的内存与CPU一样,都是IC电子原件的一种,在阅读过CPU和内存知识后,我认为CPU等同于一个能够处理数据的“智能内存”,因为CPU和内存都是通过引脚来传递信号,使数据写入/读出。与CPU相似,内存中的数据也是由数组......