或將本站設定為白名單
以支持本站之運營
作業系統設計與實作
課程資訊
課程名稱:(中文授課)作業系統設計與實作
授課教師:曹孝櫟
修課年度:108 下 資科工碩 - 選修
作業
Lab 0: Environment Setup
Lab 0 主要在配置開發環境,安裝一些工具,並測試硬體有沒有問題。
Lab 1: Hello World
R1 | R2 | R3 | Q1 | Q2 | E1 | E2 | E3 |
---|---|---|---|---|---|---|---|
Excellent | Excellent | Excellent | Yes | Yes | Yes | Yes | Yes |
Lab 1 主要在熟悉 bare metal 的開發,操作一些 ARM 的周邊元件及撰寫一個簡單的 shell。
Lab 2: Bootloader
R1 | R2 | Q1 | Q2 | E1 | E2 | E3 |
---|---|---|---|---|---|---|
Excellent | Excellent | Yes | Yes | Yes | Yes | Yes |
Lab 2 主要目標是撰寫 bootloader,透過撰寫一個 3rd bootloader,方便之後透過 UART 載入 kernel image 到實體機上,省去在測試時頻繁插拔 SD Card 並重複做複製貼上的困擾。除此之外還要學習操作 Mailbox 與 PL011 UART。
Lab 3: Exception and Interrupt
R1 | R2 | R3 | R4 | Q1 | Q2 | Q3 | E1 | E2-1 | E2-2 | E3 |
---|---|---|---|---|---|---|---|---|---|---|
Excellent | Excellent | Excellent | Excellent | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Lab 3 在學習如何實作 kernel 的 interrupt,透過 interrupt 可以讓 kernel 免於不停 polling 的窘境。
- Exception Level Switch
- Exception Vector Table
- Synchronous Exception Handler
- Asynchronous Exception Handler
Lab 4: Multitasking
R1 | R2 | R3 | R4 | Q1 | Q2 | Q3 | E1 | E2 | E3 | E4 | E5 |
---|---|---|---|---|---|---|---|---|---|---|---|
Excellent | Excellent | Excellent | Excellent | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Multi-tasking 是作業系統中最重要的功能之一。Lab 4 實作了 single core 的 task scheduler,並重新設計了 system call 的架構。
Lab 5: Virtual memory
R1 | R2 | R3 | R4 | Q1 | Q2 | Q3 | E1 | E2 | E3 | E4 |
---|---|---|---|---|---|---|---|---|---|---|
Excellent | Excellent | Excellent | Excellent | Yes | Yes | Yes | Yes | No | No | No |
Virtual Memory 可以為所有 User Programs 都提供一個理想的 Memory Layout,使所有 User tasks 都享有獨立的 Address Space。在 Lab 5 實作 Virtual Memory 的同時,也會實作一個簡單的 User Library,提供 User Space 與 Kernel Space 的橋樑。
- Background
- Identity Paging
- Finer Granularity Mapping
- Page Bookkeeping
- User Library
- Multitasking Revisiting
- Page Frame Reclaim
Lab 6: Allocator
R1 | R2 | R3 | Q1 | Q2 | Q3 | E1 | E2 |
---|---|---|---|---|---|---|---|
Excellent | Excellent | Excellent | Yes | Yes | Yes | Yes | No |
Lab 6 要實作一個 dynamic memory allocator,使小範圍的記憶體分配可以更節省空間,不必以 page size 為單位進行分配。
Lab 7: Virtual File System
R1 | R2 | R3 | Q1 | Q2 | Q3 | E1 | E2 | E3 | E4 | E5 |
---|---|---|---|---|---|---|---|---|---|---|
Excellent | Excellent | Excellent | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
VFS 提供所有 File System 相同的介面,方便後續的擴充。Lab 7 在實作 VFS 之餘,也以 tmpfs 實作一個 Root File System。
Lab 8: File System Meets Hardware
R1 | R2 | Q1 | Q2 | Q3 | E1 | E2 | E3 | E4 |
---|---|---|---|---|---|---|---|---|
Excellent | Excellent | Yes | Yes | Yes | No | No | No | No |
Lab 8 以前一次的 VFS 為基礎,實作了 FAT32,目標是能成功讀取、寫入 SD 卡中的資料。
期末主題報告: sysfs
透過 Linux v2.6.34 的原始碼解釋 sysfs 的實作與應用。
Tips
或將本站設定為白名單
以支持本站之運營