一、认识磁盘
磁盘和内存都具有存储功能,它们都是存储设备。区别在于,内存是通过 电流 来实现存储;磁盘则是通过 磁记录技术 来实现存储。内存是一种高速,造价昂贵的存储设备;而磁盘则是速度较慢、造价低廉的存储设备;电脑断电后,内存中的数据会丢失,而磁盘中的数据可以长久保留。内存是属于 内部存储设备 ,硬盘是属于 外部存储设备 。一般在计算机中,磁盘和内存是相互配合共同作业的
一般内存指的是主存(负责存储CPU中运行的程序和数据);早起的磁盘指的是软磁盘(soft disk,简称软盘),如下图:
如今常用的磁盘是硬磁盘(hard disk,简称硬盘),如下图:
程序不读入内存就无法运行
内存的运行机制就是把程序保存在存储设备中,通过使用CPU读入来实现程序指令的执行。这种机制称为 存储程序方式,现在看来这种方式是理所当然,但在以前程序的运行都是通过改变计算机的布线来读写指令的
计算机注意的存储部件是内存和磁盘。磁盘中存储的程序必须加载到内存中才能运行,在磁盘中保存的程序是无法直接运行的,这是因为负责解析和运行程序内容的CPU是需要通过程序计数器来指定内存地址从而读出程序指令的
程序运行示意图:
二、磁盘缓存
磁盘往往和内存是互利共生的关系,相互协作,彼此有良好的合作关系。每次内存都需要从磁盘中读取数据,比如会读到相同的内存,所以一定会有一个角色负责存储我们经常需要读到的内容。我们在做软件的时候经常会用到 缓存技术,那么硬件层面也不例外,磁盘也有缓存,磁盘的缓冲叫做 磁盘缓存
磁盘缓存指的是把从磁盘中读出的数据存储到内存的方式,这样一来,当接下来需要读取相同内容时,就不会再通过实际的磁盘,而是通过磁盘缓存来读取。某一技术或者框架的出现势必要解决某种问题,那么磁盘缓存就大大改善了磁盘访问的速度
使用磁盘存储读取数据:
Windows操作系统提供了磁盘缓存技术,不过,对于大部分用户来说是感受不到磁盘缓存的,并且随着计算机的演进,对硬盘的访问速度也在不断演进,实际上磁盘缓存到Windows 95/98 就已经不怎么使用了
把低速设备的数据保存在高速设备中,需要时可以直接将其从高速设备中读出,这种缓存方式在web中应用比较广泛,web浏览器是通过网络来获取远程web服务器的数据并将其显示出来。因此在读取较大图片的时候,会耗费不少时间,这时web浏览器可以把获取的数据保存在磁盘中,然后根据需要显示数据,再次读取的时候就不同重新加载了
三、虚拟内存
虚拟内存 是内存和磁盘交互的第二个媒介。虚拟内存是指把磁盘的一部分作为 假想内存 来使用。这与磁盘缓存是假想的磁盘(实际上是内存)相对,虚拟内存是假想的内存(实际上是磁盘)
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有 连续可用 的内存(一个完整的地址空间),但是实际上,它通常被分割成多个物理碎片,还有部分存储在外部磁盘管理器上,必要时进行数据交换。
计算机中的程序都要通过内存来运行,如果程序占用内存很大,就会将内存空间消耗殆尽。为了解决这个问题,WINDOWS操作系统运用了虚拟内存技术,通过拿出一部分硬盘来当作内存使用,来保证程序耗尽内存仍然有可以存储的空间。虚拟内存在硬盘上的存在形式就是 PAGEFILE. SYS 这个页面文件。
通过借助虚拟内存,在内存不足时仍然可以运行程序。例如,在只剩5MB 内存空间的情况下仍然可以运行10MB的程序。由于CPU只能执行加载到内存中的程序,因此,虚拟内存的空间就需要和内存中的空间进行 置换(swap),然后运行程序。
四、虚拟内存与内存的交换方式
刚才我们提到虚拟内存需要和内存中的部分内容做置换才可让CPU继续执行程序,那么做置换的方式是怎样的呢?又分为哪几种方式呢?
虚拟内存的方法有 分页式 和 分段式 两种。Windows采用的是分页式。该方式是指在不考虑程序构造的情况下,把运行的程序按照一定大小的页进行分割,并以 页 为单位进行置换。在分页式中,我们把磁盘的内容读到内存中称为 Page In,把内存的内容写入磁盘称为 Page Out 。Windows 计算机的页大小为4KB,也就是说,需要把应用程序按照 4KB 的页来进行切分,以页(page)为单位放到磁盘中,然后进行置换。
程序中Page In 和 Page Out:
为了实现内存功能,Windows在磁盘上提供了虚拟内存使用的文件(Page file ,页文件)。该文件由Windows 生成和管理,文件的大小和虚拟内存大小相同,通常大小是内存的1 - 2 倍