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