Programowanie współbieżne. Systemy czasu rzeczywistego - ebook
Programowanie współbieżne. Systemy czasu rzeczywistego - 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.
Spis treści
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)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-6822-9 |
Rozmiar pliku: | 4,4 MB |