tft每日頭條

 > 科技

 > 操作系統fork是如何創建進程的

操作系統fork是如何創建進程的

科技 更新时间:2025-01-19 08:28:06

做落盤,為了保證時點性,最有效的方法就是在一瞬間把當前的進程的内存複制一份新的,對這份新的内存進行持久化,同時老的内存可以繼續接收客戶端的命令。這個想法本身思路是對的,但是存在效率和空間占用問題:

  • 複制内存,直接就是占用了兩塊内存
  • 雖然比複制磁盤快,但是總體還是一個IO操作

那有沒有辦法可以讓這個“内存複制”更快呢?答案是有的,就是利用操作系統fork進程的時候的特性 - “内存一緻”來達到

  • fork一個新的進程,會把原來進程的内存空間完全複制一份
  • 進程彼此之間的内存又是隔離的

操作系統fork是如何創建進程的(利用操作系統fork子進程拷貝當前内存以及寫時複制來做落盤)1

同時Linux還利用了寫時複制(Copy on Write)技術,在fork子進程的時候并沒有立即對内存進行拷貝,僅僅拷貝了一份映射關系,讓他們暫時指向同一個内存空間。而當進程對這塊内存空間有寫操作時,才會真正複制内存,而且是以為單位。

這樣我們就做到了:

  • 利用操作系統fork進程的内存隔離來保證時點性
  • 利用寫時複制來保證效率

又因為在持久化過程中,對内存的寫操作往往很少,大多數都是不變的,這在使用COW的情況,效率會更加高

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved