標籤:style blog http os 使用 strong 2014 問題 sp
“電腦科學領域的任何問題都可以通過增加一個間接的中介層來解決”
這句話幾乎概括了電腦系統軟體體繫結構的設計要點,整個體繫結構從上到下都是按照嚴格的階層設計的。不僅是電腦系統軟體整個體系是這樣的,體系裡面的每個組件比如作業系統本身,很多應用程式、軟體系統甚至很多硬體結構都是按照這種層次的結構組織和設計的。系統軟體體繫結構中,各種軟體的位置。
每個層次之間都要相互連信,既然需要通訊就必須有一個通訊協定,我們一般將其稱為介面(Interface),介面的下面那層是借口的提供者,由它定義介面;介面的上面那層是介面的使用者,它使用介面來實現所需要的功能。在層次體系中,介面是被精心設計過的,盡量保持穩定不變,那麼理論上層次之間只要遵循這個介面,任何一個層都可以被修改或是替換。除了硬體和應用程式,其他都是所謂的中介層,每個中介層都是對它下面的那層的封裝和擴充。使得應用程式和硬體之間保持相對的獨立,比如硬體和作業系統都在日新月異的發展,但是最初為80386晶片和DOS系統設計的軟體在最新的多核處理器Windows Vista下還是能夠啟動並執行,這方面硬體和作業系統本身保持了向後相容性,另一方面不得不歸功於這種階層的設計方式。
最近流行的虛擬機器技術更是在硬體和作業系統之間增加了一層虛擬層,使得一個電腦上可以同時運行多個作業系統。這也是階層帶來的好處,在儘可能少改變甚至不改變其他層的情況下,新增加一個層次就可以提供前所未有的功能。
我們的軟體體系中,位於最上層的是應用程式,比如我們平時用的網路瀏覽器、Email用戶端、多媒體播放器、圖片瀏覽器等。從整個階層上來看,開發工具與應用程式是屬於同一個層次的,因為它們都是用一個介面,那就是作業系統API(API)。應用程式介面的提供者是運行庫,什麼樣的運行庫提供什麼樣的API,比如Linux下的Glibc庫提供的POSIX的API;Windows的運行庫提供的Windows API。
運行庫使用作業系統提供的系統調用介面(System call Interface),系統調用介面在實現中往往以軟體中斷的方式提供,比如Linux使用0x80號中斷作為系統調用介面,Windows使用0x2E號中斷作為系統調用介面。
作業系統核心層對硬體層來是硬體介面的使用者,而硬體是介面的定義者,硬體的介面定義決定了作業系統核心,具體來講就是驅動程式如何操作硬體,如何與硬體進行通訊。這種介面往往叫做硬體規格,硬體的廠商提供硬體規格,作業系統和驅動程式的開發人員通過閱讀硬體規格文檔所規定的各種硬體編程介面標準來編寫作業系統和驅動程式。
電腦軟體的體繫結構