申請一個新進程的步驟是什么?
1.申請空白PCB
2.為新進程分配資源,子進程復(fù)制父親進程的堆,棧等用戶空間的信息。
3.初始化PCB,使用父親進程的 PCB 來初始化,除了 pid等特殊信息外,幾乎所有的信息都是一樣的。
4.將新進程插入就緒隊列。
在為新進程分配資源時,運用了寫時復(fù)制技術(shù)。
寫時復(fù)制技術(shù):
內(nèi)核只為新生成的子進程創(chuàng)建虛擬空間結(jié)構(gòu),它們復(fù)制于父進程的虛擬空間結(jié)構(gòu),但是不為這些段分配物理內(nèi)存,它們共享父進程的物理空間,當父子進程中有更改相應(yīng)的段的行為發(fā)生時,再為子進程相應(yīng)的段分配物理空間。
寫時復(fù)制技術(shù)大大降低了進程對資源的浪費。