fork函数与execve函数
fork函數(shù)可以創(chuàng)建一個帶有自己獨立虛擬地址空間的新進(jìn)程。
當(dāng)fork函數(shù)被當(dāng)前進(jìn)程調(diào)用的時候,內(nèi)核為新進(jìn)程創(chuàng)建各種數(shù)據(jù)結(jié)構(gòu),并且分配它一個唯一的PID。為了給這個新進(jìn)程創(chuàng)建虛擬內(nèi)存。它創(chuàng)建了當(dāng)前進(jìn)程的mm_struct,區(qū)域結(jié)構(gòu)和頁表的原樣副本。它將兩個進(jìn)程的每個頁面都標(biāo)記成只讀,并且將兩個進(jìn)程中的每個區(qū)域接哦古都標(biāo)記成私有的寫時復(fù)制。
當(dāng)fork在新進(jìn)程返回的時候,新進(jìn)程現(xiàn)在的虛擬內(nèi)存剛好和調(diào)用的fork時存在的虛擬內(nèi)存相同。當(dāng)這兩個進(jìn)程中的任意一個后來進(jìn)行寫操作,寫時復(fù)制機制就會創(chuàng)建新的頁面,因此,也就為每個進(jìn)程保持了私有地址空間的抽象概念。
execve函數(shù)在虛擬內(nèi)存和內(nèi)存映射中將程序加載到內(nèi)存的過程中扮演了關(guān)鍵的角色。
假設(shè)當(dāng)前運行的程序執(zhí)行了execve調(diào)用,就會執(zhí)行刪除已存在的用戶區(qū)域,映射私有區(qū)域,映射共享區(qū)域,設(shè)置程序計數(shù)器。
總結(jié)
以上是生活随笔為你收集整理的fork函数与execve函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 考勤打卡记录数据库表结构_考勤系统数据表
- 下一篇: 世界上最难的数独题