Projektowanie oprogramowania systemów WĄTKI I SYNCHRONIZACJA

Wielkość: px
Rozpocząć pokaz od strony:

Download "Projektowanie oprogramowania systemów WĄTKI I SYNCHRONIZACJA"

Transkrypt

1 Projektowanie oprogramowania systemów WĄTKI I SYNCHRONIZACJA

2 plan Wątki Właściwości Tworzenie i łączenie Wzorce zastosowań biblioteka OpenMP Synchronizacja Obiekty synchronizacji Wzorzec Monitor

3 Właściwości wątków wątek wykonania działająca ścieżka instrukcji kodu (najmniejsza sekwencja instrukcji, która może być niezależnie zarządzana przez scheduler) Każdy proces posiada przynajmniej 1 wątek (wątek główny, główna pętla programu) Dodatkowe wątki mogą być tworzone na żądanie aby wykonywać specyficzne zadania (wątki robocze worker threads) Biblioteki i system mogą tworzyć dodatkowe wątki, działające niezależnie od kodu użytkownika, które czynią aplikację wielowątkową

4 Wątki vs procesy Procesy są niezależne, wątki istnieją wewnątrz procesów Procesy mają większą konfigurację stanu niż wątki, które współdzielą stan procesu, jego pamięć i zasoby Procesu mają osobną przestrzeń adresową, wątki współdzielą przestrzeń adresową Procesy wchodzą w interakcje między sobą poprzez mechanizmy IPC systemu Przełączenie kontekstu pomiędzy wątkami tego samego procesu jest szybsze niż pomiędzy procesami

5 Wielowątkowość po co? Responsywność przeprowadzaj długie, blokujące operacje w wątkach roboczych, aby aplikacja pozostała responsywna dla użytkownika i nie wyglądała na zawieszoną Podobny efekt można uzyskać za pomocą nieblokującego wejścia/wyjścia, bez wielowątkowości, ale jest to bardziej podatne na błędy programistyczne, trudniejsze i mniej naturalne Wydajność na systemach wielordzeniowych wątki pozwalają uzyskać wynik szybciej poprzez podział pracy na części wykonywane na osobnych rdzeniach Przepływność/utylizacja aplikacje wielowątkowe umożliwiają lepsze wykorzystanie systemu poprzez wykonywanie pracy w wątkach podczas gdy inne są zablokowane oczekując na I/O

6 Wielowątkowość - niebezpieczeństwa Synchronizacja wiele wątków może równocześnie modyfikować te same dane, prowadząc do niespodziewanych efektów Wyścigi (race condition) działanie programu zależy od określonej w czasie kolejności działania wątków. Bez odpowiedniej synchronizacji wątków, ich zależności czasowe mogą być niedeterministyczne (zwłaszcza w systemach wieloprocesorowych) Zakleszczenie (deadlock) niewłaściwe użycie obiektów synchronizacji może prowadzić do sytuacji, kiedy wątek A uzyskał zasób a i czeka aż wątek B zwolni zasób b, podczas gdy wątek B uzyskał zasób b i czeka aż wątek A zwolni zasób a Stabilność wadliwy wątek prowadzi do wywalenia się całego procesu

7 Wyścigi Efekt oczekiwany Efekt możliwy Te sytuacje prowadzą do bardzo trudnych do zdiagnozowania bugów (Heisenbugs) Rozwiązaniem jest użycie obiektów wzajemnej wyłączności (mutual exclusion mutex) lub innych obiektów synchronizacji (np. monitor) lub operacji atomowych

8 Deadlock Niezbędne jest zachowywanie tej samej sekwencji akwizycji zasobów w obu wątkach lub zastosowanie bezpiecznych wzorców np. monitor

9 Cykl życia wątku Poza wątkiem głównym, dodatkowe wątki są powoływane do życia jawnie, poprzez wywołanie systemowe (funkcję systemu operacyjnego) Wątek może być stworzony w stanie wstrzymanym lub działającym, niektóre systemy umożliwiają również wstrzymanie działającego wątku (czego należy unikać bo prowadzi do deadlock-a) Aby utworzyć wątek potrzebujemy funkcji wątku, która będzie stanowić jego ścieżkę wykonania kodu Kiedy funkcja wątku kończy się, wątek staje się joinable (złączalny??) Wątek może zostać złączony (joined) w dowolnym momencie, ale złączenie (join) będzie wstrzymany aż wątek stanie się joinable Złączenie (join) wątku kończy jego istnienie i zwalnia zasoby

