今天要來分享的是我最喜歡的一門學科 - 作業系統!
進入正題
作業系統是資訊學系中的一門進階課程,內容會涵蓋:
- 作業系統簡介與常見的類型
- 中斷、I/O、系統呼叫、OS 結構設計、虛擬機
- 行程 Process
- 多執行緒 Multithread Programming
- 排程 CPU Scheduling
- 同步問題 Synchronization
- 死結 Deadlock
- 記憶體管理 Memory Management
- 虛擬記憶體 Virtual Memory
- 檔案系統 File System Interface
- 檔案系統實作 File System Implementation
- 輔助儲存系統 Secondary-Storage Systems
作業系統探討的不僅僅是作業系統本身,其中的排程與同步問題都會出現在現今市面上的系統軟體 (多數軟體都借鑑了作業系統的概念與實作)。
第一次接觸
第一次修作業系統已經是大四上學期了,可能因為我大學不是唸資工系的關係,系上教的內容真的非常淺,大概只有:
- 作業系統簡介與常見的類型
- 中斷、I/O、系統呼叫
- 行程 Process
- 多執行緒 Multithread Programming
- 排程 CPU Scheduling
所以整學期修完對作業系統這門課並沒有太多的好感。
第二次接觸
出於某些原因 (之後再談),我有了接觸作業系統的需要,所以我將交大 OCW 上的作業系統設計與實作看了一遍。
這門課在交大資工也是出了名的硬課,課程內容在這兩年好像有調整,修課學生要在一學期內在樹梅派上實作:
- Lab 0: Environment Setup
- Lab 1 : Hello World
- Lab 2 : Bootloader
- Lab 3 : Exception and Interrupt
- Lab 4 : Multitasking
- Lab 5 : Virtual memory
- Lab 6 : Allocator
- Lab 7 : Virtual File System
- Lab 8 : File System Meets Hardware
自修這門課對於我撰寫隔壁棚的鐵人賽其實非常有幫助,雖然兩邊的 Target Machine 是完全不一樣的架構,但是不考慮硬體的設定的話,很多觀念也都是通用的。
補充: 在交大 OCW 已經搜尋不到這門課程了,有興趣的朋友可以參考該連結。
聽完課程會發現原來自己什麼都不懂,理論跟實際下去設計還是有非常大的差別,網路上也可以找到很多修課學生的心得:
今天的分享就到這邊結束,我們明天見~!