作業系統的服務
- 最頂層是user interfaces
- 主要是gui,batch,command line
- 給使用者使用作業系統
- 第二層是system calls(系統呼叫)
- 給程式設計師來使用,呼叫一些介面
- 第三層是service
- program execution:應用程式
- I/O operations:一些io裝置
- file systems:以檔案方式去儲存,儲存到儲存裝置中
- communication:程式之間的通訊
- resource allocation:資源分配,經過作業系統
- accounting:記賬
- error detection:
- protection and security:防止惡意程式碼
為使用者
- Almost all operating system have a user interface(UI),It offers a way for users to interface(互動) with OS.
- CLI(Command Line Interface)
- command interpreter(shell)
- interpreter(直譯器)
- GUI(Graphic User Interface)
- A user friendly graphical user interface.
- Batch
- It is file which contains commands(命令) and directives(指示).
- 一些常用命令:cd ls mkdir touch
- 使用ls -l,可以看到屬性,是否為檔案,drwxr-xr-x(d表示這個是一個檔案)
- batch檔案
- It is file which contains commands(命令) and directives(指示).
- CLI(Command Line Interface)
為程式設計師
- 系統呼叫(system calls)提供了訪問和使用作業系統所提供的服務介面
- 系統呼叫的實現程式碼是作業系統級的
- 這個介面通常是面向程式設計師的
- API(Application Programming Interface):指名了引數和返回值的一組函式。
- 應用程式App的開發人員透過透過API間接訪問了系統呼叫
- api不是系統呼叫。
- 雙重模式 :
- 計算機系統上有一個專門的硬體
- 使用者模式(user mode):執行使用者程式碼
- 核心模式(kernel mode):執行作業系統程式碼
- 在不同模式上,可以執行的程式碼許可權不同,特權指令,確保作業系統可以正常執行。
- 系統呼叫執行在kernel mode
- 應用程式執行在user mode下
- 系統呼叫實現機制
- 每一個系統呼叫都有一個唯一的數學編號,被稱為系統呼叫號
- 使用者程式碼呼叫API時,API中會向系統呼叫介面指明其所要用的系統呼叫號,作業系統核心中會維護一張索引表,依據這個呼叫號可以檢索到系統呼叫程式碼在核心中的位置。
作業系統的構建方式
- 作業系統的設計思路
- 設計目標
- 使用者目標(user goal)
- 系統目標(system goal)
- 機制與策略的分離
- 機制(mechanism):如何做
- 策略(policy):做什麼
- 透過分離機制和策略,系統設計者可以獨立地修改策略而不需要重新設計機制,這樣可以在不同的環境和需求下複用相同的機制。這種分離使得系統更加模組化,易於理解和維護。同時,這也允許在不同的實現中應用相同的策略,或者在相同的框架下實驗不同的策略。