10 Na Windows użyj API _beginthread()/_beginthreadex() aby stworzyć wątek (lub funkcję CreateThread()); WaitForSingleObject() lub inne funkcje oczekiwania aby złączyć (join) go Na POSIX-ach użyj API phtread_create() & pthread_join() (patrz man 3 pthread_create) Najlepiej: używaj standardu C++11 i klasy std::thread z nagłówka <thread>

11 Pula wątków Ogólny wzorzec użytkowy, w którym tworzymy wiele wątków, a zadania do wykonania kolejkujemy Wątki robocze pobierają zadania z kolejki, przetwarzają je i zachowują wynik Po zakończeniu zadania wątek powraca do puli i oczekuje na kolejne zadanie (lub natychmiast dostaje zadanie, jeśli już jest w kolejce) Zadania (i ich czas wykonania) mogą być identyczne lub różne możliwe optymalizacje Przepływność systemu się zwiększa (całkowity czas wykonania wszystkich zadań się zmniejsza) Liczba wątków może odpowiadać liczbie rdzeni procesora (dlaczego?)

12 Bezpieczeństwo ze względu na wątki (thread safety) Fragment kodu jest thread-safe jeżeli manipuluje współdzielonymi strukturami danych w sposób, który gwarantuje bezpieczne wykonanie przez wiele wątków na raz (gwarancja braku wyścigów) Rozwiązania Unikaj współdzielonych danych Re-entrancy pisz kod w taki sposób, żeby nie wiązało się to z przechowywaniem stanu w zmiennych globalnych/dzielonych. Dostęp do nie-lokalnego stanu odbywa się za pomocą operacji atomowych Thread-local storage każdy wątek ma własną kopię danych Synchronizuj dostęp do współdzielonych danych Mutual exclusion (wzajemna wyłączność) dostęp do danych jest szeregowany za pomocą obiektów synchronizacji zapewniających że tylko jeden wątek czyta/zapisuje dane na raz Operacje atomowe użycie specjalnych instrukcji, które nie mogą być przerwane przez inne wątki Stan niezmienny po utworzeniu, stan obiektu nie może się zmienić

13 Thread local storage Niektóre systemy lub języki programowania pozwalają tworzyć zmienne, których wartość może być różna w każdym wątku każdy wątek otrzymuje inną kopię tej samej zmiennej Najbardziej popularnym przykładem jest zmienna errno (kod ostatniego błędu) ze standardowej biblioteki języka C gdyby istniała tylko 1 zmienna errno dla wszystkich wątków mielibyśmy łatwo do czynienia z wyścigami (operacje z różnych wątków nadpisują swoje kody błędu) Jak używać? C++11 słowo kluczowe thread_local używane z globalnymi/statycznymi zmiennymi MSVC deklarator _declspec(thread) dla zmiennych GNU C deklarator thread POSIX pthread_key_create()/pthread_setspecific()/pthread_key_delete() Windows TlsAlloc()/TlsSetValue()/TlsGetValue()/TlsFree()

14 Operacje atomowe Procesory posiadają instrukcje, które są nieprzerywalne, tzn. ich wykonanie chwilowo wstrzymuje przerwania sprzętowe (które są używane do przełączania wątków) gwarancja, że instrukcja zakończy się deterministycznym wynikiem na systemach jednoprocesorowych Niektóre procesory posiadają również instrukcje, które uniemożliwiają innym procesorom równoczesną modyfikację tych samych komórek pamięci kosztem spadku wydajności wynikającego z wyczyszczenia cache procesora Każda operacja może być zmieniona w atomową poprzez zamknięcie w sekcji krytycznej dodanie obiektów synchronizacji wzajemnego wykluczenia (mutex) uniemożliwiających innym wątkom równoczesne wykonanie W C++11 używaj szablonu klasy std::atomic<> aby tworzyć atomowe typy podstawowe

15 Kod bezpieczny ze względu na wątki Atomowość poprzez synchronizację (mutual exclusion) Bezpieczny ale nie reentrant globalne zmienne chronione przez mutex Atomowa zmienna globalna

16 Wzorzec singleton i problem równoczesnej inicjalizacji Singleton jest wzorcem projektowym, który ogranicza klasę do stworzenia pojedynczej instancji obiektu (AKA There can be only one) co jest często pożądane Wprowadza to do programu stan globalny Zmienna globalna + wielowątkowość = problemy Co stanie się kiedy kod inicjujący instancę singletona jest wykonany równocześnie przez wiele wątków? (AKA concurrent initialization problem odnosi się to do wszystkich zmiennych globalnych)

17 Problem równoczesnej inicjalizacji Naiwny singleton Działający singleton

