Linxu核心設計與實現 第5章 系統呼叫

2021-08-14 01:23:46 字數 2494 閱讀 3387

使用者程序與核心互動的介面,使應用程式受限的訪問硬體裝置,提供了建立新程序並與已有程序通訊的機制,也提供了申請作業系統其它資源的能力。應用程式發出請求,核心來滿足這些請求,或者返回乙個錯誤。

(1)    系統呼叫在使用者空間和硬體裝置之間新增了乙個中間層

為使用者空間提供抽象的介面

保證了系統的穩定與安全

(2)    系統呼叫是使用者空間訪問核心的唯一手段。除去異常和陷入外,它是核心唯一的合法入口。

(1)使用者空間通過應用程式設計介面api,而不是直接使用系統呼叫

(2)呼叫流程如下:

(3)    大多數unix系統上,posix定義的api函式和系統呼叫之間有著直接關係。

(4)    c庫:實現了unix系統的主要api,包括標準c庫,和系統呼叫介面。.

(5)    開發重點

(1)通常通過c庫中定義的函式來訪問系統呼叫(syscall)。

(2)long型的返回值來表示成功還是失敗。負數失敗,0成功。出現錯誤的時候,c庫把錯誤碼寫入全域性變數,通過呼叫perror()庫函式,翻譯成使用者理解的錯誤字串。

(3)系統呼叫有乙個明確的操作

(4)getpid()系統呼叫

syscall_define0(getpid)

syscall_define0:是乙個巨集,定義無參系統呼叫。展開後

asmlinkage long sys_getpid(void)

asmlinkage:限定詞,編譯指令,通知編譯器僅從棧中提取該函式的引數。所有系統呼叫都需要該限定詞。

返回值是long型,保證32/64相容。

(1)linux中,每個系統呼叫,都被賦予了乙個獨一無二系統呼叫號。使用者空間程序執行乙個系統呼叫的時候,這個系統呼叫號就是來指定執行哪個系統呼叫,程序不會提及系統呼叫的名字。

(2)系統呼叫號一旦分配不能隨意改變。

linux系統呼叫執行快,核心上下文切換時間短。系統呼叫處理程式很簡潔。

僅僅陷入核心空間是不夠的,必須把系統呼叫號一併傳給核心。x86平台,陷入核心之前,把系統呼叫號存入到eax暫存器中去,系統呼叫程式一旦執行則從eax中得到資料。

除了傳遞系統呼叫號,大部分系統呼叫還需要傳遞引數,發生陷入的時候需要把這些引數從使用者空間傳遞到核心空間,x86上,是像系統呼叫號一樣,將這些引數存到暫存器中,ebx、ecx、edx、esi、edi按照順序,存放前五個引數。

介面力求簡潔,引數盡可能少。力求穩定,不做改動。多為未來擴充套件考慮。

(1)系統呼叫在核心空間執行,系統呼叫需要檢查所有引數的合法性。如檔案描述符是否有效,pid是否有效,指標是否有效。

(2)在接受乙個使用者空間指標前,核心必須保證:

(4)是否具有合法許可權。reboot系統呼叫,只允許系統管理員來執行。

(1)核心在執行系統呼叫的時候處於程序上下文,current指標指向當前任務。

(2)程序上下文中,核心可以休眠,也可以被搶占。

(3)系統呼叫結束的時候,控制權仍然在system_call()中,它最終負責切換到使用者空間,並讓使用者程式繼續執行下去。

(1)通常,系統呼叫靠c庫支援,使用者程式通過包含標準標頭檔案和c庫連線。

(2)linux提供了一組巨集。用於直接對系統呼叫訪問。_syscalln()。n為0到6.

(1)系統呼叫到底是什麼

(2)linux核心如何實現系統呼叫

(3)執行系統呼叫的連鎖反應:

陷入核心-傳遞系統呼叫號和引數-執行系統呼叫函式-返回值帶回使用者空間。

(4)如何增加乙個新的系統呼叫。

(5)實現新增系統呼叫的優缺點。

Linxu核心設計與實現 第2章 從核心出發

主要內容 linux核心基本知識 www.kernel.org git clone git git pull 核心發布 patch p1 patch x.y.z 目錄說明 arch 特定體系結構的 block 塊裝置i o層 crypo 加密api documentation 核心原始碼文件 dri...

Linxu核心設計與實現 第4章 程序排程

主要內容 1 程序排程 是確保核心穩定工作的乙個核心子系統。在可執行態程序之間分配有限的處理器資源的核心子系統。2 作用 程序排程決定將哪個程序投入執行,何時執行,執行多長時間。3 效果 通過合理的排程,系統資源才能最大限度的發揮,多程序才會有併發執行的效果。4 限制 只要有可執行的程序,那麼總會有...

第5章 Linxu磁碟

5 1 linux中的磁碟磁碟分割槽 將硬碟劃分成多個邏輯儲存單元。邏輯儲存單元 分割槽 分割槽的益處 1 限制應用或使用者的可用空間 2 允許同一塊硬碟安裝不同的作業系統 3 可以給虛擬記憶體乙個單獨的分割槽 4 提高硬碟的使用效能 mbr main boot record 主引導記錄 告訴硬碟如...