Celem zajeć jest implementacja prostego jądra systemu operacyjnego dla
architektury MIPS.
****
Studenci będą się organizować w 2-3 osobowe grupy, wspólnie projektować,
implementować i testować komponenty jądra oraz wygłaszać prelekcje na zadany
temat. Seminarium będzie podzielone na następujące etapy:
## Etap przygotowawczy:
Nowopowstałe zespoły będą referować zagadnienia niezbędne do wystartowania
projektu:
* podstawowy zestaw funkcjonalności jądra,
* architektura mikrojądra i jądra monolitycznego,
* model uprzywilejowanego trybu pracy procesora,
* sprzętowy zegar i obsługa przerwań,
* zarządzanie stronicowaniem – obsługa TLB i konstrukcja przestrzeni adresowej,
* symulator platformy sprzętowej,
* emulowane urządzenia wejścia-wyjścia,
* obsługa skrośnego kompilatora / asemblera, konsolidatora i debuggera,
* anatomia plików ELF.
## Etap projektowania:
Po odpowiednim przygotowaniu merytorycznym poszczególne zespoły będą
proponować swoje pomysły na podane przez prowadzącego komponenty jądra systemu
operacyjnego. Po prelekcji będzie się odbywała dyskusja, która będzie miała na
celu pomóc wyłapanie nieścisłości czy błędów w przedstawionej propozycji.
## Etap implementacji:
Będzie trwał co najmniej połowę semestru. Każdy zespół będzie miał obowiązek
co dwa tygodnie zaprezentować publicznie postępy swojej pracy, opowiedzieć o
napotkanych trudnościach i planach na następne dwa tygodnie. Pod koniec
semestru odbędą prezentacje podsumowujące dokonania każdej z grup.
## Materiały:
* [Operating Systems Design and Implementation](http://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0131429388)
* [Operating Systems In Depth: Design and Programming](http://eu.wiley.com/WileyCDA/WileyTitle/productCd-EHEP001803.html)
* [The Design and Implementation of the FreeBSD Operating System](http://www.amazon.com/Design-Implementation-FreeBSD-Operating-System/dp/0321968972/)
* [Linux Kernel Development](http://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468/)