E-book details

Programowanie współbieżne. Systemy czasu rzeczywistego

Programowanie współbieżne. Systemy czasu rzeczywistego

Paweł Majdzik

Ebook

Współbieżność to szybkość, efektywność i nowoczesność. Czy Ty też chcesz tak programować?

Coraz niższe ceny i powszechna dostępność sprzętu komputerowego o architekturze wieloprocesorowej powodują, że umiejętność projektowania i budowania aplikacji przetwarzających informacje współbieżnie staje się wręcz niezbędna każdemu zawodowemu programiście. W większości współczesnych języków programowania bezpośrednio zaimplementowano metody tworzenia zadań wykonywanych równolegle oraz wysokopoziomowe mechanizmy komunikacji i synchronizacji procesów.

Tworzenie efektywnych aplikacji współbieżnych wciąż jednak wymaga dużej, specjalistycznej wiedzy dotyczącej systemów operacyjnych oraz programowania nisko- i wysokopoziomowego, o czym przekonało się wielu studentów kierunków informatycznych i profesjonalnych programistów. Na szczęście teraz wszyscy mogą sięgnąć po książkę "Programowanie współbieżne. Systemy czasu rzeczywistego". Pomoże ona uniknąć wielu typowych błędów związanych z tworzeniem aplikacji współbieżnych i pokaże, jak rozwiązywać problemy specyficzne dla tej dziedziny. Lektura ułatwi też zdobycie praktycznej umiejętności projektowania architektury niezawodnego współbieżnego oprogramowania, a także przybliży wiedzę na temat mechanizmów i metod wykorzystywanych przy tworzeniu systemów równoległych czasu rzeczywistego.

  • Przedstawienie podstawowych pojęć dotyczących programowania współbieżnego
  • Opis metod weryfikacji poprawności programów współbieżnych
  • Definicje i własności mechanizmów synchronizacji oraz komunikacji
  • Przykłady rozwiązań problemów programowania współbieżnego
  • Opis mechanizmów wspierających programowanie systemów czasu rzeczywistego
  • Implementacja metod szeregowania zadań w systemach czasu rzeczywistego
  • Opis metod i mechanizmów języka Ada 2005 umożliwiających implementację programów współbieżnych i systemów czasu rzeczywistego

Przyszłość informatyki to przetwarzanie współbieżne. Stać Cię na pozostanie w tyle?



Paweł Majdzik - od 1998 roku pracuje jako adiunkt w Instytucie Sterowania i Systemów Informatycznych Uniwersytetu Zielonogórskiego. Jest autorem bądź współautorem ponad trzydziestu opracowań naukowych - książek, artykułów, referatów wydanych w kraju i za granicą, a dotyczących informatyki, w szczególności związanych z analitycznymi metodami modelowania i projektowania systemów współbieżnych.

Rozdział 1. Wstęp (7)

  • 1.1. Geneza książki (7)
  • 1.2. Cele (9)

Rozdział 2. Programowanie współbieżne (11)

  • 2.1. Wprowadzenie (12)
  • 2.2. Podstawowe pojęcia (22)
    • 2.2.1. Proces, zasób, procesy współbieżne (23)
    • 2.2.2. Program współbieżny (24)
  • 2.3. Synchronizacja i komunikacja (25)
  • 2.4. Podsumowanie (27)
  • 2.5. Ćwiczenia i zadania (28)

Rozdział 3. Poprawność programów współbieżnych (29)

  • 3.1. Wprowadzenie (29)
  • 3.2. Wzajemne wykluczanie (32)
  • 3.3. Żywotność globalna (34)
    • 3.3.1. Warunki konieczne wystąpienia blokady (41)
    • 3.3.2. Metody wykrywania i likwidacji blokad (44)
    • 3.3.3. Metody zapobiegania blokadom (46)
    • 3.3.4. Metody unikania blokad (49)
  • 3.4. Żywotność lokalna (50)
  • 3.5. Podsumowanie (52)
  • 3.6. Ćwiczenia i zadania (53)

Rozdział 4. Zadania (57)

  • 4.1. Wprowadzenie (58)
  • 4.2. Deklaracja typu zadaniowego (62)
  • 4.3. Tworzenie zadań (66)
  • 4.4. Aktywacja, wykonanie, finalizacja i likwidacja zadań (74)
    • 4.4.1. Fazy aktywacji i wykonania zadań (75)
    • 4.4.2. Fazy finalizacji i likwidacji zadań (77)
    • 4.4.3. Błędy kreacji i aktywacji zadań (79)
  • 4.5. Hierarchiczna struktura zadań (81)
    • 4.5.1. Fazy kreacji, aktywacji i wykonania zadań (81)
    • 4.5.2. Fazy finalizacji i likwidacji zadań (83)
  • 4.6. Podsumowanie (91)
  • 4.7. Ćwiczenia i zadania (91)

