作業系統設計與實作

課程資訊

課程名稱:(中文授課)作業系統設計與實作

授課教師:曹孝櫟

修課年度:108 下 資科工碩 - 選修

作業

課程網頁 - 2020

Lab 0: Environment Setup

Lab 0 Spec

Lab 0 Reference Source Code

Lab 0 主要在配置開發環境,安裝一些工具,並測試硬體有沒有問題。

Lab 1: Hello World

Lab 1 Spec

Lab 1 Reference Source Code

R1R2R3Q1Q2E1E2E3
ExcellentExcellentExcellentYesYesYesYesYes

Lab 1 主要在熟悉 bare metal 的開發,操作一些 ARM 的周邊元件及撰寫一個簡單的 shell。

Lab 2: Bootloader

Lab 2 Spec

Lab 2 Reference Source Code

R1R2Q1Q2E1E2E3
ExcellentExcellentYesYesYesYesYes

Lab 2 主要目標是撰寫 bootloader,透過撰寫一個 3rd bootloader,方便之後透過 UART 載入 kernel image 到實體機上,省去在測試時頻繁插拔 SD Card 並重複做複製貼上的困擾。除此之外還要學習操作 Mailbox 與 PL011 UART。

Lab 3: Exception and Interrupt

Lab 3 Spec

Lab 3 Reference Source Code

Lab 3 QA

R1R2R3R4Q1Q2Q3E1E2-1E2-2E3
ExcellentExcellentExcellentExcellentYesYesYesYesYesYesYes

Lab 3 在學習如何實作 kernel 的 interrupt,透過 interrupt 可以讓 kernel 免於不停 polling 的窘境。

⚠️ 後面的 Lab 都處於邊學邊寫的實作狀態,有些細節可能寫的時候還不是特別清楚,程式請謹慎參考

Lab 4: Multitasking

Lab 4 Spec

Lab 4 Reference Source Code

Lab 4 QA

R1R2R3R4Q1Q2Q3E1E2E3E4E5
ExcellentExcellentExcellentExcellentYesYesYesYesYesYesNoNo

Multi-tasking 是作業系統中最重要的功能之一。Lab 4 實作了 single core 的 task scheduler,並重新設計了 system call 的架構。

Lab 5: Virtual memory

Lab 5 Spec

Lab 5 Reference Source Code

Lab 5 QA

R1R2R3R4Q1Q2Q3E1E2E3E4
ExcellentExcellentExcellentExcellentYesYesYesYesNoNoNo

Virtual Memory 可以為所有 User Programs 都提供一個理想的 Memory Layout,使所有 User tasks 都享有獨立的 Address Space。在 Lab 5 實作 Virtual Memory 的同時,也會實作一個簡單的 User Library,提供 User Space 與 Kernel Space 的橋樑。

Lab 6: Allocator

Lab 6 Spec

Lab 6 Reference Source Code

Lab 6 QA

R1R2R3Q1Q2Q3E1E2
ExcellentExcellentExcellentYesYesYesYesNo

Lab 6 要實作一個 dynamic memory allocator,使小範圍的記憶體分配可以更節省空間,不必以 page size 為單位進行分配。

Lab 7: Virtual File System

Lab 7 Spec

Lab 7 Reference Source Code

Lab 7 QA

R1R2R3Q1Q2Q3E1E2E3E4E5
ExcellentExcellentExcellentYesYesYesYesYesYesNoNo

VFS 提供所有 File System 相同的介面,方便後續的擴充。Lab 7 在實作 VFS 之餘,也以 tmpfs 實作一個 Root File System。

Lab 8: File System Meets Hardware

Lab 8 Spec

Lab 8 Reference Source Code

Lab 8 QA

R1R2Q1Q2Q3E1E2E3E4
ExcellentExcellentYesYesYesNoNoNoNo

Lab 8 以前一次的 VFS 為基礎,實作了 FAT32,目標是能成功讀取、寫入 SD 卡中的資料。

期末主題報告: sysfs

透過 Linux v2.6.34 的原始碼解釋 sysfs 的實作與應用。

sysfs 的實作與應用詳解

Tips

comments powered by Disqus