有趣生活

当前位置:首页>科技>操作系统fork是如何创建进程的利用操作系统fork子进程拷贝当前内存以及写时复制来做落盘

操作系统fork是如何创建进程的利用操作系统fork子进程拷贝当前内存以及写时复制来做落盘

发布时间:2026-07-21阅读(1)

导读做落盘,为了保证时点性,最有效的方法就是在一瞬间把当前的进程的内存复制一份新的,对这份新的内存进行持久化,同时老的内存可以继续接收客户端的命令。这个想法本身....

做落盘,为了保证时点性,最有效的方法就是在一瞬间把当前的进程的内存复制一份新的,对这份新的内存进行持久化,同时老的内存可以继续接收客户端的命令。这个想法本身思路是对的,但是存在效率和空间占用问题:

  • 复制内存,直接就是占用了两块内存
  • 虽然比复制磁盘快,但是总体还是一个IO操作

那有没有办法可以让这个“内存复制”更快呢?答案是有的,就是利用操作系统fork进程的时候的特性 - “内存一致”来达到

  • fork一个新的进程,会把原来进程的内存空间完全复制一份
  • 进程彼此之间的内存又是隔离的

同时Linux还利用了写时复制(Copy on Write)技术,在fork子进程的时候并没有立即对内存进行拷贝,仅仅拷贝了一份映射关系,让他们暂时指向同一个内存空间。而当进程对这块内存空间有写操作时,才会真正复制内存,而且是以为单位。

这样我们就做到了:

  • 利用操作系统fork进程的内存隔离来保证时点性
  • 利用写时复制来保证效率

又因为在持久化过程中,对内存的写操作往往很少,大多数都是不变的,这在使用COW的情况,效率会更加高

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图