NYCU, Operating System Capstone, Spring 2021 =========================================================== This course aims to introduce the design and implementation of operating system kernels. You'll learn both concept and implementation from a series of labs. This course uses `Raspberry Pi 3 Model B+ `_ (rpi3 for short) as the hardware platform. Students can get their hands dirty on a **Real Machine** instead of an emulator. Labs ----- There are 8 + 1 labs in this course. You'll learn how to **design** a kernel by **implementing** it yourself. There are 2 types of labels in each lab. ================== =========================================================================================== ``required`` You're required to implement it by the description, they take up major of your scores. ``elective`` You can implement some of them to get a bonus. ================== =========================================================================================== There is no limitation on which programming language you should use for the labs. However, there are a lot of things which are language dependent and even compiler dependent. You need to manage them yourself. You can check to last year's `course website `_ and `submission repository `_ to see what you might need to do during this semester. Yet, the requirements and descriptions may differ this semester. Grading Policy --------------- It's allowed and recommended to check others code, but you still need to write it on your own instead of copy/paste. TAs validate plagiarism by asking the detail of your implementation. If you can't elaborate your code clearly, you only get 70% of the score. Your code may work on an emulator even it's wrong. Hence, you get 90% of the score if your code works on QEMU but not on real rpi3. For late hand in, the penalty is 1% per week. Disclaimer ---------- We're not kernel developers or experienced embedded system developers. It's common we made mistakes in the description. If you find any of them, send an issue or PR to `this github repo `_. .. note:: This documentation is not self-contained, you can get more information from external references. .. chapters tree below .. toctree:: :caption: Labs :hidden: labs/lab0 labs/lab1 labs/lab2 labs/lab3 labs/lab4 labs/lab5 labs/lab6 labs/lab7 labs/lab8 .. toctree:: :caption: Hardware :hidden: hardware/asm hardware/uart hardware/mailbox .. toctree:: :caption: Miscs :hidden: external_reference/index