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

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

一、认识磁盘


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


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

目录
相关文章
|
8天前
|
缓存 算法 关系型数据库
MySQL底层概述—1.InnoDB内存结构
本文介绍了InnoDB引擎的关键组件和机制,包括引擎架构、Buffer Pool、Page管理机制、Change Buffer、Log Buffer及Adaptive Hash Index。
158 97
MySQL底层概述—1.InnoDB内存结构
|
1天前
|
存储 数据挖掘 虚拟化
vsan数据恢复—vsan缓存盘故障导致虚拟机磁盘文件丢失的数据恢复案例
VMware vsan架构采用2+1模式。每台设备只有一个磁盘组(7+1),缓存盘的大小为240GB,容量盘的大小为1.2TB。 由于其中一台主机(0号组设备)的缓存盘出现故障,导致VMware虚拟化环境中搭建的2台虚拟机的磁盘文件(vmdk)丢失。
|
17天前
|
监控 Linux
centos 中查看 内存及磁盘使用率
通过这些命令,您可以全面了解系统资源的使用情况,从而更好地管理和优化系统。
55 22
|
22天前
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
2月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
247 7
|
3月前
|
存储 缓存 监控
|
3月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
1320 2
|
4月前
|
消息中间件 存储 缓存
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
100 3
|
4月前
|
存储 缓存 固态存储
|
4月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
116 0