【Note】数据存储地常规小结


BY《程序是怎样跑起来的》

一、内存——利用电流存储(高速高价)
  1. 物理机制
    内存IC=电源+地址信号(IC引脚)+数据信号(IC引脚)+控制信号(IC引脚)
    通过对内存指定地址(address),进行数据读写。

一内存IC有m个数据引脚,n个地址引脚:
则该内存IC可存放2^n个数据,每个数据值为m位数,每个数据m/8字节。
若现需QB大的内存,则用上述内存组装,共需Q2nm8\frac{Q}{2^n*\frac{m}{8}}个。
【tips:内存有多大,表明内存可存放多少字节的数据,与地址引脚数息息相关。而若以程序员角度,还需关注变量数据类型,因不同数据类型的字节长度不同。】

  1. 分类:
    (1)ROM【Read Only Memory】:只能用于读取的内存;
    (2)RAM【Random Access Memory】:可被读取和写入的内存,分为需经常刷新(refresh)以保存数据的DRAM【Dynamic RAM】,和不需刷新电路即能保存数据的SRAM【Static RAM】。

  2. 数组——高效使用内存的基础
    (1)含义:数组指多个同样数据类型的数据在内存中连续排列的形式。
    (2)组内区分:通过连续的编号区分,编号又称索引(index)。
    (3)操作:指定索引后,可对该索引所对应地址的内存进行读写操作,索引和内存地址的变换工作由编译器自动实现

注意!此处区别于CPU,CPU是通过基址寄存器和变址寄存器来指定内存地址。

(4)数组和内存物理构造一样。

  1. 数据结构
    (1)栈&队列:不通过指定地址和索引对数组的元素进行读写。

%%需要临时保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据时,都可用此结构使用内存,因不需指定地址和索引。
%%栈的原意是“干草堆积如山”,干草堆积成山后,最后堆的干草会被最先抽取出来。
%%队列常以环状缓冲区(ring buffer)的方式实现。

(2)链表:易插入、删除。
(3)二叉查找树:高效地对数组数据进行检索,是由链表构造发展而来的表现形式,故也易插入、删除。

Q1:高级编程语言中的数据类型表示的是什么?
A1:占据内存区域的大小和存储在该内存区域的数据类型。例如,C语言数据类型中的short类型,表示占据2字节的内存区域,并且存储整数。

Q2:在32位内存地址的环境中,指针变量的长度是多少位?
A2:32位。指针指的是用于存储内存地址的变量。

Q3:与物理内存有相同构造的数组的数据类型长度是多少?
A3:1字节。物理内存是以字节位单位进行数据存储的。

二、磁盘——利用磁效应电流存储(低速廉价)
  1. 磁盘存储的程序,必须加载到内存后才能运行。
    程序要加载到内存后才开始运行
  2. 磁盘缓存加快磁盘访问速度
    磁盘缓存【disk cache】:指把从磁盘中读出的数据存储到内存空间中的方式。此举可减少访问实际磁盘次数,因此大大改善磁盘数据访问速度。
    磁盘缓存

缓存原理:把低速设备数据保存在高速设备中,需要时将其从高速设备中读出。
实例:Web浏览器中的使用,Web浏览器通过网络获取远程Web服务器数据并将其显示出来,对于大文件花费很多时间,故可把获取的数据暂时保存在磁盘中,后在需要时再显示磁盘数据。即把低速的网络数据保存到相对高速的磁盘中。

  1. 虚拟内存(virtual memory)
    (1)含义:把磁盘一部分作为假想内存使用。

磁盘缓存:假想磁盘,实际上是内存;
虚拟内存:假想内存,实际上是磁盘。

(2)用法:因CPU只能执行加载到内存中的程序,故必须把实际内存(或称物理内存)的内容和磁盘上的虚拟内存内容进行部分置换(swap),并同时运行程序。
(3)方法:
i)分页式:Windows,不考虑程序构造下,将运行的程序按一定大小的页(page)进行分割,以页为单位在内存和磁盘间进行置换。

Page In:磁盘内容读入内存;
Page Out:内存内容写到磁盘。
page file:页文件,Windows在磁盘上提供虚拟内存用的文件,由Windows自动做成和管理,文件大小即虚拟内存大小,通常是实际内存的1~2倍容量。

ii)分段式:把要运行的程序分割成以处理集合及数据集合等为单位的段落,再以分割后的段落为单位在内存和磁盘间进行数据置换。

  1. 节约内存的编程方法
    (1)通过DLL文件实现函数共有
    i)含义:DLL(Dynamic Link Library)文件,是在程序运行时可以动态加载Library(函数和数据的集合)的文件。
    ii)注意:多个应用可共有一个DLL文件,以共有达到节约内存效果。
    iii)优点:节约内存;在不变更EXE文件的情况下,只通过升级DLL文件就可更新。

Windows的os本身是多个DLL文件的集合体。

浪费内存
节约内存
(2)调用_stdcall 减小程序文件大小
i)含义:标准调用(standard call略称)。

stdcall

  1. 磁盘物理结构——磁盘存储数据的形式
    (1)物理表面划分方式:扇区方式、可变长方式。

扇区方式:将磁盘划分为固定长度的空间,Windows的硬盘、软盘皆用此法;
可变长方式:把磁盘划分为长度可变的空间。

(2)扇区划分
磁道:磁盘表面分成若干个同心圆的空间;
扇区:磁道按照固定大小(能存储的数据长度相同)划分而成的空间,是对磁盘物理读写的最小单位
磁盘物理结构

Windows中使用的磁盘,一般1个扇区是512个字节。逻辑方面(软件方面)对磁盘进行读写的单位是扇区整数倍簇。磁盘容量越大,簇容量越大。软盘中,1簇=1扇区,硬盘中不然。

不管硬盘软盘,不同的文件不能存储在同一个簇中,否则会导致只有一方的文件不能被删除。因此,不管多小的文件,都会占用1簇空间。故,所有文件都会占用1簇的整数倍的磁盘空间。

若减少簇的容量,磁盘访问次数会增加,导致读写文件的时间变长。因此,若簇容量过小,磁盘的整体容量也会减少。

扇区和簇的大小,由处理速度和存储容量的平衡来决定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章