This respository contains my implementation for the embeded kernel project in the Operating System Capstone course at NYCU.
The kernel is divided into 7 labs and each lab implement the following functions:
- Lab1: Hello World
- Kernel initialization
- IO through Mini UART
- A simple shell to interact with
- Lab2: Booting
- A bootloader that loads kernel from the Mini UART
- Parse ASCII Format Cpio Archive to load initramfs
- Lab 3: Exception and Interrupt
- Handle exception and interrupt
- Concurrent I/O Devices Handling
- Nested Interrupt
- Preemption: High priority interrupts should preempt the handler of the lower priority handlers.
- Handle exception and interrupt
- Lab 4: Allocator
- Buddy System page allocator
- Dynamic Memory Allocator for allocating memory less than a page
- Lab 5: Thread and User Process
- Implement user process and context switch
- System call interface
- Lab 6: Virtual Memory
- Virtual memory in kernel space
- Virtual memory in user space
- Demand Paging
- Copy-on-write
- Lab 7: Virtual File System
- Virtual file system interface
- Multitask VFS
- Access initramfs with VFS
- Access Mini UART IO with VFS