系統呼叫在使用者空間程序(應用程式)和硬體裝置之間新增了乙個中間層,這樣做的好處在於將使用者空間程序和硬體裝置進行隔離。linux系統有一套標準的系統呼叫介面,然後硬體驅動會去實現這一系列標準的系統呼叫介面,而使用者空間程序只需去呼叫這些標準系統呼叫介面來操作硬體,這樣寫出的應用程式就是易於移植的。需要注意的是,系統呼叫是使用者空間訪問核心的唯一手段。
這裡需要提出的是,一般應用程式不是直接通過系統呼叫來程式設計的,是通過呼叫使用者空間實現的介面來進行程式設計,而使用者空間實現的介面又通過系統呼叫來實現對硬體的操作。如下圖所示:
這裡就可以解釋為什麼在使用者空間呼叫open、read、write等介面時所傳遞的引數和linux驅動程式中實現的open等一系列介面的引數不一致。
linux系統支援相容posix標準庫,也就是上圖中間框圖部分。所以可知,核心只跟系統呼叫打交道,它不會關心c庫以及應用程式是怎樣去使用系統呼叫的。所以系統呼叫只是乙個操作硬體實現特定目的的介面,它只提供給使用者空間操作硬體的方法。要訪問linux的系統呼叫,通常通過c庫中定義的函式呼叫來進行。
linux 系統呼叫
使用者應用可以通過兩種方式使用系統呼叫。第一種方式是通過c庫函式,包括系統呼叫在c庫中的封裝函式和其他普通函式。圖5.2 使用系統呼叫的兩種方式 第二種方式是使用 syscall巨集。2.6.18版本之前的核心,在include asm i386 unistd.h檔案中定義有7個 syscall巨集...
Linux系統呼叫
一 實驗目的和要求 1.學習linux核心的配置和編譯 2.深入理解linux系統呼叫 3.理解arm和x86的cpu模式 系統模式 使用者模式 的不同 4.掌握核心模組的編寫方法。二 實驗器材 1.linux實驗板卡一塊 2.5v 1a電源乙個 3.microusb線一根 4.macos一台 5....
Linux系統呼叫
linux系統呼叫 系統呼叫 system call 是使用者空間訪問核心的唯一手段,除異常和陷入外,他們是核心唯一的合法入口。通常情況下應用程式是通過應用程式設計介面api來訪問函式,而不是直接使用系統呼叫來程式設計。作業系統通常是通過中斷從使用者態切換到核心態。中斷就是乙個硬體或軟體請求,要求c...