18 Biblioteka OpenMP Open Multi-Processing wieloplatformowe, ustandaryzowane API do tworzenia aplikacji wielowątkowych Zwłaszcza do tworzenia wysokowydajnych programów do mielenia numerków Zalety Wady Przenośność (Portability) nie trzeba znać API wątków specyficznego dla danej platformy (jak pthreads albo Windows threads) Proste API w porównaniu do natywnych Ten sam kod może działać jako szeregowy lub równoległy w zależności od konfiguracji środowiska OpenMP, nie trzeba zmieniać projektu aplikacji Proste nie tak wyrafinowane API jak natywne Brak możliwości obsługi błędów OpenMP program się po prostu wywala Brak jawnego użycia obiektów synchronizacji trudne do wykrycia bugi

19 OpenMP keidy używać? Gdy dekomponujemy problem polegający na wykonaniu tego samego zadania na różnych partycjach danych (data parallelism) Przykład: przeprowadź filtrację wielu kanałów danych dźwiękowych równocześnie użycie #pragma omp parallel for

20 Konstrukcje OpenMP Podział/zrównoleglenie pracy tworzenie równoległych pętli i dystrybucja sekcji szeregowego kodu do wątków Podział/zdrównoleglenie danych oznaczenie zmiennych jako współdzielonych albo prywatnych dla wątków Map/reduce określenie zmiennych odbierających wynik redukcji danych z wątków i operacji redukcji Synchronizacja tworzenie sekcji krytycznych, operacje atomowe & bariery wątków Szeregowanie określenie modelu szeregowania dla równoległych pętli Zrównoleglenie warunkowe Detekcja liczby procesorów, funkcje do mierzenia czasu

21 Więcej o OpenMP Rozszerzenia OpenMP stanowią w zasadzie osobny język programowania, który nie jest trywialny W OpenMP nie ma niczego, czego by się nie dało zrobić za pomocą natywnych API, ale czasem OpenMP sprawia, że jest to: Łatwiejsze i szybsze w implementacji Mniej czytelne i trudniejsze do zrozumienia OpenMP pozwala uruchamiać ten sam kod na procesorach CPU i platformach GPGPU domowy superkomputer (patrz również OpenCL ) OpenMP najlepiej sprawdza się przy problemach zawstydzająco równoległych (embarrassingly parallel), bardziej złożone zadania lepiej zostawić dla specjalnie zaprojektowanych modeli używających przenośnych narzędzi wątków jak nagłówek <thread> z C++11 lub biblioteka boost.threads

22 Obiekty synchroniozacji Mutex Semaphore Condition variable Monitor (właściwie nie pojedynczy obiekt) Barrier Read/Write Lock Event (Windows)

23 Mutex MUTual EXclusion object Podstawowe narzędzie tworzenia sekcji krytycznych Tylko jeden wątek może przejąć własność mutexa Inne wątki usiłujące przejąć własność mutexa będą oczekiwać aż pierwszy wątek odda własność Operacje: acquire (lock) release (unlock) try acquire (try lock) zwraca wartość logiczną, czy własność została przekazana

24 Mutex

25 Rodzaje Mutexów W odniesieniu do granic procesów Inter-process używany do IPC, umożliwia blokowanie wątków należących do różnych procesów (POSIX: pthread_mutex_create(); Windows: CreateMutex()) Intra-process tani mutex do używania wewnątrz jednego procesu (Windows: InitializeCriticalSection()) W odniesieniu do rekurencji zwykły zgłosi błąd kiedy ten sam wątek będzie chciał wejść w mutex ponownie rekursywny pozwoli na wejście kilka razy (i będzie wymagał tyle samo odblokowań) tylko takie są dostępne natywnie na Windows

26 wzorzec Scoped lock (C++) Użycie funkcji lock()/unlock() mutexu jest zwykle niebezpieczne (lub niewygodne) w przypadku kodu z wyjątkami W takiej sytuacji sprawdzi się dodatkowa klasa pomocnicza scoped lock, która zablokuje mutex w konstruktorze i odblokuje w destruktorze, więc nawet w przypadku wystąpienia wyjątku, mutex zostanie odblokowany zapobiegając deadlockowi

