计算机基础_程序是怎样跑起来的_05_内存和磁盘的亲密关系

内存和磁盘的亲密关系


0、问题

  1. 存储程序的方式指的是什么?
    在存储装置中保存程序,并逐一运行的方式。
  2. 通过使用内存来提高磁盘访问速度的机制称为什么?
    Disk Cache(磁盘缓存)。
  3. 把磁盘的一部分作为假想内存来使用的机制称为什么?
    Virtual Memory(虚拟内存)。
  4. Windows中,在程序运行时,存储着可以动态加载调用的函数和数据的文件称为什么?
    DDL文件。
  5. 在EXE程序文件中,静态加载函数的方式称为什么?
    静态链接。
  6. 在Windows计算机中,一般一个扇区是多少字节?
    512 Byte

从具有存储程序命令和数据这点来看,内存和磁盘的功能是相同的。

计算机五大部件:输入装置、输出装置、存储器、运算器、控制器。

内存(主要指主存,即负责存储CPU中运行的程序指令和数据的内存)和磁盘就属于存储部分。

从存储容量看,内存是高速低价,而磁盘是低速高价。


1、不读入内存就无法运行

存储程序方式:程序保存在存储设备中,有序地被读出来实现运算。

磁盘中存储的程序,要加载到内存中才能运行。

这是为何呢?
因为负责程序解析和运行的CPU,要通过其内部的程序计数器来指定内存地址,进而读出程序。
即使CPU可以直接读出并运行磁盘中保存的程序,但是磁盘读取速度慢,程序额运行速度还是会降低。

在这里插入图片描述


2、磁盘缓存加快了磁盘访问的速度

磁盘缓存:把从磁盘中读取的数据存储到内存空间中的方式。

所以,磁盘缓存是通过使用内存来提高磁盘访问速度的机制。

在这里插入图片描述

把”低速“设备的数据保存到”高速“设别中,需要时再从”高速“设备中读取,这种“缓存”的方式在其他地方也会见到。

其中的一个实例就是在Web浏览器中的使用。

由于Web浏览器是通过网络来获取远程Web服务器的数据并将其显示出来的。
因此,在显示较大的图片等文件时,会花费不少时间。
于是,Web浏览器就可以把获取的数据暂时保存在磁盘中,然后在需要时再显示磁盘中的数据。
也就是说,把低速的网络数据保存到相对高速的磁盘中。

3、虚拟内存把磁盘作为部分内存使用

虚拟内存:指把磁盘的一部分作为假想的内存来使用。

“虚拟内存”和“磁盘缓存”是相对的。

  • 虚拟内存是假想的内存,实际上是磁盘。
  • 磁盘缓存是假想的磁盘,实际上是内存。

借助于虚拟内存,在内存不足的时候也可以运行程序。但是要时刻记住,某个时间点正在运行的程序必须存在于内存中!!!

CPU只能执行加载到内存中的数据!!!

所以说,虽然是“虚拟内存”,但是某个时间的运行程序还是存在于内存中的。

换句话说,为了实现虚拟内存,就必须把实际内存的数据和虚拟内存的数据进行部分置换,并同时运行程序。

按照我自己的理解,打个比方就是虚拟内存中数据和内存中的数据很熟很熟,熟到虚拟内存中的数据想上CPU运行时,只要跟内存中的数据说一声,然后两者置换一下就行了,虚拟内存的数据就可以上CPU正常的运行。

虚拟内存的实现方式有分页式和分段式。

分页式:把运行的程序按照一定大小的页(page)进行分割,并以page为单位在内存和磁盘间进行置换。

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

我们日常使用的Windows操作系统就是采用“分页式”。

在这里插入图片描述

在这里插入图片描述


4、节约内存的编成方法

虚拟内存也确实能避免因内存不足导致的应用无法启动,但是虚拟内存不能解决内存不足的问题,只能说缓解。因为使用虚拟内存时发生的 Page In和 Page Out往往伴随着低速的磁盘访问,因此在这个过程中应用的运行会变得迟钝起来。

所以说,虚拟内存无法彻底解决内存不足的问题。

为了从根本上解决内存不足的问题,无非就是增加内存的容量,或者尽量把运行的应用文件变小。增加内存容量很直接,但是囊中羞涩啊。

所以我选择把应用文件变小的编程方法,常见有两种:

  1. 通过DDL文件实现函数共有
  2. 通过调用 _stdcall 来减小程序文件的大小

第一种:通过DDL文件实现函数共有

DDL(Dynamic Link Library):动态链接库,在程序运行时可以动态加载Library(函数和数据的集合体)的文件。

一般多个应用可以共有同一个DLL文件,而通过共有同一个 DLL文件则可以达到节约内存的效果。

在这里插入图片描述

Windows的操作系统本身也是多个DLL文件的集合体,有时在安装新应用时DLL文件也会被追加,应用则会通过利用这些DLL文件的功能来运行。

之所以要利用多个DLL文件,原因有两个:

  • 可以节约内存
  • 在不变更EXE文件的情况下,只通过升级DLL文件就可以更新应用

第二种:通过调用 _stdcall 来减小程序文件的大小


5、磁盘的物理结构

磁盘的物理结构:磁盘存储数据的形式。

磁盘是通过将其物理表面划分成多个空间来使用的,根据划分的方式分为:

  • 扇区方式:划分为固定长度的空间。
  • 可变长方式:划分为长度可变的空间。

一般Windows操作系统使用硬盘和软盘都是扇区方式。

磁道:把磁盘表面分成若干个同心圆空间。

扇区:把磁道按照固定大小划分而成的空间。

在这里插入图片描述

Windows对磁盘进行读写的单位是扇区的整数簇倍,所以“扇区是对磁盘进行读写的最小单位”。

在软盘中,1簇 = 512 Byte = 1个扇区

  • 无论软盘、硬盘,不同文件是不能存储同一个簇中的。
  • 无论文件再小,都会占用一个簇的空间。
  • 所有文件都会占用1簇的整数倍的磁盘空间。
  • 磁盘的数据保存是以簇为单位。
  • 以簇为单位进行读写时,1簇中没有被填满的区域会保持不被使用的状态。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窝在角落里学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值