作業系統設計/導論
作業系統,通常縮寫為OS,是直接與平臺硬體互動併為使用者應用程式提供執行環境的基礎軟體。
作業系統必須提供一些功能。
現代計算機的硬體種類繁多,無法透過硬編碼來控制機制。在過去,每個應用程式都需要提供自己的驅動程式才能使用硬體。由於當今硬體的多樣性,大多數作業系統將實現細節從應用程式中抽象出來,使用硬體。因此,作業系統需要一種機制來可靠地處理底層平臺的各種需求。這是透過驅動程式機制提供的,透過這種機制,作業系統可以控制硬體。
此外,如果沒有作業系統來管理競爭應用程式之間共享資源,多工處理將是不切實際的,甚至是不可能的。每個應用程式都必須自己訪問和控制資源,同時偶爾自願放棄對硬體的控制(如過去常見的那樣,稱為協作式多工處理)。這種情況在安全性 and 穩定性方面有明顯的影響,因為通常不能信任第三方應用程式直接訪問硬體。因此,作業系統必須排程應用程式程序(稱為搶佔式排程)來訪問處理器,根據一種演算法,該演算法可能受多種因素的影響。
應用程式需要一種安全 and 簡單的訪問硬體的方式。無論是分配記憶體、將檔案寫入永久儲存、播放聲音檔案還是顯示電影,應用程式最終都需要呼叫作業系統提供的函式。這是透過 API 或應用程式程式設計介面提供的。一個完善的 API 將防止程式碼重複,從而使應用程式開發人員無需費心就能實現所需的行為。
大多數作業系統都需要某種方式讓使用者在日常生活中操作它們。介面通常應該對高階使用者來說效率高,同時還要為技術水平較低的使用者提供幫助。介面可以是 圖形化 的或 基於文字的。
作業系統通常由幾個部分組成。主要部分包括
- 核心,它是 OS 的“核心”。
- 庫,它為應用程式提供一系列函式。
- 驅動程式,用於與外部硬體互動 and 控制。
此外,作業系統還將附帶
- 引導機制,它將核心載入到記憶體中。
- 命令直譯器或“shell”,它接收使用者的輸入。
OS 還可以實現檔案系統來儲存資料。
一些 OS 每次只允許執行一個程式,但許多新的 OS 允許多個應用程式幾乎同時執行。此類作業系統稱為“多工作業系統”。有些 OS 非常龐大,依賴於使用者輸入,但其他 OS 非常小,預計在沒有人工干預的情況下完成工作。第一種型別是桌面作業系統,第二種型別是“即時”作業系統。