27 Semaphore Obiekt synchronizacji, który przechowuje licznik zablokowań (i opcjonalnie posiada ograniczenie na maksymalną liczbę zablokowań) Licznik zablokowań zwiększa się za pomocą operacji signal (podniesienie semafora) Licznik zmniejsza się operacją wait; oczekiwanie na semaforze z zerowym licznikiem będzie blokować tak długo, aż semafor zostanie podniesiony Semafor nie ma pojęcia właściciela każdy wątek może czekać lub podnosić semafor Mutex jest specjalnym przypadkiem semafora z maksymalną liczbą zablokowań 1 i ograniczeniem, że tylko wątek który zajął semafor (operacja wait zakończyła się sukcesem) może go zwolnić (podnieść, zasygnalizować) Semafory są trudniejsze do zrozumienia i poprawnego używania niż mutexy, więc raczej należy ich unikać, chyba że się wie co się robi ;)

28 Condition variable Podstawowy składnik monitor-a Wątki będą czekać na obiekcie CV dopóki jeden z nich nie zostanie wypuszczony za pomocą operacji signal (lub wszystkie za pomocą broadcast) CV musi być użyty razem z mutexem wątek, którego oczekiwanie zakończy się sukcesem, automatycznie uzyskuje własność mutexa (atomowo)

29 Condition variable

30 wzorzec użycia Condition variable

31 wzorzec Monitor Sposób użycia CV razem z mutexem z poprzedniego przykładu to wzorzec Monitor Jest to podstawowy schemat postępowania w przypadku gdy wątek oczekuje na jakieś zdarzenie wewnątrz sekcji krytycznej, zaś zdarzenie będzie sygnalizowane z innego wątka Jest to jedyny dostępny konstrukt synchronizacji/oczekiwania w Javie Jest to bezpieczny i sprawdzony sposób na uniknięcie wyścigów podczas oczekiwania na zdarzenie, ponieważ operacja oczekiwania i zwalniania mutexu oraz budzenia i blokowania mutexu odbywają się atomowo

32 Barrier Barrier (lub rendezvous point) jest to miejsce w kodzie, gdzie grupa wątków jest blokowana i nie może kontynuować dopóki wszystkie wątki w grupie nie osiągną bariery Bariera wymusza synchronizację wątków jest to użyteczne w wysokowydajnych obliczeniach i mieleniu numerków

33 Read/Write lock Obiekt nazywany również shared mutex Specjalny rodzaj mutexa, który pozwala wielu wątkom równocześnie wykonać operację read ale tylko jeden wątek może mieć dostęp write Możliwy wzrost wydajności w przypadku, kiedy operacja write zdarza się rzadko, a operacje read często Natywne wsparcie w POSIXach, na Windows brak Jak działa? Zablokowanie dla zapisu zablokuje wszystkie inne wątki, zarówno czytające, jak i piszące Wątki zapisujące będą czekać aż wszystkie wątki piszące i czytające opuszczą RWLock Operacje specjalne: upgrade rwlock z trybu czytania do trybu zapisu Dużo wątków czytających może zagłodzić wątki piszące nigdy nie umożliwając im wejść w rwlock

34 Events (zdarzenia) Windows Specjalny przypadek binarnego semafora (licznik 0/1), który w przeciwieństwie do mutexa nie uznaje własności 2 rodzaje: Manual reset kiedy wątek zakończy sukcesem oczekiwanie na zdarzeniu, musi zostać ręcznie zresetowany do stanu niesygnalizowanego (pozostaje podniesiony dopóki nie zostanie jawnie opuszczony) Automatic reset kiedy wątek zakończy sukcesem oczekiwanie na zdarzeniu, obiekt jest automatycznie, atomowo resetowany do stanu nie-sygnalizowanego (semafor opuszczony) Specyficzne i trudne w poprawnym użyciu lepiej stosować standardowe obiekty (monitor)

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi

Bardziej szczegółowo

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI plan Cechy, właściwości procesów Multitasking Scheduling Fork czym jest proces? Działającą instancją programu Program jest kolekcją

Bardziej szczegółowo

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1 Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)

Bardziej szczegółowo

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku. Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Uruchomienie programu powoduje stworzenie nowego procesu przez system operacyjny. Proces wykonywany program wraz

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

Programowanie wielowątkowe. Tomasz Borzyszkowski

Programowanie wielowątkowe. Tomasz Borzyszkowski Programowanie wielowątkowe Tomasz Borzyszkowski Wątki a procesy Jako jeden z niewielu języków programowania Java udostępnia użytkownikowi mechanizmy wspierające programowanie wielowątkowe. Program wielowątkowy

Bardziej szczegółowo

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone W1. Wielowątkowość Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np.

Bardziej szczegółowo

Systemy operacyjne. Zajęcia 11. Monitory

Systemy operacyjne. Zajęcia 11. Monitory Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu

Bardziej szczegółowo

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003 Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy

Bardziej szczegółowo

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż. Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J:

