Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chapter 2: Operating-System Structures (作業系統的架構 (Microkernels:star: (優點…
Chapter 2: Operating-System
Structures
作業系統服務
定義 : OS提供一組對user有幫助的功能
項目
User interface
幾乎每個作業系統都有一組user interface(
UI
:star:)
Command-Line (CLI), Graphics User Interface (GUI), touchscreen, Batch
:star:有所不同
Program execution
I/O operations
File-system manipulation
Communications
Error detection
Resource allocation
Logging
Protection and security
使用者與作業系統介面
CLI或
command interpreter
(命令解譯器):star:
允許直接輸入指令
Sometimes multiple flavors implemented –
shells
:star::star::star:
兩種介面
User-friendly
desktop
:star: metaphor interface
鍵盤、滑鼠、螢幕
icon
:star: : 表示檔案、程式、action
directory =
folder
:star
CLI + GUI介面 : 許多系統都這樣
System Calls
說明
OS提供的programming interface
:star:
大多透過
Application Programming Interface (API)
:star:進行存取,而非直接呼叫使用
實作
System-call interface
:star:
有一個表格紀錄什麼數字代表什麼system call(每個數字連接到一個system call)
調用OS kernel中的system call,且return狀態、value
caller不需要知道system call是怎麼被實作的,只要會用就好
system call的參數傳遞
:star::star::star::star::star: 考問答 有哪三個 優缺點??
三種方式
registers
:star:
將參數存在暫存器當中
優點 : 簡單、快速
缺點 : 不是核用於參數數目多時,因為暫存器數目有限
memory
:star:
將參數存在memory中的某個blockc或表格,表格起始位置 -> reg -> OS
優點 : 適合用於參數數目多時、參數數目與長度不受限
缺點 : 速度較慢
stack
:star:
利用system stack保存參數。
push
:star:(保存)、
pop
:star:(取出)
優點 : 參數數目與長度不受限
缺點 : 速度較慢(?
C librry call v.s System callstar::star::star::star::star::star:
fread屬於C函數
優點 : 讀的data量小時,速度較快(因為C函數本身具有buffer,可以呼叫system call的次數↓)
system call
優點 : 適合資料量較大時,速度較快
System Services
系統程式
為了提供放方便的開發、執行環境,因此可分為 ↓
File manipulation
Status information sometimes stored in a file (
registry
:star:)
Programming language support
Program loading and execution
Communications
Background services (
services, subsystems, daemons
:star:)
Application programs
多數使用者眼中的OS是由系統程式定義,而非system calls
系統服務提供了更好的程式執行、開發環境
Linkers and Loaders
流程
將source code編譯成可載入physical memory location的
relocatable object file
:star:
relocatable object file + libraries 透過
linker
=> 合成 binary
executable
:star: file
loader
:star:將執行檔載入到memory中
進行
Relocation
:star:(調整目的程式,以便在不同的位址上,可以重新載入)
現今系統
不再將library連結到執行檔中了
改採
dynamically linked libraries(DLLs)
:star:的方式
有用到的才動態載入,且只需載入一次,大家共同使用
Why Applications Are Operating-System Specific
問題
A : 因為每個OS的system call都不一樣
Q : 為何應用程式只能在特定OS運行?
如何跨平台?
直譯 : 使用多數作業系統都有直譯器的語言(e.g.像Python, Rubys那種)
V.M : 使用有virtual machine的語言 (e.g.Jave)
標準C : 每個OS都可以跑
Application Binary Interface (ABI)
:star:
架構上等同API
描述應用程式與OS或其他應用程式之間的
低級
介面
API v.s ABI :star::star::star::star::star:
API : 給
programmer
用的。 可用於使用應用程式或函式庫的公共變數、函式
ABI : 給
compiler
用的。 決定如何傳遞參數、回傳值要放在哪裡
作業系統的設計與實作
設計
設計目標
使用者 : 簡單好用、安全、快
系統 : 易設計實作、維護
將Mechanism與Policy分開考量,有助於系統彈性↑
Policy
:star: : 要完成什麼工作(變動頻率
小
)
Mechanism
:star: : 如何完成工作(變動頻率
大
)
實作
發展
早期 : OS是用組合語言寫的
現代 : 混用多種高階語言(容易debug、可攜度高)
使用高階語言較容易
port
:star:(移植)到其他硬體,但會使速度變慢
作業系統的架構
Monolithic Structure
:star:
例子 : 傳統UNIX(受到硬體功能的限制)
分成兩部分
Systems programs
Kernel : system call interface以下,physical hardware以上都是kernel
特點
kernel超肥但很強大,裡面超多東西,什麼東西都寫成system call
優點 : 速度快、效率好
缺點 : 實作難、不易擴充
Layered Approach
:star:
說明
把OS切成好幾層,一層疊在一層上
現代常用,但通常不會太多層
優點 : 可單獨修改一個元件,其他地方不須更動
缺點 : 效能差,user program須通過好幾層才可以到達OS服務
Microkernels
:star:
說明 : 把一些不需要的元件從kernel移除,搬去user level
例子 :
Mach
:star:、Mac OS X kernel (
Darwin
:star:)
message passing
:star:
uesr modules間溝通的主要方式
client program不會直接與servers溝通,而是透過
message passing
間接溝通
優點
易擴充(新東西加到user space就好,不必動到kernel)
易移植
安全、可靠度提升(kernel裡的程式碼變少)
缺點 : user跟kernel之間的溝通成本增加,效能↓
Modules
:star:
loadable kernel modules (LKMs)
:star: : 有一個核心元件集合,可透過
modules
連結到其他服務
有點類似layer單卻更彈性 (e.g. Linux, Solaris)
Hybrid Systems
:star:
現在的OS大多都是混合型的
Building and Booting an Operating System
Operating-System Debugging
Profiling
:star: : 定期紀錄指令指標,以統計趨勢
Kernighan's Law
:star::star::star: : gebug的難度是寫程式的兩倍
Performance Tuning
:star: : 移除bottleneck,使效能提升
Tracing
:star: : 收集特定事件的data (e.g.系統調用的步驟)