Programowanie systemowe - Userland

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 kursuUserland
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 Userland

  1. Filozofia aplikacji unixowych
  2. Anatomia programu
    • opakowanie
    • struktura
    • aspekt statyczny i dynamiczny - plik/storage vs. obraz w pamięci
    • proces wątek - struktury z headera
    • przestrzeń adresowa - mapa pamięci
    • stos, sterta
  3. Fazy życia procesu
    • utworzenie, zakończenie
    • context switch
    • szeregowanie procesów i wątków
  4. Przebieg uruchomienia programu
    • crt0
    • podprogramy/funkcje
    • prolog
    • epilog funkcji
  5. Biblioteki
    • dynamiczny linker vs link editor
    • ldd
    • C++ (trochę inaczej tam jest, jak powstaje konstruktor)
  6. Współbieżność
    • wątki - userland
    • mechanizmy synchronizacji
    • pthreads
    • dla bibliotek dzielonych - libc_r/libpthreads
    • debugowanie aplikacji wielowątkowych
  7. Komunikacja międzyprocesowa
    • mechanizmy
    • jak używać
  8. API
    • fork, exec - co się dzieje po sforkowaniu wielowątkowego procesu
  9. Demon - specjalny przypadek programu
    • analiza wybranego demona
  10. Podstawy bezpiecznego kodowania
    • analiza sudo i zagadnień związanych
    • audyt przykładowy
  11. Programowanie sieciowe
    • bsd sockets
  12. debugging -> część 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