内存和磁盘的关系&数据压缩(上)

电子说

1.3w人已加入

描述

在计算机的5大部件中, 「内存」「磁盘」 都被归类为 「存储部件」 。不过,利用 「电流」 来实现存储的内存,同利用 「磁效应」 来实现存储的磁盘,还是有差异的。

从存储容量来看

  • 内存是**「高速高价」**
  • 磁盘是**「低速廉价」**

不读入内存就无法运行

计算机中主要的存储部分是 「内存」「磁盘」「磁盘中存储的程序,必须要加载到内存后才能运行。在磁盘中保存的原始程序是无法直接运行的」 。这是因为,「负责解析和运行程序内容的CPU,需要通过内部程序计数器来指定内存地址,然后才能读出程序」

❝存储在磁盘中的程序需要读入到内存后才能运行

cpu


磁盘缓存

磁盘缓存Disk Cache指的是把从磁盘中读出的数据存储到 「内存空间」 中的方式。这样一来,当接下来需要读取 「同一数据」 时,就不用通过实际的磁盘,而是从磁盘缓存中把内容读出。

❝使用磁盘缓存可以大大改善磁盘数据的访问速度

cpu

「低速设备」 的数据保存到 「高速设备」 中,需要时可以直接将其从高速设备中读出,这种 「缓存」 的方式在其他情况下也会用到。

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

虚拟内存

虚拟内存Virtual Memory是指把 「磁盘」 的一部分作为 「假想的内存」 来使用。这与磁盘缓存是 「假想的磁盘」实际上是内存)相对,虚拟内存是 「假想的内存」实际上是磁盘)。

「通过借助虚拟内存,在内存不足时也可以运行程序」 。为了实现虚拟内存,就必须把 「实际内存」 (也可称为 「物理内存」 )的内容,和磁盘上的虚拟内存的内容进行 「部分置换」 ,并同时运行程序。

❝虚拟内存的方法有 「分页式」「分段式」 两种。

Windows采用的是 「分页式」 。该方式是指, 「把运行的程序按照一定大小的页Page进行分割,并以为单位在内存和磁盘间置换」

在分页式中,把磁盘的内容读出到内存称为Page In,把内存的内容写入磁盘称为Page Out

cpu

为了实现虚拟内存功能,Windows「磁盘」 上提供了虚拟内存用的页文件Page File。该文件由Windows自动做成和管理。

节约内存的编程方式(DLL文件)

「DLL(Dynamic Link Library)文件」 ,是在程序 「运行时」 可以 「动态」 加载Library(函数和数据的集合)的文件。并且,多个应用可以 「共有同一个」 DLL文件。所以, 「通过共有同一个DLL文件可以达到节约内存的效果」

假设我们编写了一个具有某些处理功能的函数MyFunc(),应用A和应用B都会使用这个函数。如果函数MyFunc()是独立的DLL文件,由于同一个DLL文件的内容在运行时可以被多个应用共有,因此内存中存在的函数MyFunc()的程序就只有一个。

cpu

Windows「操作系统」 本身也是多个DLL文件的集合体。

DLL文件还有一个优点:在不变更可执行文件的情况下,只通过升级DLL文件就可以更新。


磁盘的物理结构

「磁盘的物理结构是指磁盘存储数据的形式」

❝磁盘是通过把其物理表面划分成多个空间来使用的。

划分的方式有 「扇区方式」「可变长方式」 两种。

  1. 「扇区方式」 是指将磁盘划分为 「固定长度」 的空间
  2. 「可变长方式」 是指把磁盘划分为 「长度可变」 的空间

Windows计算机所使用的硬盘,采用的都是 「扇区方式」

扇区方式中,把磁盘表面分成若干个 「同心圆的空间」 就是 「磁道」 ,把磁道按照 「固定大小」 (能存储的数据长度相同)划分而成的空间就是 「扇区」

cpu

❝扇区是对磁盘进行 「物理读写」 的最小单位,一般一个扇区是512字节

不过,Windows「逻辑方面」软件方面)对磁盘就进行读写的单位是扇区的整数倍 「簇」 。根据磁盘容量的不同,1簇可以是512字节(1簇=1扇区)、1KB(1簇=2扇区)、2KB、4KB等。

「不同的文件是不能存储在同一簇中的」 ,否则就会导致只有一方的文件不能被删除


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分