Krótki kurs programowania współbieżnego (2)
|
|
- Alojzy Adamczyk
- 7 lat temu
- Przeglądów:
Transkrypt
1 Krótki kurs programowania współbieżnego (2) Procesy i sygnały w języku C (to było ostatnio) Wspólny dostęp do plików (to też) Semafory i pamięć dzielona Inne metody komunikowania Kurs systemu UNIX 1
2 Dzielenie zasobów Interfejs programistyczny Uniksa dostarcza następujących mechanizmów: a) Blokowanie plików (było) b) Semafory c) Pamięć dzielona Kurs systemu UNIX 2
3 Semafory Mechanizm koordynacyjny znany nam z systemów operacyjnych. Operacje na semaforach są wykonywane niepodzielnie. Przypominamy definicję: wait(s) - jeżeli wartość S jest dodatnia to zmniejszyć S, w przeciwnym przypadku oczekiwać signal(s) - jeżeli ktoś czeka na S to go wznawiamy, w przeciwnym przypadku zwiększamy S. Kurs systemu UNIX 3
4 Semafory w Uniksie Dość rozbudowany interfejs: wszystkie funkcje operują na tablicach semaforów ogólnych. Przypomnienie: semafor binarny realizujemy za pomocą semafora ogólnego przypisując mu wartość początkową równą 1. Trzy funkcje zajmują się obsługą semaforów: semctl, semop, semget. Służą kolejno do sterowania semaforem, do zmiany wartości semafora oraz do tworzenia semafora. Należy włączyć pliki: #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> Kurs systemu UNIX 4
5 Kurs systemu UNIX 5
6 Semafory (2) Deklaracje int semctl(int semid, int semnum, int cmd,...); int semop(int semid, struct sembuf *sops, size_t nsops); int semget(key_t key, int nsems, int semflg); Parametr key jest liczbą całkowitą, służącą do identyfikacji semaforów pomiędzy procesami (coś jak nazwa pliku). Operacje na semaforach wykonuje się korzystając z identyfikatora semafora (coś jak deskryptor pliku). Kurs systemu UNIX 6
7 Tworzenie semafora Funkcja semget tworzy semafor lub zwraca identyfikator już istniejącego semafora. Można tworzyć semafory prywatne, korzystając ze specjalnej wartości parametru key o nazwie IPC_PRIVATE (warto o tym wiedzieć, by nie użyć tej stałej przypadkowo). Kolejnym argumentem jest liczba semaforów w tablicy oraz flagi (opcje) związane z semaforem. Flagi mogą być określające dostęp (takie jak w funkcji open) oraz IPC_CREAT; jeżeli zależy nam na nowym, unikatowym semaforze trzeba dodać IPC_EXCL. Kurs systemu UNIX 7
8 Zmiana wartości semafora Drugi parametr funkcji semop to wskaźnik na strukturę opisującą semafor. Struktura ta zawiera między innymi następujace rzeczy: struct sembuf { } short sem_num; short sem_op; short sem_flg; Pierwszy element to numer semafora w tablicy (0 jeżeli jest tylko jeden). Drugi element to wartość, o jaką chcemy zmienić semafor. Kurs systemu UNIX 8
9 Najczęściej używane są wartości +1 oraz -1, odpowiadające poleceniom signal oraz wait. Jeżeli flaga SEM_UNDO (w trzecim elemencie) jest włączona, to system śledzi zmiany semaforów i zwalnia semafory po zakończeniu działania procesu. Parametr ostatni funkcji semop to liczba semaforów, których dotyczy operacja. Kurs systemu UNIX 9
10 Sterowanie semaforem Funkcja semctl pozwala na bezpośrednie sterowanie semaforem. Znaczenie parametrów sem_id oraz sem_num takie jak w poprzednich funkcjach. Dwie najczęściej używane komendy: 1) SETVAL do ustalania wartości semafora (przed pierwszym użyciem) 2) IPC_RMD do usuwania semafora. Kurs systemu UNIX 10
11 Ustalanie wartości semafora Występuje wtedy czwarty parametr: wskażnik na unie semun, zdefiniowaną poniżej: union semun { int val; // (...) } W tej unii znajduje się wstawiana wartość. Kurs systemu UNIX 11
12 Uproszczony interfejs semaforowy int create(int key) { return semget(key, 1, 0666 IPC_CREAT); } void wait(int S) { sembuf sb; sb.sem_num = 0; sb.sem_op = -1; sb.flg = SEM_UNDO; semop(s,&sb,1); } void signal(int S) { //analogicznie, tyle»e sb.sem_op = +1; } Kurs systemu UNIX 12
13 void delete(int S) { } semctl(s,0,ipc_rmd); void set(int S, int v) { semun su; su.val = v; semctl(s,0,setval, &su); } Kurs systemu UNIX 13
14 Watki i ich koordynacja w Pythonie Podstawowy moduł to threading, który korzysta z niskopoziomowego modułu thread. Przypomnienie: wątki dzielą pamięć, wykonują się współbieżnie lub równolegle. Program zakończy działanie, gdy zakończą się wszystkie niedemoniczne jego wątki. Kurs systemu UNIX 14
15 Tworzenie watków Wątek reprezentuje specjalna klasa o nazwie Thread. W konstruktorze można podawać argumenty: target obiekt wykonywalny (na przykład funkcja), czyli to, co wątek będzie robił. args lista argumentów, przekazanych funkcji target name nazwa wątku (sam się jakoś nazwie, jak nie podamy) W konstruktorze należy używać przekazywania parametrów za pomocą słów kluczowych. Metoda start uruchomi wątek. Kurs systemu UNIX 15
16 Zamki (klasa Lock) Zamki mają funkcjonalność prostych binarnych semaforów, które każdy może zamknąć bądź otworzyć. acquire może oznaczać zawieszenie wątku (jeżeli zamek jest zamknięty) release oznacza otwarce zamku i być może obudzenie wątku czekającego. Kurs systemu UNIX 16
17 Przykład: filozofowie #!/usr/local/bin/python import time,random from threading import * def pauza(): time.sleep(3*random.random()) def jedzenie(n): print n + " zaczyna jedzenie" pauza() print n + " ko«czy jedzenie" def myslenie(n): print n + " zaczyna my±lenie" pauza() print n + " ko«czy my±lenie" Kurs systemu UNIX 17
18 def filozof(i,n): while 1: L,P = i, (i+1) % 5 W[L].acquire(); W[P].acquire() jedzenie(n) W[P].release(); W[L].release() myslenie(n) print "Hej, zaczynamy!" imiona = [ 'Platon', 'Arystoteles', 'Newton', 'Wittgenstein', 'Kubu± Puchatek'] F = [] W = [] Kurs systemu UNIX 18
19 for i in range(5): F.append(Thread(target = filozof, args = (i,imiona[i]) ) ) W.add(Lock()) for fil in F: fil.start() time.sleep(30) print "Koniec pracy zarz dcy!" Kurs systemu UNIX 19
20 Inne możliwości Wątki opóźnione (klasa Timer) Prawdziwe semafory (niekonieczne binarne) Wysyłanie sygnałów pomiędzy wątkami (Event), możliwe oczekiwanie. Kurs systemu UNIX 20
21 Co moga chronić semafory? Pliki (w przypadku wspólnego dostępu). Pamięć dzieloną pomiędzy różne procesy. I wiele innych rzeczy. Kurs systemu UNIX 21
22 Pamięć dzielona Każdy proces ma własną przestrzeń adresową. Istnieje możliwość podłączenia jednego fragmentu fizycznej pamięci do przestrzeni adresowej więcej niż jednego procesu. Jest to najszybsza metoda komunikacji międzyprocesowej. Ale niestety nie daje żadnych mechanizmów koordynacyjnych należy to do programisty (może skorzystać z semaforów). Kurs systemu UNIX 22
23 Podstawowe funkcje dotyczace pamięci dzielonej shmget tworzy segment p.d. shmat dołącza segment p.d. do przestrzeni adresowej procesu. shdt odłącza pamięć od przestrzeni adresowej. shmctl steruje pamięcią dzieloną. Pliki nagłówkowe: #include <sys/shm.h> #include <sys/types.h> #include <sys/ipc.h> Kurs systemu UNIX 23
24 Tworzenie segmentu pamięci dzielonej Realizujemy funkcją: int shmget(key_t key, size_t size, int shmflg); Idea podobna co w przypadku semaforów, zwraca używany później identyfikator. Flagi ustalają prawa dostępu, można dodatkowo IPC_CREAT Mozna zatem tworzyć pamięć dzieloną taką, którą inni tylko czytają. Parametr size zawiera wielkość (w bajtach) pamięci. Kurs systemu UNIX 24
25 Dołaczanie i odłaczanie segmentu Realizujemy funkcjami: void *shmat(int shmid, const void *shmaddr, int shmflg); int shmdt(char *shmaddr); Pierwszy parametr shmat to identyfikator segmentu, drugi to adres pod którym chcemy podłączyć najlepiej 0, wówczas system sam wybierze. Funkcja zwraca adres pod którym pamięć została podłączona. Przykładowa flaga to SHM_RDONLY sprawiająca, że pamięć jest tylko do odczytu. Przy odłączaniu argumentem jest adres zwrócony przez shmat. Kurs systemu UNIX 25
26 Sterowanie Realizujemy funkcją: int shmctl(int shmid, int cmd, struct shmid_ds *buf); Znaczenie parametrów: identyfikator pamięci, numer komendy i specjalny bufor zawierający argumenty. Możliwe polecenia: 1) IPC_STAT w trzecim argumencie odczytuje się pewne dane, związane z buforem. 2) IPC_RMID usuwa się segment pamięci. Kurs systemu UNIX 26
27 Niektóre dane w smid_ds Czas ostatnich operacji shmat, shmctl, shmdt. PID twórcy, PID procesu, który ostatnio coś robił. Ile jest aktualnie dołączeń. Kurs systemu UNIX 27
28 Potoki procesowe Jedna z najprostszych metod pozwalających na przekazywanie danych między procesami. Polecenie FILE* popen(char* polecenie,char* tryb) uruchamia polecenie i umożliwia przekazywanie mu danych za pomocą operacji plikowych. Można również przechwytywać dane wyprodukowane przez inny proces. Tryb musi być równy "r" lub "w" (nie "rw"). Potok zamykamy poleceniem pclose. Kurs systemu UNIX 28
29 Jak sa implementowane potoki z poprzedniego slajdu Funkcja pipe stanowi mechanizm niższego poziomu, umożliwiający implementację (między innymi) polecenia popen. Ma następującą sygnaturę: #include <unistd.h> int pipe(int file_descriptor[2]); Zapisujemy do fd[1], a odczytujemy z fd[0]. Zorganizowane jako kolejka FIFO. Umożliwia komunikację spokrewnionych procesów (dlaczego?). Kurs systemu UNIX 29
30 Nazwane potoki Umożliwiają komunikację pomiędzy procesami niespokrewnionymi. Można utworzyć potok (skrzynkę komunikacyjną) poleceniem mkfifo. Można wykonać następującą sekwencję poleceń: mkfifo moje-fifo cat < moje_fifo & echo "Tekst do fifo" >> moje_fifo Polecenie mkfifo ma swój odpowiednik biblioteczny: int mkfifo(char *nazwa,int tryb). Kurs systemu UNIX 30
31 Używanie nazwanych potoków Otwieramy i zamykamy za pomocą funkcji (niskopoziomowych) open oraz close. W opcjach funkcji open możemy dać stałą O_NONBLOCK. Wtedy open zawsze kończy się od razu. W przeciwnym razie po otwarciu do czytania (O_RDONLY) czeka, aż ktoś otworzy do pisania i odwrotnie. Stała O_NONBLOCK wpływa również nadziałanie funkcji read i write w przypadku czytania z pustego i pisania do pełnego potoku. Uwaga: komunikację dwustronną najlepiej zrealizować za pomocą dwóch potoków. Kurs systemu UNIX 31
32 Kolejki komunikatów pobieżnie Jest to alternatywny mechanizm w stosunku do nazwanych potoków. Podobnie jak przy semaforach i pamieci dzielonej kolejkę identyfikuje klucz (liczba całkowita) oraz lokalny identyfikator. Funkcje obsługujące to msgget, msgsnd, msgrcv, msgctl, zadeklarowane w pliku sys/msg.h. Funkcje te zajmują się otwieraniem, wysyłaniem, odbieraniem oraz obsługą kolejek komunikatów. Kurs systemu UNIX 32
33 Na liście jest zadanie......napisania prostej aplikacji klient-serwer, wykorzystuącej różne mechanizmy komunikacji: a) semafory + pamięć dzielona, b) nazwane potoki, c) kolejki komunikatów, d) gniazda Kurs systemu UNIX 33
Mechanizmy z grupy IPC
Mechanizmy z grupy IPC Podobnie jak łącza, IPC (Inter Process Communication) jest grupą mechanizmów komunikacji i synchronizacji procesów działających w ramach tego samego systemu operacyjnego. W skład
Bardziej szczegółowoPamięć współdzielona
Pamięć współdzielona Systemy Operacyjne 2 Piotr Zierhoffer 17 listopada 2011 Mechanizmy IPC IPC Inter Process Communication kolejki komunikatów, pamięć współdzielona semafory polecenia bash: ipcs, ipcrm
Bardziej szczegółowoproblemu producenta i konsumenta z ograniczonym buforem cyklicznym. Wszystkie funkcje dotyczace
37 5 Mechanizmy IPC Mechanizmy IPC (ang. Interprocess Communication) obejmuja pamieć wspó ldzielona, semafory i kolejki komunikatów. Semafory sa raczej mechanizmem synchronizacji, niż komunikacji procesów.
Bardziej szczegółowoTemat zajęć: Mechanizmy IPC: kolejki komunikatów.
Temat zajęć: Mechanizmy IPC: kolejki komunikatów. Czas realizacji zajęć: 90 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Tworzenie kolejek komunikatów, wysyłanie i odbieranie komunikatów,
Bardziej szczegółowoSemafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem);
Semafory przypomnienie semafory służą ochronie dostępu procesów do sekcji krytycznej; na semaforach dostępne są dwie operacje: podniesienie semafora signal, opuszczenie semafora wait opuszczony semafor
Bardziej szczegółowoIPC: Kolejki komunikatów
IPC: Kolejki komunikatów Systemy Operacyjne 2 laboratorium Mateusz Hołenko 7 listopada 2011 Plan zajęć 1 Mechanizmy IPC kolejki komunikatów pamięć współdzielona semafory 2 Kolejki komunikatów kolejka komunikat
Bardziej szczegółowoMechanizmy z grupy IPC
Mechanizmy z grupy IPC Podobnie jak łącza, IPC (Inter Process Communication) jest grupą mechanizmów komunikacji i synchronizacji procesów działających w ramach tego samego systemu operacyjnego. W skład
Bardziej szczegółowoProgramowanie Współbieżne. Komunikacja między procesowa IPC
Programowanie Współbieżne Komunikacja między procesowa IPC IPC W systemie V są 3 rodzaje komunikacji między procesowej. kolejki komunikatów semafory pamięć wspólna IPC plik nagłówkowy funkcja systemowa
Bardziej szczegółowoInstrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie piąte (jedne zajęcia) Temat: Semafory Opracowanie: mgr in ż. Arkadiusz Chrobot dr in ż. Grzegorz Łukawski Wprowadzenie 1. Semafory
Bardziej szczegółowoTemat zajęć: Mechanizmy IPC: semafory
Temat zajęć: Mechanizmy IPC: semafory Czas realizacji zajęć: 90 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Zasada działania semaforów binarnych i uogólnionych, tworzenie semaforów,
Bardziej szczegółowoShared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.
Shared memory and messages Shared memory vs message passing Shared memory - C functions Shared memory - example program Message queues - C functions Message queues - example program process 0 process 1
Bardziej szczegółowoInstrukcja do laboratorium Systemów Operacyjnych (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) wiczenie trzecie Temat: Potoki i ł cza nazwane w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Komunikacja z wykorzystaniem
Bardziej szczegółowoFunkcje jadra systemu operacyjnego UNIX
Funkcje jadra systemu operacyjnego UNIX Dariusz Wawrzyniak IIPP 29 września 2009 Plan Wstęp Pliki Procesy Łacza Mechanizmy IPC Sygnały Plan Wstęp Pliki Procesy Łacza Mechanizmy IPC Sygnały Funkcje systemowe
Bardziej szczegółowoŁącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.
Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int
Bardziej szczegółowoFunkcje jadra systemu operacyjnego UNIX
Funkcje jadra systemu operacyjnego UNIX Dariusz Wawrzyniak IIPP 29 września 2009 Plan 1 Wstęp 2 Pliki 3 Procesy 4 Łacza 5 Mechanizmy IPC 6 Sygnały Funkcje jadra systemu operacyjnego UNIX 29 września 2009
Bardziej szczegółowoKolejki FIFO (łącza nazwane)
Kolejki FIFO (łącza nazwane) Systemy Operacyjne 2 laboratorium Mateusz Hołenko 6 listopada 2011 Plan zajęć 1 Łącza w systemie Linux kolejki FIFO vs. potoki specyfika łączy nazwanych schemat komunikacji
Bardziej szczegółowo1. Utwórz blok pamięci współdzielonej korzystając z poniższego kodu:
6 Pamięć współdzielona 6.1 Dostęp do pamięci współdzielonej 1. Utwórz blok pamięci współdzielonej korzystając z poniższego kodu: #include #include #include #include
Bardziej szczegółowoezykach wysokiego poziomu (Dijkstra, 1965). semaphore semaphore S; Operacje na semaforze:
c Wies law P laczek 18 5 Semafory 5.1 Poj ecia ogólne Semafor pierwszymechanizmsynchronizacyjnywj ezykach wysokiego poziomu (Dijkstra 1965). semaphore semaphore S; Operacje na semaforze: abstrakcyjny typ
Bardziej szczegółowoKomunikacja 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ółowoPliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:
Pliki W celu wykonania jakiejkolwiek operacji na istniejącym pliku, plik ten musi zostać otwarty, natomiast jeśli plik jeszcze nie istnieje, to musi zostać utworzony. Plik może zostać otwarty w trybie:
Bardziej szczegółowoInstrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie trzecie (jedne zajęcia) Temat: Potoki i łącza nazwane w Linuksie. Opracowanie: dr in ż. Arkadiusz Chrobot Wprowadzenie 1. Komunikacja
Bardziej szczegółowoInstytut Teleinformatyki
Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych IPC Systemu V laboratorium: 08 Kraków, 2014 08. Programowanie Usług Sieciowych
Bardziej szczegółowoLaboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak
Laboratorium z systemów operacyjnych System plików - funkcje systemowe Anna Wojak 1 Zagadnienia do samodzielnego przygotowania: podstawowe polecenia linux, podstawy programowania w jezyku C, deskryptor
Bardziej szczegółowoProgramowanie równoległe w POSIX API. PRiR, wykład 3
Programowanie równoległe w POSIX API PRiR, wykład 3 1 Plan Ogólnie o wsparciu PR Co to jest POSIX POSIX API dla PR Procesy Wątki Komunikacja Przykład 2 Narzędzia wspierające PR System operacyjny efektywne
Bardziej szczegółowoSystemy 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ółowoProgramowanie 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ółowoZaawansowany 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ółowoSYSTEMY CZASU RZECZYWISTEGO - VxWorks
WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja()
Bardziej szczegółowoSemafory w systemie Unix
Semafory w systemie Unix Pakiet IPC wprowadzony w Uniksie Systemu V UR]SRZV]HFKQLáVL ZNROHMQ\FKZDULDQWDFK8QLNVDWDN HZ wydaniach BSD) 8GRVW SQLDWU]\PHFKDQL]P\: kolejki komunikatów semafory VHJPHQW\SDPL
Bardziej szczegółowoKurs rozszerzony języka Python
Wykład 6. 10 listopada 2017 Plan wykładu 1 2 3 Plan wykładu 1 2 3 Wszystko jest obiektem. Wszystko jest obiektem. A funkcje? Przykład def foo(x): return 2*x dir(foo) Przykład def foo(x): return 2*x dir(foo)
Bardziej szczegółowoSystemy Operacyjne 1 Laboratorium 3 Potoki i łącza nazwane w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot
Systemy Operacyjne 1 Laboratorium 3 Potoki i łącza nazwane w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot 15 października 2016 Wstęp W tej instrukcji zawarte są informacje na temat jednych z podstawowych
Bardziej szczegółowoLaboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach
Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,
Bardziej szczegółowoProgramowanie 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ółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoJ. Ułasiewicz Programowanie aplikacji współbieżnych 1
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 9. Komunikacja przez pamięć dzieloną Metoda komunikacji przez wspólną pamięć może być użyta gdy procesy wykonywane są na maszynie jednoprocesorowej
Bardziej szczegółowoTemat 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ółowoKOLEJKI KOMUNIKATÓW IPC
z przedmiotu, prowadzonych na Wydziale BMiI, Akademii Techniczno-Humanistycznej w Bielsku-Białej. Współbieżność procesów (czy wątków) wiąże się często z potrzebą okresowej (asynchronicznej) wymiany komunikatów.
Bardziej szczegółowoSystemy operacyjne III
Systemy operacyjne III WYKŁAD 3 Jan Kazimirski 1 Współbieżność 2 Współbieżność Wielozadaniowość - zarządzanie wieloma procesami w ramach jednego CPU Wieloprocesorowość - zarządzanie wieloma zadaniami w
Bardziej szczegółowoObsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011
Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt
Bardziej szczegółowoOpis protokołu RPC. Grzegorz Maj nr indeksu:
Opis protokołu RPC Grzegorz Maj nr indeksu: 236095 1 Streszczenie Niniejszy dokument opisuje specyfikację protokołu RQP (Remote Queues Protocol). W jego skład wchodzą: opis celów protokołu; opis założeń
Bardziej szczegółowoProgramowanie w ANSI C z wykorzystaniem funkcji jądra systemu UNIX/Linux
1 Programowanie w ANSI C z wykorzystaniem funkcji jądra systemu UNIX/Linux Programowanie Współbieżne (dawniej Systemy Operacyjne II) Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika
Bardziej szczegółowoSemafory, pamięć dzielona i kolejki komunikatów
Semafory, pamięć dzielona i kolejki komunikatów dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/
Bardziej szczegółowoKrótki kurs programowania współbieżnego
Krótki kurs programowania współbieżnego Procesy i sygnały w językach C oraz Python Semafory i pamięć dzielona (język C) Uproszczony semafor z Pythona Inne metody komunikowania urs systemu UNIX 1 Ale najpierw
Bardziej szczegółowo4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane
Jędrzej Ułasiewicz Łącza nienazwane, nazwane, funkcja select 1 4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane Łącza nienazwane (ang. Unnamed Pipes) i nazwane (ang. Named Pipes) - jedna
Bardziej szczegółowoKurs 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ółowoMechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
Bardziej szczegółowoAutor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Bardziej szczegółowoInstrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie czwarte (dwa zajęcia) Temat: Komunikacja IPC kolejki komunikatów Opracowanie: mgr in ż. Arkadiusz Chrobot dr in ż. Grzegorz Łukawski
Bardziej szczegółowoLinux Kernel III. Character devices
Linux Kernel III Character devices Urządzenia systemu Linux (I) Character device Block device Network device Do urządzenia piszemy jak do pliku, Dozwolone działania: open, close, read, write, Np. /dev/tty1.
Bardziej szczegółowoKurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017
Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.
Bardziej szczegółowoKamil Wróbel* Politechnika Lubelska, Instytut Informatyki, Nadbystrzycka 36B, Lublin, Polska
JCSI 11 (2019) 149-154 Wysłane: 2019-04-01 Przyjęte: 2019-04-05 Analiza porównawcza wybranych zagadnień programowania wymagających komunikacji międzyprocesowej i międzywątkowej Kamil Wróbel* Politechnika
Bardziej szczegółowoAplikacje w Javie- wykład 11 Wątki-podstawy
1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/
Bardziej szczegółowoSimulator of Operating System
Mechanizmy stosowane w systemach operacyjnych system dydaktyczny Simulator of Operating System Sebastian Świerczyna Promotor: dr inż. Jarosław Bilski Politechnika Częstochowska Wydział Inżynierii Mechanicznej
Bardziej szczegółowoWą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ółowo4.2 Sposób korzystania z l acza
4.2 Sposób korzystania z l acza 31 Opis programu: Program procesu potomnego (linie 16 19) jest taki sam, jak w przyk ladzie na listingu 3. W procesie macierzystym nastepuje z kolei przekierowanie standardowego
Bardziej szczegółowoStruktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Bardziej szczegółowo1. Tworzenie nowego projektu.
Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty
Bardziej szczegółowoROZPROSZONE SYSTEMY OPERACYJNE. Niezawodne usługi w rozwiązaniach SSI dokumentacja projektu. Karol Ostrowski 16 czerwca 2005
ROZPROSZONE SYSTEMY OPERACYJNE Niezawodne usługi w rozwiązaniach SSI dokumentacja projektu Karol Ostrowski 16 czerwca 2005 1 SPIS TREŚCI Spis treści 1 Wstęp 3 1.1 Kryteria oceny.............................
Bardziej szczegółowoMetody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany
Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany plik. boolean exists() sprawdza czy plik o zadanej nazwie
Bardziej szczegółowoWstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2016/2017 Outline Moduły i bariery abstrakcji 1 Moduły i bariery abstrakcji Moduły co to jest i po co to jest? Duży system dzielimy na mniejsze, łatwiejsze
Bardziej szczegółowoProgramowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska
Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Mechanizm synchronizacji wątków/procesów Wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoWspół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ółowo76.Struktura oprogramowania rozproszonego.
76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie
Bardziej szczegółowoPrzetwarzanie 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ółowoProgramowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,
Bardziej szczegółowoĆwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim
Bardziej szczegółowoWykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty
Bardziej szczegółowo1 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Łącza nienazwane(potoki)
8. Łącza nienazwane(potoki) Łącze (potok, ang. pipe) jest to urządzenie komunikacyjne pozwalające na przesyłanie informacji w jedną stronę. Jeden proces wysyła dane do łącza za pomocą funkcji write, zaś
Bardziej szczegółowoSystem plików warstwa logiczna
Dariusz Wawrzyniak Pojęcie u Plik jest abstrakcyjnym obrazem informacji gromadzonej i udostępnianej przez system komputerowy. Plik jest podstawową jednostką logiczną magazynowania informacji w systemie
Bardziej szczegółowoKurs programowania. Wykład 8. Wojciech Macyna
Wykład 8 Program bez watków, jeden procesor, trzy zadania Program z watkami, jeden procesor, trzy zadania Procesory wielordzeniowe, każde zadanie na osobnym procesorze Trzy zadania uruchomione w watkach
Bardziej szczegółowoAplikacja Sieciowa wątki po stronie klienta
Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się
Bardziej szczegółowoFunkcje zawarte w bibliotece < io.h >
PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoIngerencja 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ółowoTechniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Standardowa biblioteka szablonów (Standard Template
Bardziej szczegółowo1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
Bardziej szczegółowoWspół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ółowoJ. Ułasiewicz Łącza nienazwane, nazwane, select 1
J. Ułasiewicz Łącza nienazwane, nazwane, select 1 4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane Łącza nienazwane (ang. Unnamed Pipes) i nazwane (ang. Unnamed Pipes) - jedna z historycznie
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoTemat zajęć: Obsługa łączy komunikacyjnych
Temat zajęć: Obsługa łączy komunikacyjnych Czas realizacji zajęć: 180 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: I. Łącza komunikacyjne Potoki nienazwane, potoki nazwane, przykłady
Bardziej szczegółowoLekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()
Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,
Bardziej szczegółowoPamięć dzielona i kolejki komunikatów
Pamięć dzielona i kolejki komunikatów dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/
Bardziej szczegółowoObsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli
Bardziej szczegółowoPliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego
Bardziej szczegółowo7 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 7 1/5 Język C Instrukcja laboratoryjna Temat: Operacje na plikach. 7 Przygotował: mgr inż. Maciej Lasota 1) Pliki. Plik (ang. file), jest to nazwany ciąg danych (inaczej zbiór danych),
Bardziej szczegółowo1. Kolejki komunikatów POSIX
Jędrzej Ułasiewicz IIAiR Politechnika Wrocławska 1 1. Kolejki komunikatów POSIX 1.1 Podstawowe własności Kolejki FIFO maja następujące wady: Komunikaty pozbawione struktury Nie można testować stanu kolejki
Bardziej szczegółowoE S - uniwersum struktury stosu
Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów
Bardziej szczegółowo2 Implementacja w systemie Linux 2.4
1 IPC IPC (InterProcess Communication) to udostępniane przez jądro systemu operacyjnego mechanizmy służące komunikacji oraz współdzieleniu zasobów i informacji pomiędzy procesami. IPC Systemu V udostępnia
Bardziej szczegółowoKolejki komunikatów POSIX
Jędrzej Ułasiewicz IIAiR Politechnika Wrocławska 1 Kolejki komunikatów POSIX 1 Wstęp Kolejka komunikatów Q posiada następujące własności: - Posiada określoną pojemność N komunikatów (długość bufora komunikatów).
Bardziej szczegółowoDynamiczne struktury danych
Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie
Bardziej szczegółowoFunkcje zawarte w bibliotece < io.h >
PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece
Bardziej szczegółowoSemafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post
Bardziej szczegółowoFutex (Fast Userspace Mutex) Łukasz Białek
Futex (Fast Userspace Mutex) Łukasz Białek Futex informacje podstawowe Stworzony w 2002 roku przez Hubertusa Franke, Matthew Kirkwooda, Ingo Molnára i Rustiego Russella. Jest mechanizmem w Linuxie, który
Bardziej szczegółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Bardziej szczegółowoWykł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ółowo13. Kolejki komunikatów POSIX
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 13. POSIX 13.1 Wstęp (mailboxy, bufory) są bardzo popularnym mechanizmem komunikacji międzyprocesowej. Występują w prawie każdym systemie operacyjnym.
Bardziej szczegółowoSYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017
Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2014-2018 realizacja w roku akademickim 2016/2017 1.1. PODSTAWOWE INFORMACJE O PRZEDMIOCIE/MODULE Nazwa przedmiotu/ modułu
Bardziej szczegółowo