Rozdział 5. Zmienne dzielone i semafory (95)

  • 5.1. Wprowadzenie (95)
  • 5.2. Zmienne dzielone (96)
  • 5.3. Semafory (104)
    • 5.3.1. Definicje semaforów (105)
    • 5.3.2. Wzajemne wykluczanie (106)
  • 5.4. Ćwiczenia i zadania (112)

Rozdział 6. Spotkania (115)

  • 6.1. Wprowadzenie (115)
  • 6.2. Instrukcja selektywnego wyboru - select (122)
    • 6.2.1. Selektywne oczekiwanie (123)
    • 6.2.2. Dozory wejść (128)
    • 6.2.3. Gałęzie delay, else, terminate (131)
    • 6.2.4. Wyjątek Program_Error (139)
  • 6.3. Warunkowe i terminowe wywołanie wejścia (141)
  • 6.4. Zagnieżdżone spotkania (144)
  • 6.5. Pakiety (147)
  • 6.6. Podsumowanie (150)
  • 6.7. Ćwiczenia i zadania (151)

Rozdział 7. Monitory i obiekty chronione (155)

  • 7.1. Wprowadzenie (155)
  • 7.2. Monitory (156)
    • 7.2.1. Zmienne warunkowe (157)
    • 7.2.2. Przykłady programów (163)
  • 7.3. Obiekt chroniony (166)
    • 7.3.1. Specyfikacja typu chronionego (167)
    • 7.3.2. Synchronizacja warunkowa (171)
    • 7.3.3. Semantyka wykonań metod składowych (172)
    • 7.3.4. Rodzina wejść (176)
    • 7.3.5. Przykłady programów - obiekt chroniony (180)
  • 7.4. Instrukcja rekolejkowania (181)
    • 7.4.1. Problem alokacji zasobów (181)
    • 7.4.2. Składnia instrukcji requeue (192)
    • 7.4.3. Problem alokacji zasobów w systemach czasu rzeczywistego (193)
  • 7.5. Instrukcja abort (197)
  • 7.6. Asynchroniczna zmiana sterowania (198)
  • 7.7. Podsumowanie (218)
  • 7.8. Ćwiczenia i zadania (219)

Rozdział 8. Problemy programowania współbieżnego (223)

  • 8.1. Problem konsumenta i producenta (223)
    • 8.1.1. Semafory (226)
    • 8.1.2. Spotkania (230)
    • 8.1.3. Monitory (231)
    • 8.1.4. Obiekty chronione (232)
    • 8.1.5. Podsumowanie (233)
  • 8.2. Problem pięciu filozofów (236)
    • 8.2.1. Semafory (238)
    • 8.2.2. Monitory (240)
    • 8.2.3. Obiekty chronione (242)
    • 8.2.4. Spotkania (247)
    • 8.2.5. Podsumowanie (251)
  • 8.3. Problem pisarzy i czytelników (252)
    • 8.3.1. Semafory (253)
    • 8.3.2. Spotkania (254)
    • 8.3.3. Monitory (255)
    • 8.3.4. Obiekty chronione (256)
    • 8.3.5. Podsumowanie (258)
  • 8.4. Ćwiczenia i zadania (258)

Rozdział 9. Programowanie systemów czasu rzeczywistego (261)

  • 9.1. Wprowadzenie (261)
  • 9.2. Metoda ustalonego priorytetu (267)
    • 9.2.1. Priorytety bazowe (269)
    • 9.2.2. Problem inwersji priorytetu (270)
  • 9.3. Szeregowanie zadań w kolejkach wejść (274)
  • 9.4. Metoda szeregowania bez wywłaszczenia (276)
  • 9.5. Metoda Round-Robin (276)
  • 9.6. Metoda EDF (278)
    • 9.6.1. Reprezentacja terminów (278)
    • 9.6.2. Szeregowanie zadań (280)
    • 9.6.3. Metoda EDF i protokół ICPP (281)
  • 9.7. Priorytety dynamiczne (288)
  • 9.8. Synchroniczne i asynchroniczne sterowanie zadaniami (289)
    • 9.8.1. Synchroniczne sterowanie zadaniami (290)
    • 9.8.2. Asynchroniczne sterowanie zadaniami (290)
  • 9.9. Podsumowanie (291)
  • 9.10. Ćwiczenia i zadania (292)

Dodatek A. Przykłady programów (293)

Literatura (311)

Skorowidz (313)

  • Title: Programowanie współbieżne. Systemy czasu rzeczywistego
  • Author: Paweł Majdzik
  • ISBN: 978-83-246-6822-9, 9788324668229
  • Date of issue: 2013-02-19
  • Format: Ebook
  • Item ID: prowsp
  • Publisher: Helion