news 2026/7/12 1:42:17

46、脏页写入磁盘的机制与原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
46、脏页写入磁盘的机制与原理

脏页写入磁盘的机制与原理

在计算机系统中,内核会不断地将包含块设备数据的页面填充到页面缓存中。当进程修改某些数据时,对应的页面会被标记为脏页,也就是设置其PG_dirty标志。

1. 脏页延迟写入与问题

Unix 系统允许将脏页延迟写入块设备,这显著提高了系统性能。因为对缓存中的一个页面进行多次写操作,只需对相应的磁盘扇区进行一次缓慢的物理更新即可。而且,写操作不像读操作那样关键,因为进程通常不会因延迟写入而挂起,但往往会因延迟读取而挂起。由于延迟写入,每个物理块设备平均处理的读请求会比写请求多得多。

然而,将延迟写入策略发挥到极致有两个主要缺点:
-数据丢失风险:如果发生硬件或电源故障,RAM 中的内容将无法恢复,因此自系统启动以来所做的许多文件更新都会丢失。
-内存需求过大:页面缓存的大小,以及容纳它所需的 RAM 大小必须非常大,至少要与所访问的块设备大小一样。

因此,在以下情况下,脏页会被刷新(写入)到磁盘:
- 页面缓存过满,需要更多页面,或者脏页数量过多。
- 页面变为脏页后经过的时间过长。
- 进程请求刷新块设备或特定文件的所有待处理更改,这可以通过调用sync()fsync()fdatasync()系统调用来实现。

对于缓冲页,情况更为复杂。与每个缓冲页关联的缓冲区头允许内核跟踪每个单独块缓冲区的状态。如果关联的缓冲区头中至少有一个设置了B

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 18:14:09

AutoGPT实战指南:让大模型帮你自动完成复杂任务

AutoGPT实战指南:让大模型帮你自动完成复杂任务 在一场深夜的头脑风暴中,你突然想到:“我需要一份关于量子计算的科普文章,下周要在公司做分享。” 于是你打开浏览器,搜索资料、复制粘贴、整理结构、反复修改……几个小…

作者头像 李华
网站建设 2026/7/11 19:05:07

从零到一:nerfstudio让普通人也能玩转3D建模的终极指南

还记得第一次接触3D建模时的挫败感吗?复杂的界面、繁琐的操作、永远对不齐的顶点...这一切都将成为过去。今天,我要分享的是如何通过nerfstudio这个开源神器,让毫无3D建模经验的普通人也能在30分钟内创建出专业级的3D场景。 【免费下载链接】…

作者头像 李华
网站建设 2026/7/11 21:52:51

终极指南:如何使用Audiogrep轻松制作音频超级剪辑

终极指南:如何使用Audiogrep轻松制作音频超级剪辑 【免费下载链接】audiogrep Creates audio supercuts. 项目地址: https://gitcode.com/gh_mirrors/au/audiogrep Audiogrep是一款功能强大的自动音频剪辑工具,能够将音频文件转换为文本&#xff…

作者头像 李华
网站建设 2026/7/11 10:22:18

告别手动维护:go2rtc自动API文档生成的革命性方案

告别手动维护:go2rtc自动API文档生成的革命性方案 【免费下载链接】go2rtc Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc. 项目地址: https://gitcode.com/GitHub_Trending/go…

作者头像 李华
网站建设 2026/7/8 19:01:35

React-chartjs-2 数据流架构深度解析与高级应用

React-chartjs-2 数据流架构深度解析与高级应用 【免费下载链接】react-chartjs-2 React components for Chart.js, the most popular charting library 项目地址: https://gitcode.com/gh_mirrors/re/react-chartjs-2 React-chartjs-2作为Chart.js在React生态中的官方封…

作者头像 李华