《Linux核心設計與實現》第5章讀書筆記

2022-08-30 15:18:16 字數 859 閱讀 6590

第五章 系統呼叫

一、系統呼叫概述

系統呼叫在linux中稱為syscall,返回的值是long型變數;如果出錯,c庫會將錯誤**寫入errno全域性變數(通過呼叫perror()函式可以把該變數翻譯成使用者可以理解的錯誤**);為了保證32和64位系統相容,系統呼叫在使用者空間和核心空間有不同的返回值型別:在使用者空間為int,在核心空間為long。如果乙個系統呼叫被刪除或者不可用,sysnisyscall()函式將會占用對應的系統呼叫號負責「填補空缺」,其只返回-enosys。

二、系統呼叫作用

系統呼叫在使用者空間和硬體裝置之間提供了乙個中間層:為使用者空間提供了乙個硬體抽象介面;系統呼叫保證了系統的穩定和安全(防止應用程式不正確地使用硬體裝置);實現多工和虛擬記憶體

三、系統呼叫號

每個系統被賦予乙個系統呼叫號,當使用者空間的程序執行乙個系統呼叫的時候,這個呼叫號就指明執行哪個系統呼叫,程序不會提及系統呼叫的名稱,系統呼叫號一旦分配不能再有改變,乙個系統呼叫被刪除,也不能被**利用。

四、系統呼叫處理程式

使用者程式無法直接執行核心**,它們也不能直接呼叫核心空間中的**;通知核心的機制是靠軟中斷實現的:通過引發乙個一場來促使系統切換到核心態去執行處理程式,此時的異常處理程式實際上就是系統呼叫處理程式——int $0x80所指向的128號異常處理程式就是系統呼叫處理程式;在陷入核心態之前,使用者空間就把相應的系統呼叫號傳給eax;這樣系統呼叫處理程式一旦執行,就可以從eax中得到資料。

五、系統呼叫實現

明確用途,驗證引數,繫結系統呼叫,定義形式。

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

使用者程序與核心互動的介面,使應用程式受限的訪問硬體裝置,提供了建立新程序並與已有程序通訊的機制,也提供了申請作業系統其它資源的能力。應用程式發出請求,核心來滿足這些請求,或者返回乙個錯誤。1 系統呼叫在使用者空間和硬體裝置之間新增了乙個中間層 為使用者空間提供抽象的介面 保證了系統的穩定與安全 2...

《Linux核心設計與實現》 第4章(程序排程)

排程程式 在可執行態程序之間分配有限處理器時間資源的核心子系統 多工作業系統 同時併發地互動執行多個程序的作業系統 linux提供了搶占式的多工模式,對程序強制的掛起動作即搶占 程序可分為 i o消耗型 和 處理器消耗型 i o消耗型指程序的大多數時間用來提交i o請求或等待i o請求 處理器消費型...

《Linux核心設計與實現》第3章讀書筆記

第三章 程序管理 一 程序 1.程序就是處於執行期的程式,但並不侷限於可執行 實際上,程序是正在執行的程式 的實時結果。2.執行執行緒是在程序中活動的物件 3.在現代作業系統中,程序提供兩種虛擬機制 虛擬處理器和虛擬記憶體。4.程序是呼叫fork 系統的結果,最後程式通過exit 系統呼叫退出執行。...