Bardziej szczegółowo

Język Java wątki (streszczenie)

Język Java wątki (streszczenie) Programowanie współbieżna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Języka Java wątki Autor:

Bardziej szczegółowo

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne Synchronizacja procesów Przeplot Przeplot wątków współbieżnych Cel i metody synchronizacji procesów Problem sekcji krytycznej Semafory Blokady 3.1 3.3 Wątki współbieżne Cel i metody synchronizacji procesów

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych GPGPU Programowanie procesorów graficznych GPGPU 1 GPGPU Historia: lata 80 te popularyzacja systemów i programów z graficznym interfejsem specjalistyczne układy do przetwarzania grafiki 2D lata 90 te standaryzacja

Bardziej szczegółowo

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 5 Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wady semaforów Jeden z pierwszych mechanizmów synchronizacji Generalnie jest to mechanizm bardzo

Bardziej szczegółowo

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego 150875 Grzegorz Graczyk numer indeksu imię i nazwisko 151021 Paweł Tarasiuk numer indeksu imię i nazwisko Data 2011-11-07 Kierunek Informatyka Specjalizacja Inżynieria Oprgoramowania i Analiza Danych Rok

Bardziej szczegółowo

Wstęp do programowania 2

Wstęp do programowania 2 Wstęp do programowania 2 wykład 10 Zadania Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Współbieżność dotychczasowe programy wykonywały akcje sekwencyjnie Ada umożliwia

Bardziej szczegółowo

Modele programowania równoległego. Pamięć współdzielona Rafał Walkowiak dla III roku Informatyki PP

Modele programowania równoległego. Pamięć współdzielona Rafał Walkowiak dla III roku Informatyki PP Modele programowania równoległego Pamięć współdzielona Rafał Walkowiak dla III roku Informatyki PP Procesy a wątki [1] Model 1: oparty o procesy - Jednostka tworzona przez system operacyjny realizująca

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 6. 6 listopada 2015 Plan wykładu Callable objects 1 Callable objects 2 3 Plan wykładu Callable objects 1 Callable objects 2 3 Callable objects Wszystko jest obiektem. Callable objects Wszystko jest

Bardziej szczegółowo

Temat zajęć: Tworzenie i obsługa wątków.

Temat zajęć: Tworzenie i obsługa wątków. Temat zajęć: Tworzenie i obsługa wątków. Czas realizacji zajęć: 180 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Tworzenie wątków, przekazywanie parametrów do funkcji wątków i pobieranie

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia Wydział Matematyki i Informatyki Instytut Informatyki i

Bardziej szczegółowo

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1 Języki i Techniki Programowania II Wykład 7 Współbieżność 1 Programy, Procesy, Wątki Program to zestaw instrukcji do wykonania, dane do przetworzenia, mechanizmy sterujące (stos) Proces w komputerze to

Bardziej szczegółowo

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Wady mechanizmów niskopoziomowych Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Dekkera zależny od liczby synchronizowanych

Bardziej szczegółowo

Zaawansowane programowanie w języku C++

Zaawansowane programowanie w języku C++ Kod szkolenia: Tytuł szkolenia: C/ADV Zaawansowane programowanie w języku C++ Dni: 3 Opis: Uczestnicy szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów

Bardziej szczegółowo

Przetwarzanie Równoległe i Rozproszone

Przetwarzanie Równoległe i Rozproszone POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNOLOGII INFORMACYJNYCH Przetwarzanie Równoległe i Rozproszone www.pk.edu.pl/~zk/prir_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl

Bardziej szczegółowo

Procesy, wątki i zasoby

Procesy, wątki i zasoby Procesy, wątki i zasoby Koncepcja procesu i zasobu, Obsługa procesów i zasobów, Cykl zmian stanów procesu i kolejkowanie, Klasyfikacja zasobów, Wątki, Procesy i wątki we współczesnych systemach operacyjnych.

Bardziej szczegółowo

Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm

Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm Streszczenie Tematem pracy jest standard OpenMP pozwalający na programowanie współbieŝne w systemach komputerowych

Bardziej szczegółowo

Programowanie równoległe i asynchroniczne w C# 5.0 / Mateusz Warczak [et al.]. Gliwice, cop Spis treści

Programowanie równoległe i asynchroniczne w C# 5.0 / Mateusz Warczak [et al.]. Gliwice, cop Spis treści Programowanie równoległe i asynchroniczne w C# 5.0 / Mateusz Warczak [et al.]. Gliwice, cop. 2014 Spis treści Wstęp 9 Przedmowa 11 Rozdział 1. Dla niecierpliwych: asynchroniczność i pętla równoległa 13

