Celem zajeć jest implementacja prostego jądra systemu operacyjnego dla
architektury MIPS.
**
**
Studenci będą się organizować w 2-3 osobowe grupy, wspolnie 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 plikow ELF.
## Etap projektowania:
Po odpowiednim przygotowaniu merytorycznym poszczegolne 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, ktora będzie miała na
celu pomoc wyłapanie nieścisłości czy błędow w przedstawionej propozycji.
## Etap implementacji:
Będzie trwał co najmniej połowę semestru. Każdy zespoł 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/)