Linux 內核的五個重要部分
系統調用接口, 進程管理, 內存管理, 虛擬文件系統, 設備驅動程序
systemcall(系統調用):
操作系統在內核里內建的函數
這些函數完成對硬件的訪問和對文件的打開, 讀, 寫, 關閉等操作
這些函數實現了將操作從用戶空間轉換到內核空間
一個已經安裝的(Linux)系統, 所支持的系統調用都可以在 /usr/include/bits/syscall.h 文件裡看到
Linux系統定義了內核模式和用戶模式, 內核模式可以執行一些特權指令和進入用戶模式,
而用戶模式則不能進入內核模式
Linux將程序的運行空間也分為內核空間和用戶空間, 它們分別運行在不同的級別上
系統調用規定用戶進程進入內核空間的具體位置,
在執行系統調用時, 程序運行空間將會從用戶空間轉移到內核空間, 處理完畢後再返回到用戶空間
API 用戶編程接口: 為用戶編程過程提供的各種功能庫函數, 如分配空間, 拷貝字符, 打開文件等
Linux 用戶編程接口(API)遵循 UNIX 中最流行的應用編程界面標準POSIX
一個或多個系統調用會對應到一個具體的應用程序使用的API; 但是, 並非所有的API都需要使用到系統調用
API和系統調用兩者的區別是, 前者只是一個函數定義, 說明如何獲得一個給定的服務, 而後者是通過軟中斷向
內核發出一個明確的要求
系統調用表, 用於系統調用號內核服務函數的映射
Linux 用數組 sys_call_table表示這個表
Linux 規定, 在I386體系中, 處理器的寄存器eax用來傳遞系統調用號
備註
-------------------------------
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,
目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。