From ec03ee2a0dded35afa749f08215f83bef932104c Mon Sep 17 00:00:00 2001 From: jiangtongda <1414714930@qq.com> Date: Sat, 1 Mar 2025 21:50:38 +0800 Subject: [PATCH] =?UTF-8?q?Update=20aof.md-=E5=85=B3=E4=BA=8E=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E4=B8=AD=E5=AF=B9aof=E5=90=8E=E5=8F=B0=E9=87=8D?= =?UTF-8?q?=E5=86=99=E6=97=B6,=E8=BF=9B=E7=A8=8B=E5=AF=B9=E7=89=A9?= =?UTF-8?q?=E7=90=86=E5=86=85=E5=AD=98=E6=9D=83=E9=99=90=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E6=9C=89=E6=AD=A7=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原文关于:"将父子进程的内存读写权限设置为可读写"的描述有误,文章中没有明确发生写操作后的进程对复制后的物理内存为读写,其余进程权限为只读 --- redis/storage/aof.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/redis/storage/aof.md b/redis/storage/aof.md index 626baab5..ac86e8ca 100644 --- a/redis/storage/aof.md +++ b/redis/storage/aof.md @@ -161,9 +161,25 @@ AOF 重写机制是在重写时,读取当前数据库中的所有键值对, ![](https://img-blog.csdnimg.cn/img_convert/5a1f2a90b5f3821c19bea3b7a5f27fa1.png) -这样一来,子进程就共享了父进程的物理内存数据了,这样能够**节约物理内存资源**,页表对应的页表项的属性会标记该物理内存的权限为**只读**。 +这样一来,子进程就共享了父进程的物理内存数据了,这样能够节约物理内存资源。页表对应的页表项的属性会标记该物理内存的权限为只读。 -不过,当父进程或者子进程在向这个内存发起写操作时,CPU 就会触发**缺页中断**,这个缺页中断是由于违反权限导致的,然后操作系统会在「缺页异常处理函数」里进行**物理内存的复制**,并重新设置其内存映射关系,将父子进程的内存读写权限设置为**可读写**,最后才会对内存进行写操作,这个过程被称为「**写时复制 (*Copy On Write*)**」。 +不过,当父进程或者子进程在向这个内存发起写操作时,CPU 就会触发**缺页中断**,这个缺页中断是由于违反权限导致的。然后操作系统会在「缺页异常处理函数」里进行**物理内存的复制**,并重新设置其内存映射关系: + +对于发起写操作的进程: + +操作系统会为该进程复制一份新的物理内存页。 + +更新该进程的页表,使其映射到新复制的物理内存页。 + +将新内存页的权限设置为**可读写**,以便该进程可以继续执行写操作。 + +对于未发起写操作的进程: + +该进程仍然映射到原来的物理内存页。 + +原来的内存页权限仍然是**只读**,直到该进程尝试写入时才会触发类似的写时复制过程。 + +这个过程被称为「写时复制 (Copy On Write)」。 ![](https://img-blog.csdnimg.cn/img_convert/d4cfac545377b54dd035c775603b4936.png) @@ -242,4 +258,4 @@ Redis 提供了三种将 AOF 日志写回硬盘的策略,分别是 Always、Ev 最新的图解文章都在公众号首发,别忘记关注哦!!如果你想加入百人技术交流群,扫码下方二维码回复「加群」。 -![img](https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost3@main/%E5%85%B6%E4%BB%96/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BB%8B%E7%BB%8D.png) \ No newline at end of file +![img](https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost3@main/%E5%85%B6%E4%BB%96/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BB%8B%E7%BB%8D.png)