磁盘概述、磁盘缓存、虚拟内存及虚拟内存与内存的交换方式

简介: 磁盘概述、磁盘缓存、虚拟内存及虚拟内存与内存的交换方式

一、认识磁盘


       磁盘和内存都具有存储功能,它们都是存储设备。区别在于,内存是通过 电流 来实现存储;磁盘则是通过 磁记录技术 来实现存储。内存是一种高速,造价昂贵的存储设备;而磁盘则是速度较慢、造价低廉的存储设备;电脑断电后,内存中的数据会丢失,而磁盘中的数据可以长久保留。内存是属于 内部存储设备 ,硬盘是属于 外部存储设备 。一般在计算机中,磁盘和内存是相互配合共同作业的


       一般内存指的是主存(负责存储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 倍

目录
相关文章
|
17天前
|
存储 缓存 监控
|
18天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
191 2
|
1月前
|
存储 缓存 固态存储
|
1月前
|
消息中间件 存储 缓存
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
50 3
|
1月前
|
存储 缓存 API
LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存
LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存
42 6
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
128 5
|
1月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
42 0
|
3月前
内存或磁盘不足,excel无法再次打开或保存任何文档
内存或磁盘不足,excel无法再次打开或保存任何文档
|
3月前
|
存储 缓存 Linux
在Linux中,内存怎么看?磁盘状态怎么看?
在Linux中,内存怎么看?磁盘状态怎么看?
|
1月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
74 6

热门文章

最新文章