Programowanie systemowe - Kernel

Założenia dot. aspektów praktycznych tzn. w szczególności tych części kernela, które typowo programista rozwija czyli drivery itp, pomijana jest więc np. szczegółowa analiza VM itp.

Czas trwania kursu: 40 godzin

Nazwa kursuKernel
Cena5500,00 PLN

Prowadzący

Rafał Jaworowski - autor licznych projektów systemów typu embedded, których większość jest skierowana na rynek międzynarodowy. Założyciel firmy Semihalf.

Profil słuchaczy

Programiści, projektanci zaawansowanych aplikacji, systemów wbudowanych i podobnych, absolwenci kierunków informatycznych (i pochodnych).

Wymagana wiedza

Znajomość C, asembler, architektury komputerów, RISC, CISC, modele pamięci, cache, podstawy teorii systemów operacyjnych - pamięć wirtualna, proces, wątek, scheduling, filesystem, podstawowa znajomość budowy komputera PC, praktyczna umiejętność programowania i znajdowania błędów w przynajmniej w jednym języku programowania, obsługa UNIX'a na poziomie administracji, podstawowa wiedza nt. UNIX'a, podsystemy, nazewnictwo, urządzenia, podstawowa wiedza nt. działania urządzeń zewnętrznych, rejestrów, sposobu komunikacji, konfiguracji, roli driver'a.

Cel kursu

Uzyskanie praktycznej wiedzy z dziedziny programowania systemowego, w szczególności rozszerzania istniejącej infrastruktury systemu operacyjnego oraz rozwijania zaawansowanych aplikacji w pełni wykorzystujących zasoby i udogodnienia systemu, jego interfejsy itd.

Program

Programowanie systemowe Kernel

  1. Przegląd źródeł
    • hierarchia
    • co gdzie
  2. Bootstrap systemu
    • boot, loader
    • start jądra
    • init
    • w jakim stanie jest CPU po uruchomieniu systemu
    • single/multi user
    • securelevels
  3. Jądro
    • opakowanie
    • podsystemy - struktura
    • wątki jądra
    • przestrzeń adresowa
    • przebieg uruchomienia
    • mapa pamięci
    • stos
  4. Serwisy jądra
    • API
    • tam i z powrotem - wejście/wyjście
  5. Moduły ładowane dynamicznie
    • modularność != mikrokernel
    • tylko formalny zabieg
    • konstrukcja modułu - przykład
    • nie wszystko może być modułem np. driver do root fs device...
  6. Driver-y
    • hierarchia, newbus
    • typy urządzeń
    • devfs
    • analiza wybranego sterownika
    • jak napisać driver
    • debugging drivera
  7. Przerwania
    • zewnętrzne przerwania vs. wyjątki
    • syscall - pułapka
    • SMP - ipi
    • szczególny przykład - przerwanie zegarowe
    • w jakim kontekście wykonują się handlery
    • klasy handlerów/przerwań
    • analiza wybranego handlera
  8. Współbieżność
    • wątki - kernel
    • mechanizmy synchronizacji
    • klasyczne problemy synch
    • locking
    • SMPng, historia BKL
    • operacje atomowe
    • reentrancy
    • TLS
  9. Szeregowanie procesów/wątków
    • wywłaszczanie
    • ULE
    • 4BSD
  10. Szczegółowe zagadnienia zegarowe
    • jak się mierzy
    • rozdzielczość
    • precyzja
  11. Filesystemy
    • VFS
  12. kernel debugging -> cześć praktyczna

Terminy zajęć

Proponowane kursy dodatkowe

Zapisy

Szkolenia

Trenerzy Fundacji

Aktualny harmonogram szkoleń

Najbliższe szkolenia

Polecamy

plbog jdd 2008

Autoryzacja

Partnerzy

Copyright © 2004-2005 by Proidea - Fundacja Wspierania Edukacji Informatycznej

Grafika: webmaster@proidea.org.pl

Projekt i engine: Centauri RSC