Bardziej szczegółowo

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013 Programowanie współbieżne i równoległe dr inż. Marcin Wilczewski 2013 1 Tematyka wykładu Wprowadzenie. Podstawowe pojęcia Wątki i procesy. Metody i modele synchronizacji Klasyczne problemy współbieżne

Bardziej szczegółowo

Model pamięci. Rafał Skinderowicz

Model pamięci. Rafał Skinderowicz Model pamięci Rafał Skinderowicz Czym jest model pamięci Model pamięci dotyczy programów współbieżnych W programie współbieżnym może się zdarzyć, że dany wątek nie będzie widział od razu wartości zmiennej

Bardziej szczegółowo

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1 dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1 Cel wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działanie systemu operacyjnego

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Komunikacja za pomocą potoków. Tomasz Borzyszkowski Komunikacja za pomocą potoków Tomasz Borzyszkowski Wstęp Sygnały, omówione wcześniej, są użyteczne w sytuacjach błędnych lub innych wyjątkowych stanach programu, jednak nie nadają się do przekazywania

Bardziej szczegółowo

Kurs języka Python. Wątki

Kurs języka Python. Wątki Kurs języka Python Wątki Wątek Wątek (ang. thread) to jednostka wykonawcza w obrębie jednego procesu, będąca kolejnym ciągiem instrukcji wykonywanym w obrębie tych samych danych (w tej samej przestrzeni

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

Nowoczesne technologie przetwarzania informacji

Nowoczesne technologie przetwarzania informacji Projekt Nowe metody nauczania w matematyce Nr POKL.09.04.00-14-133/11 Nowoczesne technologie przetwarzania informacji Mgr Maciej Cytowski (ICM UW) Lekcja 2: Podstawowe mechanizmy programowania równoległego

Bardziej szczegółowo

Architektura Systemów Komputerowych 2

Architektura Systemów Komputerowych 2 Architektura Systemów Komputerowych 2 Pytania egzaminacyjne z części pisemnej mgr inż. Leszek Ciopiński Wykład I 1. Historia i ewolucja architektur komputerowych 1.1. Czy komputer Z3 jest zgodny z maszyną

Bardziej szczegółowo

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1 Literatura 1. Wprowadzenie do obliczeń równoległych, Zbigniew Czech, Wydawnictwo Naukowe PWN, 2010, 2013 2. Introduction to Parallel Computing; Grama, Gupta, Karypis, Kumar; Addison Wesley 2003 3. Designing

Bardziej szczegółowo

Wątki w Javie. Piotr Tokarski

Wątki w Javie. Piotr Tokarski Wątki w Javie Piotr Tokarski Wprowadzenie Co to są wątki? Co to są wątki? Każdy program ma przynajmniej jeden wątek Co to są wątki? Każdy program ma przynajmniej jeden wątek Wątki są po to, by symulować

Bardziej szczegółowo

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Miejsce, rola i zadania systemu operacyjnego

Bardziej szczegółowo

Procesy, zasoby i wątki

Procesy, zasoby i wątki Dariusz Wawrzyniak Koncepcja procesu i zasobu Obsługa procesów i zasobów Cykl zmian stanów procesu i kolejkowanie Klasyfikacja zasobów Wątki Procesy i wątki we współczesnych systemach operacyjnych Plan

Bardziej szczegółowo

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz

Bardziej szczegółowo

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu Literatura 1. Introduction to Parallel Computing; Grama, Gupta, Karypis, Kumar; Addison Wesley 2003 2. Wprowadzenie do obliczeń równoległych, Zbigniew Czech, Wydawnictwo Naukowe PWN, 2010. 3. Designing

Bardziej szczegółowo

ξ II.UWr Wprowadzenie do STM

ξ II.UWr Wprowadzenie do STM ξ KS @.UWr Wprowadzenie do STM Marek Materzok ZOSA 2007 ξ KS @.UWr Wprowadzenie Były sobie komputery. Wykonywały programy instrukcja po instrukcji i wszyscy byli szczęśliwi... ξ KS @.UWr Wprowadzenie Były

Bardziej szczegółowo

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego Systemy operacyjne wprowadzenie 1 Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) System operacyjny jest zbiorem ręcznych i automatycznych procedur, które pozwalają grupie osób na

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

Równoległość i współbieżność

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

Równoległość i współbieżność

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

LEKCJA TEMAT: Zasada działania komputera.

LEKCJA TEMAT: Zasada działania komputera. LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem

