Celem kursu jest przygotowanie studentów do pracy z jądrem _FreeBSD_, a w szczególności do implementacji sterowników. Po drodze nauczymy się również korzystać z _DTrace_ i zajrzymy do tematów, które zostały pominięte na przedmiocie _Struktura Jądra UNIX_.
Zajęcia będą prowadzone raczej luźnym tempem. W pierwszej edycji wykład będzie niedopracowany, a prowadzący będzie się uczył niektórych rzeczy wraz ze studentami. Na pracowni będziemy pisać sterowniki urządzeń. Na ćwiczeniach będziemy czytać kod i uruchamiać skrypty DTrace.
**UWAGA!** Prowadzący zakłada dobre przygotowanie teoretyczne z zakresu organizacji jąder systemów operacyjnych.
##### Tematy wykładów
* Instalacja i praca z systemem FreeBSD.
* Kompilacja jądra i sterowników.
* DTrace i śledzenie jądra.
* Debugowanie w przestrzeni jądra.
* Omówienie systemu budowania i `BSD Make`.
* Struktura modułu jądra.
* Interfejs plikowy urządzeń `cdevsw`
* Wykrywanie urządzeń i kojarzenie ich ze sterownikami `driver` i `devclass`.
* Zarządzanie zasobami sprzętowymi: pamięć, porty, kanały DMA i przerwania.
* Sterownik magistrali (na przykładzie `PCI`).
* Zmienne jądra `sysctl`.
* Reakcja na zdarzenia jądra `eventhandler`.
* Kolejki zadań odroczonych `taskqueue`.
* Sterowniki urządzeń przechowujących dane.
* Common Access Method.
* Sterowniki urządzeń USB.
* Omówienie stosu sieciowego.
* Sterowniki urządzeń sieciowych.