Grzegorz Marczynski

Watki w Linuxie i nie tylko

O czym bedzie?

  1. Co to jest watek?
  2. Watki standardu POSIX (na podst. IEEE POSIX 1003.1c-1995 lub ISO/IEC 9945-1:1996)
  3. Watki na poziomie uzytkownika (user-level)
    Watki uzytkownika istnieja, bez wspolpracy z jadrem systemu, w przestrzeni uzytkowanika i nie sa rozroznialne (jako poszczegolne przbiegi) nigdzie indziej.
    Zalety: Wady:
  4. Watki na poziomie jadra (kernel-level)
    Kazdy watek jest osobnym unixowym procesem, dzieli przestrzen adresowa z innymi watkami przez wywolanie clone() (w implementacji LinuxThreads). Za przelaczanie kontekstu miedzy watkami odpowiedzialne jest jadro analogicznie do zarzadzania "normalnymi" procesami.
    Zalety: Wady:
  5. Dwupoziomowy system watkow (two-level, hybrid thread system)
    Dwupoziomowy system watkow jest polaczeniem watkow uzytkownika i watkow jadra. Jadro tworzy lekkie procesy, ktore zawieraja w sobie jeden lub wiecej watkow z poziomu uzytkownika (odwzorowania: 1-1 to watki jadra, 1-n to watki uzytkownika, m-n to watki posrednie).
    Zalety: Wady:
  6. Dostepne metody synchronizacji
  7. Wzajemne wyklucznanie - Mutual Exclusion Locks (mutex)
  8. Czytelnicy/Pisarz - Readers/Writer Locks (RWLock)
  9. Liczace Semafory
  10. Zmienne warunkowe (Condition Variables)
  11. Problemy zwiazane z programowaniem wielowatkowym
  12. Implementacja na przykladzie linuxa i dwoch wybranych bibliotek (linuxthreads, pthreads for linux)
  13. Windows NT Threads (roznice z POSIX threads)
  14. Biblioteki ulatwiajace programowanie:
Bibliografia:
  1. comp.programming.threads news group FAQ
    http://www.best.com/~bos/threads-faq/
  2. SUN POSIX threads FAQ
    http://www.sun.com/workshop/sig/threads/posix.html
  3. LinuxThreads - biblioteka watkow poziomu jadra dla Linuxa.
    http://pauillac.inria.fr/~xleroy/linuxthreads/
  4. PCThreads - biblioteka watkow poziomu uzytkownika dla Linuxa.
    http://www.aa.net/~mtp/PCthreads.html
  5. ACE (Adaptive Communication Encironment) - oficjalna strona
    http://www.cs.wustl.edu/~schmidt/ACE.html
  6. Pelna ostatnia wersja biblioteki ACE dla Linuxa (zrodla) z ICM SUNSITE FTP MIRROR.
    ftp://sunsite.icm.edu.pl/pub/programming/ace
    Uwaga! Aby skompilowac cala biblioteke wraz z testami i przykladami potrzebne bedzie ponad 150Mb wolnej przestrzeni dyskowej.