Bardziej szczegółowo

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco 1. Liczby 3456.0012 i 0.000076235 w zapisie zmiennoprzecinkowym przedstawia się następująco a) 0.34560012 10 4 i 0.76235 10 4 b) 3.4560012 10 3 i 7.6235 10 5 c) 3.4560012 10 3 i 7.6235 10 5 d) po prostu

Bardziej szczegółowo

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11 Kod szkolenia: Tytuł szkolenia: C/BOOST Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11 Dni: 4 Opis: Uczestnicy podczas szkolenia zapoznają się z metodami wytwarzania oprogramowania

Bardziej szczegółowo

Podstawy programowania komputerów

Podstawy programowania komputerów Podstawy programowania komputerów Wykład 14: Programowanie współbieżne w C Definicja programowania współbieżnego Programowanie współbieżne jest tworzeniem programów, których wykonanie powoduje uruchomienie

Bardziej szczegółowo

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Podstawy Informatyki Systemy operacyjne

Podstawy Informatyki Systemy operacyjne Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Definicje systemu operacyjnego Zadania systemu operacyjnego Klasyfikacja systemów operacyjnych 2 Zasoby systemu komputerowego

Bardziej szczegółowo

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Plan Prezentacji. Programowanie ios. Jak zacząć? Co warto wiedzieć o programowaniu na platformę ios? Kilka słów na temat Obiective-C.

Bardziej szczegółowo

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Python: Wątki Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Wątki akt pierwszy, kilka przydatnych funkcji Lib/threading.py modół pozwalający

Bardziej szczegółowo

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer Sprzęt komputerowy 2 Autor prezentacji: 1 prof. dr hab. Maria Hilczer Budowa komputera Magistrala Procesor Pamięć Układy I/O 2 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący

Bardziej szczegółowo

Wprowadzenie do systemów operacyjnych

Wprowadzenie do systemów operacyjnych SOE - Systemy Operacyjne Wykład 1 Wprowadzenie do systemów operacyjnych dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW System komputerowy Podstawowe pojęcia System operacyjny

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

2013-04-25. Czujniki obiektowe Sterowniki przemysłowe

2013-04-25. Czujniki obiektowe Sterowniki przemysłowe Ogólne informacje o systemach komputerowych stosowanych w sterowaniu ruchem funkcje, właściwości Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i transportowej

Bardziej szczegółowo

Opis efektów kształcenia dla modułu zajęć

Opis efektów kształcenia dla modułu zajęć Nazwa modułu: Projektowanie i użytkowanie systemów operacyjnych Rok akademicki: 2013/2014 Kod: EAR-2-324-n Punkty ECTS: 5 Wydział: Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Kierunek:

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

