###### tags: `operating system` `note` `thu` # Chapter 1: Introduction ## What is Operating System(OS)? ![](https://i.imgur.com/acZKexy.jpg) ### 定位: - 使用者和電腦硬體中間的介面。 ![](https://i.imgur.com/ofUuqDk.png) ### 用途: - 提供使用者一個環境可供執行程式。 - (因此使用者也可能是你在電腦上執行的軟體) - 通常使用System call (read, write…etc)等primitives ![](https://i.imgur.com/XLVhWtH.jpg) ### 目標: - 讓使用者可以更方便的操作電腦硬體。 ### 常見軟體(透過System call和系統互動): - Shell: Command Interpreter - Office ### 分時系統(Time sharing OS): - Concurrent process, 但分段執行。 - 使用Interrupt來等待I/O的結果或是讓作業系統執行其它的程式。 - 其它還有Real time OS, BATCH SYSTEM等,但還是以Time sharing OS為大宗。 - 每個人分到的時間為time slice ![](https://i.imgur.com/0rsaEvM.png) ### 中斷種類 - 內部中斷: 當程式要求OS提供服務時(e.g. I/O),自我中斷等待OS的回應。 ![](https://i.imgur.com/mep0o6a.jpg) - 外部中斷: 當OS要切換工作時,主動中斷當下的工作。 - 結束程式: 程式結束自然就中斷了。 ### 職責: - 記憶體管理 - 管理程式執行時會需要使用到的記憶體,進行swap in/out - 虛擬記憶體管理(>4GB) - 程式執行的流程(Program→compiler→loader) - 排程管理(time sharing os的功能) - 權限管理 ![](https://i.imgur.com/q5IEOZu.png) ### 管理的硬體: - 處理器 - storage(e.g. 記憶體, 硬碟) - I/O裝置 - 資料(檔案) - 內部裝置: clock, timers - 處理程序(Processes) ### 補充: #### 定址 - 組合語言中所提到的位置,都不會是實際上在記憶體中的位置。 - 程式執行時的記憶體區域就像是一個連續的長方形。 - 而我們寫組語時所提到的位置,即使是絕對定址,也只是未來在這個長方形中的相對位置。 #### 中斷 - 不管是外部中斷或是內部中斷,都會把現在執行的指令完整的執行完 - 而不會卡在某個Fetch/Execute或是其中的Phase的任何一個階段