基礎
簡介
OS是管理 hardware 的 program
並且提供Application program的基礎,達到中介(intermediray) 使用者 與 電腦硬體
-
如上圖,分層可以分為
User
System/Application program (文字處理器、編譯器、瀏覽器 …)
OS
Hardware (* IO devices 比如麥克風、音響、螢幕、鍵盤 ….) -
比如打開一個word要編輯文件,word會和要disc的資料,並且輸出在螢幕上,改動後要存回disc , 這些都會用到Hardware。
而OS,可以提供一個泛化的接口,避免我們需要為每一個任務寫一種source code -
User可以簡單、抽象化的打開、使用應用程式,調用硬體會交給OS (比如要求資料、分配記憶體)
OS的目標與功能
目標: 追求方便 與 效率
比如windows偏重方便,linux偏重效率
功能:
- User 與 hardware 的中介
- 分配資源 (allocation of resources)
- 管理記憶體、安全 …
電腦硬體架構
理解OS之前,可以先了解電腦的硬體架構
現代的泛用(general-purpose)電腦由一或多個CPU、 device controller ,bus , shared memory 所組成
其中bus會連接CPU、device controller 到shared memory
重要名詞
- Bootstrap program :
在開機時最一開始被執行的程式,被儲存於ROM中
必須要load OS 與執行OS系統
需要載入OS kernel進入memory - Interrupt :
Hardware 與 software 偵測到事件時,會傳送給OS的訊號
(Hardware 會由bus傳送訊號)
當CPU接受interrupt, 會終止手邊的工作,跳到handler的記憶體位址 - system call : (參考 unix system call) software向OS kernel傳送interrupt,要求更高權限運行的服務
I/O structure
如上述,現代電腦架構由common bus 連結 device controller 、CPU 與 shared memory
其中每個device controller會負責特定種類的裝置,其工作是維護Local buffer storage 與一組特定目的的register
同時OS會有device driver對應每個device controller,其工作是管理controller與為使用者提供device抽象化的interface
IO架構圖
IO operation步驟
-
CPU給device IO request
-
device driver給特定的controller的register指令
-
device controller解讀指令
-
device controller開始透過local buffer 轉移資料
-
device controller完成工作,會通知device driver並發出interrupt
-
IO完成後,device driver將控制權還給OS
這套流程在小量資料時沒問題,但大量資料時(超過local buffer好幾倍),就會頻繁的發出interrupt,降低系統效能
此時DMA(Direct Memory Access)就是為了改善此問題,不需要經由CPU,也就不會降低效能 (此時只有完成工作需通知CPU,也就只需一次interrupt)