SYSTEMY OPERACYJNE WYKLAD 6 - wątki Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - wątki Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 1. Wątki 2. Planowanie przydziału procesora (szeregowanie

Bardziej szczegółowo

Programowanie współbieżne Wykład 1. Rafał Skinderowicz

Programowanie współbieżne Wykład 1. Rafał Skinderowicz Programowanie współbieżne Wykład 1 Rafał Skinderowicz Plan wykładu Historia, znaczenie i cele współbieżności w informatyce. Podstawowe pojęcia, prawo Moore a i bariery technologiczne. Sposoby realizacji

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 11 Wejście - wyjście Urządzenia zewnętrzne Wyjściowe monitor drukarka Wejściowe klawiatura, mysz dyski, skanery Komunikacyjne karta sieciowa, modem Urządzenie zewnętrzne

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

SYSTEMY OPERACYJNE WYKLAD 6 - procesy Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - procesy Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 Zasoby: PROCES wykonujący się program ; instancja programu

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1 Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń

Bardziej szczegółowo

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych

Bardziej szczegółowo

Muszalski Sebastian. Synchronizacja, czyli co, jak i dlaczego.

Muszalski Sebastian. Synchronizacja, czyli co, jak i dlaczego. Muszalski Sebastian Synchronizacja, czyli co, jak i dlaczego. 1 W niniejszym referacie chciałbym przybliżyć problem synchronizacji i mam szczerą nadzieję, że mi się to uda. Zanim jednak przejdę do sedna,

Bardziej szczegółowo

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego System operacyjny czasu rzeczywistego (RTOS Real Time Operating System) jest programem bazowym ułatwiającym tworzenie programu użytkowego systemu mikroprocesorowego. System operacyjny czasu rzeczywistego

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz

Bardziej szczegółowo

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 Podstawowe definicje i pojęcia współbieżności 1.1 Motywacja Przewiduje się że w dalszej perspektywie głównym motorem wzrostu mocy przetwarzania komputerów

Bardziej szczegółowo

Wyklad 11 Języki programowania równoległego

Wyklad 11 Języki programowania równoległego Wyklad 11 Języki programowania równoległego Części wykładu: 1. Środowisko programu równoległego - procesy i wątki 2. Podstawowe problemy języków programowania równoległego 3. Języki programowania w środowisku

Bardziej szczegółowo

dr Krzysztof Podlaski

dr Krzysztof Podlaski dr Krzysztof Podlaski Wydział Fizyki i Informatyki Stosowanej 19.11.2010 Łódź Wstęp do Java, wykład 3 1 Biblioteki standardowe Obszerny zestaw Klas i Interfejsów Obsługa Strumieni We-Wy Dysków Sieci java.io,

Bardziej szczegółowo

21 Model z pamięcią współdzieloną (model PRAM) - Parallel Random Access Machine

21 Model z pamięcią współdzieloną (model PRAM) - Parallel Random Access Machine 21 Model z pamięcią współdzieloną (model PRAM) - Parallel Random Access Machine Model PRAM zapewnia możliwość jednoczesnego dostępu każdego spośród n procesorów o architekturze RAM do wspólnej pamięci

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Budowa Mikrokomputera

Budowa Mikrokomputera Budowa Mikrokomputera Wykład z Podstaw Informatyki dla I roku BO Piotr Mika Podstawowe elementy komputera Procesor Pamięć Magistrala (2/16) Płyta główna (ang. mainboard, motherboard) płyta drukowana komputera,

Bardziej szczegółowo

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów System Szablonów System szablonów System szablonów to biblioteka, która pozwala oddzielić warstwę prezentacji od warstwy logicznej. Aplikacja WWW najpierw pobiera wszystkie dane, przetwarza je i umieszcza

Bardziej szczegółowo

Modelowanie procesów współbieżnych

Modelowanie procesów współbieżnych Modelowanie procesów współbieżnych dr inż. Maciej Piotrowicz Katedra Mikroelektroniki i Technik Informatycznych PŁ piotrowi@dmcs.p.lodz.pl http://fiona.dmcs.pl/~piotrowi -> Modelowanie... Literatura M.

Bardziej szczegółowo

ActiveXperts SMS Messaging Server

ActiveXperts SMS Messaging Server ActiveXperts SMS Messaging Server ActiveXperts SMS Messaging Server to oprogramowanie typu framework dedykowane wysyłaniu, odbieraniu oraz przetwarzaniu wiadomości SMS i e-mail, a także tworzeniu własnych

Bardziej szczegółowo

Programowanie.NET - kurs zaawansowany

Programowanie.NET - kurs zaawansowany Kod szkolenia: Tytuł szkolenia: NET/ADV Programowanie.NET - kurs zaawansowany Dni: 4 Opis: Adresaci szkolenia Szkolenie kierowane jest do programiostów chcących pogłębić swoją wiedzę z zakresu platformy.net

Bardziej szczegółowo

O superkomputerach. Marek Grabowski

O superkomputerach. Marek Grabowski O superkomputerach Marek Grabowski Superkomputery dziś Klastry obliczeniowe Szafy (od zawsze) Bo komputery są duże Półki i blade'y (od pewnego czasu) Większe upakowanie mocy obliczeniowej na m^2 Łatwiejsze

Bardziej szczegółowo

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko Struktury systemów operacyjnych Usługi, funkcje, programy mgr inż. Krzysztof Szałajko Usługi systemu operacyjnego Wykonanie programu System operacyjny umożliwia wczytanie programu do pamięci operacyjnej

Bardziej szczegółowo

Tesla. Architektura Fermi

Tesla. Architektura Fermi Tesla Architektura Fermi Tesla Tesla jest to General Purpose GPU (GPGPU), GPU ogólnego przeznaczenia Obliczenia dotychczas wykonywane na CPU przenoszone są na GPU Możliwości jakie daje GPU dla grafiki

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX Wojciech A. Koszek dunstan@freebsd.czest.pl IX Liceum Ogólnokształcące im. C.K. Norwida w Częstochowie Krajowy Fundusz na

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Q E M U. http://www.qemu.com/

Q E M U. http://www.qemu.com/ http://www.qemu.com/ Emulator procesora Autor: Fabrice Bellard Obsługiwane platformy: Windows, Solaris, Linux, FreeBSD, Mac OS X Aktualna wersja: 0.9.0 Większość programu oparta na licencji LGPL, a sama

Bardziej szczegółowo

Programowanie MorphX Ax

Programowanie MorphX Ax Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn

Bardziej szczegółowo