
介紹與基本概念
|
3
空間之系統層級的程式設計;也就是,核心之上的每一件事(儘管對核心內部的瞭解對
本書的閱讀有額外的幫助)。裝置驅動程式的撰寫是一個大而廣泛的題目,最好是以專
書來探討。
何謂系統層級的介面,在 Linux 上要如何撰寫系統層級的應用程式?核心和 C 程式庫所
提供的是哪些東西?要如何撰寫出理想的程式,Linux 提供了哪些工具?相較於其他的
Unix 變體,Linux 提供了哪些值得注意的系統呼叫?這一切是如何運作的?這些問題都
是本書所要探討的中心議題。
系統程式設計的基石
Linux 的系統程式設計有三個基石:系統呼叫、C 程式庫以及 C 編譯器。這每一個都值
得加以介紹。
系統呼叫
系統程式設計從
系統呼叫
(
system calls
)開始。系統呼叫(常簡寫為
syscalls
),就是從
用戶空間—你的文字編輯器、遊戲程式…等等—進行函式的調用,藉此進入核心(系統
內部的基礎元件),以便向作業系統請求特定的服務或資源。你熟悉的
read()
和
write()
函式以及不常見到的
get_thread_area()
和
set_tid_address()
函式全都是系統呼叫。
Linux 所實作的系統呼叫遠少於多數其他作業系統的核心。舉例來說,Linux 之 x86-64
架構的系統呼叫大約有 300 個,而 Microsoft Windows 之上據說有數千個。就 Linux 核
心而言,每種機器架構(例如 Alpha、x86-64 或 PowerPC)都會實作可供自己使用的系
統呼叫。因此,可在某種架構上使用的系統呼叫 ...