fork實現和拓展

2021-09-29 01:51:46 字數 936 閱讀 5868

linux作業系統下常引用的標頭檔案有:

fork() 複製程序

1.printf方法

(1) 緩衝區放滿了

(2) 程式結束了

(3) 強制重新整理緩衝區 「\n」 ,fflush(stdout)

2.main函式的引數

傳k參,直接./main k就行了

fork()最早時期採用,子程序全部複製父程序,目前採用相同的部分不複製,只複製並修改不同的部分(這些部分儲存在頁中,也就是說頁不同就要將不同的頁複製出來乙份進行修改,只是**段,資源而這是分開的。稱之為寫值拷貝)

並行是特殊的併發,併發:一段時間內,多個程式同時被執行。

記憶體洩漏?

在程式執行的過程中,動態申請了空間,不用了,也不free,就會發生記憶體洩漏。

但是,程式執行結束後,系統就把所有資源**了。

申請1g能不能成功?

看記憶體有沒有,沒有就加上虛擬記憶體,才有可能

虛擬記憶體:在硬碟上劃分一塊區域來用作記憶體,稱之為虛擬記憶體。(虛擬記憶體沒有記憶體快)

先malloc後,再fork,子程序也有乙份父程序在堆區申請的空間。

康拓展開和逆康拓展開

康托展開就是一種特殊的雜湊函式 把乙個整數x展開成如下形式 x a n n a n 1 n 1 a 2 2 a 1 1 其中,a為整數,並且0 a表示1,2,3,n的排列如 按從小到大排列一共6種,就是123 132 213 231 312 321 代表的數字 1 2 3 4 5 6 也就是把10進...

康拓展開和逆康拓展開

康拓展開模板題 複雜度o n 2 的會tle 看資料就知道了 雖然某題解說可以,不知道是不是後期加強了資料 然而我還是寫了o n 2 的 include typedef long long ll ll f 1000010 const ll mod 998244353 int a 1000010 b ...

fork建立程序過程(底層實現) 和 寫實拷貝

現在我們來總結一下fork的整個處理流程。從c語言中的函式開始,它在glibc庫中會被轉換為int0x80加呼叫號的形式,觸發中斷。該中斷在系統初始化過程中註冊,它的處理函式是system call,這個函式在system call.s檔案中,在這裡面它首先壓棧一些引數,然後會根據呼叫號呼叫sys ...