系統程式設計 筆記6

2021-10-05 23:12:41 字數 974 閱讀 4900

程序:活的,執行起來的程式,占用記憶體,cpu等資源。–戲

程式:死的,只占用磁碟空間 –劇本

併發:在作業系統中,乙個時間段中有多個程序都處於已啟動執行到執行完畢之間的狀態。但,任意時刻點上仍只有乙個程序在執行。

對於在核心空間裡的程序,它們通過mmu對映到磁碟空間是在同乙個區域,因為pcb本質是乙個結構體,在核心中有充足的空間來同時儲存多個結構體。因為這個特性才有了程序間的通訊,如果沒有對映到同乙個空間那就沒有了程序間的通訊。

ps aux檢視程序資訊

程序狀態:初始態,就緒態,執行態,掛起態,終止態其中初始態可以不說

pcb程序控制塊包括:

*程序狀態

*程序id

*檔案描述符

*程序工作目錄位置

*訊號先關資源資訊

*使用者id和組id

fork函式:

執行這個函式後會出現兩個程序,乙個父乙個子,之後子程序最後那個的fork會返回乙個0,父程序中的fork會返回子程序的id。失敗返回的是-1,子程序不會沒有返回值因為沒有被建立出來。

建立乙個子程序:

pid_t fork(void);

pid_t getpid(void);

pid_t getppid(void);

getuid函式:獲取當前程序實際使用者id uid_t getuid(void);

獲取當前程序有效使用者id uid_t geteuid(void);

getgid函式:類似於getuid這個是組的。

—————————————程序共享—————————————

父子程序相同處:全域性變數,.data,.text,棧,堆,環境變數,使用者id,宿主目錄,程序工作目錄,訊號處理方式。

父子程序不同處:程序id,fork返回值,父程序id,程序執行時間,鬧鐘(定時器),未決訊號集。

父子程序遵循讀時共享寫時複製原則。

父子程序不共享全域性變數,共享檔案描述符,mmap建立的對映區(重點)

系統程式設計 筆記5

link unlink函式 在inode之外有個目錄項dentry,這並不多餘,這主要是為了實現檔案共享,linux允許多個目錄項共享同乙個檔案,link函式可以為已經存在的檔案建立目錄項 硬鏈結 int link const char oldpath,const char newpath 成功返回...

系統程式設計 學習筆記 01

是指編譯好的二進位制檔案,在磁碟上,不占用系統資源 cpu 記憶體 開啟的檔案 裝置 鎖 是乙個抽象的概念,與作業系統原理聯絡緊密。程序是活躍的程式,占用系統資源。在記憶體中執行。同乙個程式也可以載入為不同的程序 彼此之間互不影響 環境變數,是指在作業系統中用來指定作業系統執行環境的一些引數。通常具...

系統程式設計手冊學習筆記

1.庫函式 設計庫函式是為了提供比底層系統呼叫更為方便的呼叫介面 呼叫庫函式,有的不會執行任何系統呼叫 比如字串操作函式 有的則是構建於系統呼叫層之上的 比如fopen 是利用系統呼叫open 來執行開啟檔案的實際操作 c語言的函式庫有多個版本,gnu c是其中乙個版本,簡稱glibc,是linux...