第五章 系統調用

這一章開始學習系統調用的有關內容,在linux內核分析中,系統調用是繞不去的一個坎。下面就是我這周的讀書感覺。linux

一.幾個重要的基本概念程序員

API系統調用在用戶空間和硬件設備上添加了一箇中間層(應用編程接口API),這個層的主要做用以下:1首先爲用戶空間提供了一種硬件的抽象接口。2.保證系統的穩定和安全3.系統調用是用戶訪問內核的惟一手段:除異常和陷入外編程

系統調用號:每一個系統被賦予了一個系統調用號,一旦分配就不能有變動,這個表被存儲在arch/i386/kernel/syscall.64.c當中。安全

系統調用處理程序:經過軟中斷的方式,引起一個異常來促使系統切換到內核態處理應用程序函數

二.系統調用的幾個重要思想學習

Unix的接口有一句格言:「提供機制而不是策略。」操作系統

三.系統調用的具體過程:3d

有了用戶態和內核態的基本知識瞭解以後,咱們能夠以系統調用爲例,看一看中斷具體是怎麼執行的blog

系統調用的意義:接口

操做系統爲用戶態進程與硬件設備進行交互提供了一組接口——系統調用

    把用戶從底層的硬件編程中解放了出來

    極大地提升了系統的安全性

    使用戶程序具備可移植性:用戶程序與具體硬件已經被抽象接口所替代

操做系統提供的API和系統調用的關係

API(應用程序編程接口)和系統調用:

    應用編程接口和系統調用是不一樣的:

    1.API只是一個函數定義

    2.系統調用經過軟中斷向內核發出了一個明確的請求

    Libc庫定義的一些API引用了封裝例成,惟一目的就是發佈系統調用

    1.通常每一個系統調用對應一個封裝例程

    2.庫函數再用這些封裝例程定義出給用戶的API(把系統調用封裝成不少歌方便程序員使用的函數)

      不是每一個API都對應一個特定的系統調用)

           API可能直接提供用戶態的服務 如:一些數學函數

           1.一個單獨的API可能調用幾個系統調用

           2.不一樣的API可能調用了同一個系統調用

       返回值

           大部分封裝例程返回一個整數,其值的含義依賴於相應的系統調用

           -1在多數狀況下表示內核不能知足進程的請求

           Libc中定義的errno變量包含特定的出錯碼

系統調用的工做過程:

相關文章
相關標籤/搜索