Mechanizmy komunikacji i synchronizacji
|
|
- Kamil Sikorski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Mechanizmy komunikacji i synchronizacji Witold Paluszyński Instytut Informatyki, Automatyki i Robotyki Politechnika Wroc lawska ,2015 Ten utwór jest dostepny na licencji Creative Commons Uznanie autorstwa- Na tych samych warunkach 3.0 Unported Utwór udostepniany na licencji Creative Commons: uznanie autorstwa, na tych samych warunkach. Udziela sie zezwolenia do kopiowania, rozpowszechniania i/lub modyfikacji treści utworu zgodnie z zasadami w/w licencji opublikowanej przez Creative Commons. Licencja wymaga podania oryginalnego autora utworu, a dystrybucja materia lów pochodnych może odbywać sie tylko na tych samych warunkach (nie można zastrzec, w jakikolwiek sposób ograniczyć, ani rozszerzyć praw do nich).
2
3 Procesy Procesy umożliwiaja w systemach operacyjnych (quasi)równoleg le wykonywanie wielu zadań. Moga być wykonywane naprzemiennie i/lub jednocześnie. Zatem system operacyjny musi to (quasi)równoleg le wykonywanie zapewnić. Poza tym musi umożliwić procesom pewne operacje, których nie moga one sobie zapewnić same, np. dostep do globalnych zasobów systemu jak port komunikacyjny. Idac dalej, systemy operacyjne moga również dostarczać procesom dalszych us lug, jak np. komunikacja miedzyprocesowa, a także pewnych funkcji synchronizacji, jak blokady, semafory, itp. Mechanizmy komunikacji i synchronizacji wstep 3
4 Proces uniksowy i jego środowisko Proces uniksowy jest wykonywalnym programem za ladowanym do pamieci operacyjnej komputera. Każdy proces uniksowy wykonuje sie we w lasnej wirtualnej przestrzeni adresowej. Proces jest normalnie tworzony z trzema otwartymi plikami: stdin, stdout i stderr przypisanymi do terminala użytkownika interakcyjnego. Jadro Uniksa utrzymuje tablice wszystkich istniejacych procesów wraz z zestawem informacji kontekstowych o nich, np. zestawem otwartych plików, terminalem sterujacym, priorytetem, maska sygna lów, i innymi. Proces posiada środowisko, które jest zestawem dostepnych dla procesu zmiennych środowiskowych z wartościami (tekstowymi). Środowisko nazywa sie zewnetrznym ponieważ jest poczatkowo tworzone dla procesu przez system, a potem jest również dostepne na zewnatrz procesu. Proces tworzony jest z zestawem argumentów wywo lania programu, który jest wektorem stringów Proces charakteryzuja: pid, ppid, pgrp, uid, euid, gid, egid Mechanizmy komunikacji i synchronizacji wstep 4
5 Stany procesów model ogólny Po pe lnym zainicjalizowaniu procesu, jest on wielokrotnie (być może) przenoszony pomiedzy stanem gotowości (ready) i wykonywanym (running). Przenoszenie wykonywane jest przez system planowania (inaczej: szeregowania) systemu operacyjnego, który zarzadza wykorzystaniem procesora (procesorów, lub rdzeni). Okresowo proces może zażadać od systemu dostepu do jakichś zasobów, albo zainicjować operacje wejścia/wyjścia. Jeśli to żadanie nie może być od razu zrealizowane (np. żadanych danych jeszcze nie ma), wykonywanie procesu musi zostać wstrzymane, i przechodzi on do stanu oczekiwania (waiting, w terminologii uniksowej jest to stan uśpienia). Gdy tylko możliwe jest wykonanie operacji I/O, lub spe lnienie żadania procesu, zostaje on ponownie przeniesiony do kolejki gotowych. Mechanizmy komunikacji i synchronizacji wstep 5
6 Stany procesów model Unix stan ang. znaczenie wykonywalny runnable proces w kolejce do wykonywania uśpiony sleeping proces czeka na dostep do zasobu wymieciony swapped-out proces usuniety z pamieci nieusuwalny zombie proces nie może sie zakończyć zatrzymany stopped wykonywanie wstrzymane sygna lem Wymiatanie procesów ma zwiazek z funkcjonowaniem pamieci wirtualnej i jest objawem posiadania niewystarczajacej ilości pamieci przez system. (Podstawowym mechanizmem odzyskiwania pamieci fizycznej jest stronicowanie). Wymiatanie polega na wytypowaniu pojedynczego procesu i chwilowym usunieciu go z kolejki procesów wykonujacych sie w celu odzyskania przydzielonej mu pamieci. Proces wymieciony jest normalnie w jednym z pozosta lych stanów, lecz zosta l usuniety z pamieci i aż do chwili ponownego za ladowania nie może zmienić stanu. System przenosi proces w stan uśpienia jeśli nie może mu czegoś dostarczyć, np. dostepu do pliku, danych, itp. W stanie uśpienia proces nie zużywa czasu procesora, i jest budzony i wznawiany w sposób przez siebie niezauważony. Mechanizmy komunikacji i synchronizacji wstep 6
7 Tworzenie procesów Procesy tworzone sa zawsze przez klonowanie istniejacego procesu, zatem każdy proces posiada tzw. proces nadrzedny, lub inaczej rodzicielski (parent process), który go utworzy l. Wyjatkiem jest proces numer 1, utworzony przez jadro Uniksa, i wykonujacy program init, który jest protoplasta wszystkich innych procesów w systemie. Proces potomny lacz a ścis le zwiazki z jego procesem rodzicielskim. Potomek dziedziczy szereg atrybutów procesu nadrzednego: należy do tego samego użytkownika i grupy użytkowników, ma poczatkowo ten sam katalog bieżacy, otrzymuje środowisko, które jest kopia środowiska rodzica, ma te sama sesje i terminal sterujacy, należy do tej samej grupy procesów, dziedziczy maske sygna lów i handlery, ograniczenia zasobów, itp. Poza dziedziczeniem atrybutów rodzica, potomek wspó ldzieli z nim pewne zasoby, z których najważniejszymi sa otwarte pliki. Objawy tego można latwo zauważyć, gdy procesy uruchamiane przez interpreter poleceń moga czytać z klawiatury i pisać na ekranie, a gdy jest kilka procesów uruchomionych w tle, to ich operacje wejścia/wyjścia moga sie mieszać. (Innymi wspó ldzielonymi obiektami sa otwarte wspólne obszary pamieci.) Mechanizmy komunikacji i synchronizacji wstep 7
8 Kończenie pracy procesów status procesu Proces uniksowy kończy sie normalnie albo anormalnie (np. przez otrzymanie sygna lu). W chwili zakończenia pracy proces generuje kod zakończenia, tzw. status, który jest wartościa zwracana z funkcji main() albo exit(). W przypadku śmierci z powodu otrzymania sygna lu statusem jest wartość 128+nr sygna lu. Po śmierci procesu jego rodzic normalnie powinien odczytać status potomka wywo luj ac funkcje systemowa wait (lub waitpid). Aby to u latwić, w nowszych systemach w chwili śmierci potomka jego rodzic otrzymuje sygna l SIGCLD (domyślnie ignorowany). Dopóki status nie zostanie przeczytany przez rodzica, proces nie może zginać do końca i pozostaje w stanie zwanym zombie. W tym stanie zakończony proces może pozostawać przez czas nieograniczony, co może być przyczyna wyczerpania jakichś zasobów systemu (np. zape lnienia tablicy procesów). Istnieje mechanizm adopcji polegajacy na tym, że procesy, których rodzic zgina l przed nimi (sieroty), zostaja adoptowane przez proces nr 1 (init). init wywo luje okresowo funkcje wait aby umożliwić poprawne zakończenie swoich potomków (zarówno naturalnych jak i adoptowanych). Mechanizmy komunikacji i synchronizacji wstep 8
9 Tworzenie procesów funkcja fork switch (pid = fork()) { case -1: fprintf(stderr, "Blad, nieudane fork, errno=%d\n", errno); exit(-1); case 0: /* jestem potomkiem, teraz sie przeobraze... */ execlp("program", "program", NULL); fprintf(stderr, "Blad, nieudane execlp, errno=%d\n", errno); _exit(0); default: /* jestem szczesliwym rodzicem... */ fprintf(stderr, "Sukces fork, pid potomka = %d\n", pid); wait(null); } Mechanizmy komunikacji i synchronizacji wstep 9
10 Tworzenie procesów funkcja fork (cd.) Funkcja fork tworzy podproces, który jest kopia procesu macierzystego. Od momentu utworzenia oba procesy pracuja równolegle i kontynuuja wykonywanie tego samego programu. Jednak funkcja fork zwraca w każdym z nich inna wartość. Poza tym różnia sie identyfikatorem procesu PID (rodzic zachowuje oryginalny PID, a potomek otrzymuje nowy). Po sklonowaniu sie podproces może wywo lać jedna z funkcji grupy exec i rozpoczać w ten sposób wykonywanie innego programu. Po sklonowaniu sie oba procesy wspó ldziela dostep do plików otwartych przed sklonowaniem, w tym do terminala (plików stdin, stdout, stderr). Funkcja fork jest jedyna metoda tworzenia nowych procesów w systemach uniksowych. Mechanizmy komunikacji i synchronizacji wstep 10
11 Dziedziczone (podproces posiada kopie atrybutu procesu): real i effective UID i GID, proces group ID (PGRP) kartoteka bieżaca i root środowisko maska tworzenia plików (umask) maska sygna lów i handlery ograniczenia zasobów W lasności procesu i podprocesu Różne: PID, PPID wartość zwracana z funkcji fork blokady plików nie sa dziedziczone ustawiony alarm procesu nadrzednego jest kasowany dla podprocesu zbiór wys lanych (ale nieodebranych) sygna lów jest kasowany dla podprocesu Atrybuty procesu, które nie zmieniaja sie po exec: Wspólne (podproces wspó ldzieli atrybut/zasób z procesem): terminal i sesja otwarte pliki (deskryptory) otwarte wspólne obszary pamieci PID, PPID, UID(real), GID(real), PGID terminal, sesja ustawiony alarm z biegnacym czasem kartoteka bieżaca i root maska tworzenia plików (umask) maska sygna lów i oczekujace (nieodebrane) sygna ly blokady plików ograniczenia zasobów Mechanizmy komunikacji i synchronizacji wstep 11
12 Mechanizmy komunikacji i synchronizacji wstep 12
13 Sygna ly Sygna ly sa mechanizmem asynchronicznego powiadamiania procesów przez system o b ledach i innych zdarzeniach. Domyślna reakcja procesu na otrzymanie wiekszości sygna lów jest natychmiastowe zakończenie pracy, czyli śmierć procesu. Oryginalnie sygna ly mia ly s lużyć do sygnalizowania b ledów i sytuacji nie dajacych sie skorygować. Niektóre sygna ly powoduja również, tuż przed uśmierceniem procesu, wykonanie zrzutu jego obrazu pamieci do pliku dyskowego o nazwie core. Proces może zadeklarować w lasna procedure obs lugi, ignorowanie sygna lu, albo czasowe wstrzymanie otrzymania sygna lu (z wyjatkiem sygna lów SIGKILL i SIGSTOP, których nie można przechwycić, ignorować, ani wstrzymywać). Proces może również przywrócić reakcje domyślna. W trakcie wieloletniego rozwoju systemów uniksowych mechanizm sygna lów wykorzystywano do wielu innych celów, i wiele sygna lów nie jest już w ogóle zwiazanych z b ledami. Zatem niektóre sygna ly maja inne reakcje domyślne, na przyk lad sa domyślnie ignorowane. Mechanizmy komunikacji i synchronizacji sygna ly 13
14 nr nazwa domyślnie zdarzenie 1 SIGHUP śmierć roz laczenie terminala sterujacego 2 SIGINT śmierć przerwanie z klawiatury (zwykle: Ctrl-C) 3 SIGQUIT zrzut przerwanie z klawiatury (zwykle: Ctrl-\) 4 SIGILL zrzut nielegalna instrukcja 5 SIGTRAP zrzut zatrzymanie w punkcie kontrolnym (breakpoint) 6 SIGABRT zrzut sygna l generowany przez funkcje abort 8 SIGFPE zrzut nadmiar zmiennoprzecinkowy 9 SIGKILL śmierć bezwarunkowe uśmiercenie procesu 10 SIGBUS zrzut b lad dostepu do pamieci 11 SIGSEGV zrzut niepoprawne odwo lanie do pamieci 12 SIGSYS zrzut b l ad wywo lania funkcji systemowej 13 SIGPIPE śmierć b l ad potoku: zapis do potoku bez odbiorcy 14 SIGALRM śmierć sygna l budzika (timera) 15 SIGTERM śmierć zakończenie procesu 16 SIGUSR1 śmierć sygna l użytkownika 17 SIGUSR2 śmierć sygna l użytkownika 18 SIGCHLD ignorowany zmiana stanu podprocesu (zatrzymany lub zakończony) 19 SIGPWR ignorowany przerwane zasilanie lub restart 20 SIGWINCH ignorowany zmiana rozmiaru okna 21 SIGURG ignorowany priorytetowe zdarzenie na gniazdku 22 SIGPOLL śmierć zdarzenie dotyczace deskryptora pliku 23 SIGSTOP zatrzymanie zatrzymanie procesu 24 SIGTSTP zatrzymanie zatrzymanie procesu przy dostepie do terminala 25 SIGCONT ignorowany kontynuacja procesu 26 SIGTTIN zatrzymanie zatrzymanie na próbie odczytu z terminala 27 SIGTTOU zatrzymanie zatrzymanie na próbie zapisu na terminalu 30 SIGXCPU zrzut przekroczenie limitu CPU 31 SIGXFSZ zrzut przekroczenie limitu rozmiaru pliku Mechanizmy komunikacji i synchronizacji sygna ly 14
15 Mechanizmy generowania sygna lów wyjatki sprzetowe: nielegalna instrukcja, nielegalne odwo lanie do pamieci, dzielenie przez 0, itp. (SIGILL, SIGSEGV, SIGFPE) naciskanie pewnych klawiszy na terminalu użytkownika (SIGINT, SIGQUIT) wywo lanie komendy kill przez użytkownika (SIGTERM, i inne) funkcje kill i raise mechanizmy software-owe (SIGALRM, SIGWINCH) Sygna ly moga być wysy lane do konkretnego pojedynczego procesu, do wszystkich procesów z danej grupy procesów, albo wszystkich procesów danego użytkownika. W przypadku procesu z wieloma watkami sygna l jest doreczany do jednego z watków procesu. Mechanizmy komunikacji i synchronizacji sygna ly 15
16 Obs luga sygna lów Proces może zadeklarować jedna z nastepuj acych możliwości reakcji na sygna l: ignorowanie, wstrzymanie doreczenia mu sygna lu na jakiś czas, po którym odbierze on wys lane w miedzyczasie sygna ly, obs luga sygna lu przez wyznaczona funkcje w programie, tzw. handler, przywrócenie domyślnej reakcji na dany sygna l. Typowa procedura obs lugi sygna lu przez funkcje handlera może wykonać jakieś niezbedne czynności (np. skasować pliki robocze), ale ostatecznie ma do wyboru: zakończyć proces, wznowić proces od miejsca przerwania, jednak niektórych funkcji systemowych nie można wznowić dok ladnie od miejsca przerwania, wznowić proces od miejsca przerwania z przekazaniem informacji przez zmienna globalna, wznowić proces od określonego punktu. Mechanizmy komunikacji i synchronizacji sygna ly 16
17 Komunikacja miedzyprocesowa potoki Potoki sa jednym z najbardziej podstawowych mechanizmów komunikacji miedzyprocesowej w systemach uniksowych. Potok jest urzadzeniem komunikacji szeregowej, jednokierunkowej, o nastepuj acych w lasnościach: na potoku można wykonywać tylko operacje odczytu i zapisu, funkcjami read i write, jak dla zwyk lych plików, potoki sa dostepne i widoczne w postaci jednego lub dwóch deskryptorów plików, oddzielnie dla końca zapisu i odczytu, potok ma określona pojemność, i w granicach tej pojemności można zapisywać do niego dane bez odczytywania, próba odczytu danych z pustego potoku, jak również zapisu ponad pojemność potoku, powoduje zawiśniecie operacji I/O (normalnie), i jej automatyczna kontynuacje gdy jest to możliwe; w ten sposób potok synchronizuje operacje I/O na nim wykonywane. Dobra analogia potoku jest rurka, gdzie strumień danych jest odbierany jednym końcem, a wprowadzany drugim. Gdy rurka sie zape lni i dane nie sa odbierane, nie można już wiecej ich wprowadzić. Mechanizmy komunikacji i synchronizacji potoki 17
18 Potoki: funkcja pipe Funkcja pipe tworzy tzw. anonimowy potok, dostepny w postaci dwóch otwartych i gotowych do pracy deskryptorów: #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #define KOM "Komunikat dla rodzica.\n" int main() { int potok_fd[2], licz, status; char bufor[bufsiz]; } pipe(potok_fd); if (fork() == 0) { write(potok_fd[1], KOM, strlen(kom)); exit(0); } close(potok_fd[1]); /* wazne */ while ((licz=read(potok_fd[0], bufor, BUFSIZ)) > 0) write(1, bufor, licz); wait(&status); return(status); Funkcja read zwraca 0 na próbie odczytu z potoku zamknietego do zapisu, lecz jeśli jakiś proces w systemie ma ten potok otwarty do zapisu to funkcja read zawisa na próbie odczytu. Mechanizmy komunikacji i synchronizacji potoki 18
19 Potoki: zasady użycia Potok (anonimowy) zostaje zawsze utworzony otwarty, i gotowy do zapisu i odczytu. Próba odczytania z potoku wiekszej liczby bajtów, niż sie w nim aktualnie znajduje, powoduje przeczytanie dostepnej liczby bajtów i zwrócenie w funkcji read() liczby bajtów rzeczywiście przeczytanych. Próba czytania z pustego potoku, którego koniec piszacy jest nadal otwarty przez jakiś proces, powoduje zawiśniecie funkcji read(), i powrót gdy jakieś dane pojawia sie w potoku. Czytanie z potoku, którego koniec piszacy zosta l zamkniety, daje natychmiastowy powrót funkcji read() z wartościa 0. Zapis do potoku odbywa sie poprawnie i bez czekania pod warunkiem, że nie przekracza pojemności potoku; w przeciwnym wypadku write() zawisa aż do ukończenia operacji. Próba zapisu na potoku, którego koniec czytajacy zosta l zamkniety, kończy sie porażka i proces piszacy otrzymuje sygna l SIGPIPE. Implementacja potoków w wiekszości wspó lczesnych systemów uniksowych zapewnia komunikacje dwukierunkowa. Jednak standard POSIX jednoznacznie określa potoki jako jednokierunkowe. Mechanizmy komunikacji i synchronizacji potoki 19
20 Mechanizmy komunikacji i synchronizacji potoki 20
21 Potoki nazwane (FIFO) istnieja trwale w systemie plików (mknod potok p) wymagaja otwarcia O_RDONLY lub O_WRONLY zawisaja na próbie otwarcia nieotwartego potoku (możliwe jest tylko jednoczesne otwarcie do odczytu i zapisu, przez dwa różne procesy) SERWER: #include <fcntl.h> #define FIFO "/tmp/potok_1" #define MESS \ "To jest komunikat serwera\n" void main() { int potok_fd; KLIENT: #include <fcntl.h> #define FIFO "/tmp/potok_1" void main() { int potok_fd, licz; char bufor[bufsiz]; } potok_fd = open(fifo, O_WRONLY); write(potok_fd, MESS, sizeof MESS); } potok_fd = open(fifo, O_RDONLY); while ((licz=read(potok_fd, bufor, BUFSIZ)) > 0) write(1, bufor, licz); Mechanizmy komunikacji i synchronizacji potoki 21
22 Operacje na FIFO Pierwszy proces otwierajacy FIFO zawisa na operacji otwarcia, która kończy sie gdy FIFO zostanie otwarte przez inny proces w komplementarnym trybie (O_RDONLY/O_WRONLY). Można wymusić nieblokowanie funkcji open() opcja O_NONBLOCK lub O_NDELAY, lecz takie otwarcie w przypadku O_WRONLY zwraca b lad. Próba odczytu z pustego FIFO w ogólnym przypadku zawisa gdy FIFO jest otwarte przez inny proces do zapisu, lub zwraca 0 gdy FIFO nie jest otwarte do zapisu przez żaden inny proces. To domyślne zachowanie można zmodyfikować ustawiajac flagi O_NDELAY i/lub O_NONBLOCK przy otwieraniu FIFO. RTFM. W przypadku zapisu zachowanie funkcji write nie zależy od stanu otwarcia FIFO przez inne procesy, lecz od zape lnienia buforów. Ogólnie zapisy krótkie moga sie zakończyć lub zawisnać gdy FIFO jest pe lne, przy czym możemy wymusić niezawisanie podajac opcje O_NDELAY lub O_NONBLOCK przy otwieraniu FIFO. Oddzielna kwestia jest, że d luższe zapisy do FIFO ( PIPE_BUF bajtów) moga mieszać sie z zapisami z innych procesów. Mechanizmy komunikacji i synchronizacji potoki 22
23 Potoki podsumowanie Potoki sa prostym mechanizmem komuniacji miedzyprocesowej opisane standardem POSIX i istniejacym w wielu systemach operacyjnych. Pomimo iż definicja określa potok jako mechanizm komunikacji jednokierunkowej, to wiele implementacji zapewnia komunikacje dwukierunkowa. Podstawowe zalety potoków to: brak limitów przesy lania danych, synchronizacja operacji zapisu i odczytu przez stan potoku. Praktycznie synchronizuje to komunikacje pomiedzy procesem, który dane do potoku zapisuje, a innym procesem, który chcia lby je odczytać, niezależnie który z nich wywo la swoja operacje pierwszy. Jednak nie ma żadnego mechanizmu umożliwiajacego synchronizacje operacji I/O pomiedzy procesami, które chcia lyby jednocześnie wykonać operacje odczytu, lub jednocześnie operacje zapisu. Z tego powodu należy uważać potoki za mechanizm komunikacji typu 1-1, czyli jeden do jednego. Komunikacja typu wielu-wielu przez potok jest utrudniona i wymaga zastosowania innych mechanizmów synchronizacji. Mechanizmy komunikacji i synchronizacji potoki 23
24 Mechanizmy komunikacji i synchronizacji potoki 24
25 Komunikacja miedzyprocesowa kolejki komunikatów Kolejki komunikatów sa mechanizmem komunikacji 1-1 o w lasnościach podobnych do potoków. Istnieje wiele wersji kolejek komunikatów z drobnymi różnicami. Zasadnicza różnica pojawia sie jednak ze wzgledu na fakt, że w pewnych systemach kolejki komunikatów zosta ly zaimplementowane jako urzadzenia sieciowe. Pozwalaja one komunikować sie procesom wykonujacym sie na różnych komputerach. Stanowia zatem mechanizm komunikacji miedzyprocesowej dla systemów rozproszonych. W tych systemach takie kolejki komunikatów moga stanowić bazowy mechanizm, na podstawie którego implementowane sa mechanizmy komunikacyjne wyższego poziomu. Mechanizmy komunikacji i synchronizacji kolejki komunikatów 25
26 Mechanizmy komunikacji i synchronizacji kolejki komunikatów 26
27 Komunikacja miedzyprocesowa gniazdka Gniazdka sa innym mechanizmem komunikacji dwukierunkowej typu 1-1 przeznaczonym zarówno do komunikacji miedzyprocesowej w ramach jednego komputera, lub miedzy procesami na różnych komputerach za pośrednictwem sieci komputerowej. Zasadnicza różnica pomiedzy gniazdkami a potokami i kolejkami komunikatów polega na nawiazywaniu po laczenia. Potoki i kolejki komunikatów sa zawsze tworzone jako gotowe lacza komunikacyjne posiadajace dwa końce do których uzyskuja dostep procesy. Gniazdko jest jakby jednym końcem lacza komunikacyjnego. Przed rozpoczeciem komunikacji konieczne jest jego po laczenie z innym gniazdkiem stworzonym na tym samym komputerze, lub innym, po laczonym z nim siecia. Ze wzgledu na ten proces nawiazywania po laczenia, gniazdka wykorzystywane sa na ogó l w trybie komunikacji klient-serwer. Mechanizmy komunikacji i synchronizacji gniazdka 27
28 Gniazdka domeny Unix: podstawowe zasady Gniazdka sa deskryptorami plików umożliwiajacymi dwukierunkowa komunikacje w konwencji po laczeniowej (strumień bajtów) lub bezpo laczeniowej (przesy lanie pakietów), w ramach jednego systemu lub przez sieć komputerowa, np. protoko lami Internetu. Model po laczeniowy dla gniazdek domeny Unix dzia la podobnie jak komunikacja przez potoki, m.in. system synchronizuje prace komunikujacych sie procesów. Stosowanie modelu bezpo laczeniowego w komunikacji miedzyprocesowej nie jest odporne na przepe lnienie buforów w przypadku procesów pracujacych z różna szybkościa; w takim przypadku lepsze jest zastosowanie modelu po laczeniowego, w którym komunikacja automatycznie synchronizuje procesy. W komunikacji miedzyprocesowej (gniazdka domeny Unix) adresy określane sa przez ścieżki plików na dysku komputera, co umożliwia og loszenie adresu serwera. W ogólnym przypadku (wyjawszy pary gniazdek po laczonych funkcja socketpair) komunikowanie sie za pomoca gniazdek wymaga utworzenia i wype lnienia struktury adresowej. Mechanizmy komunikacji i synchronizacji gniazdka 28
29 Gniazdka domeny Unix: funkcja socketpair W najprostszym przypadku gniazdka domeny Unix pozwalaja na realizacje komunikacji podobnej do anonimowych potoków. Funkcja socketpair tworzy pare gniazdek po laczonych podobnie jak funkcja pipe tworzy potok. Jednak gniazdka zawsze zapewniaja komunikacje dwukierunkowa: #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> int main() { int gniazdka[2]; char buf[bufsiz]; socketpair(pf_unix, SOCK_STREAM, 0, gniazdka) if (fork() == 0) { /* potomek */ close(gniazdka[1]); write(gniazdka[0], "Uszanowanie dla rodzica", 23); read(gniazdka[0], buf, BUFSIZ) printf("potomek odczytal: %s\n", buf); close(gniazdka[0]); } else { /* rodzic */ close(gniazdka[0]); read(gniazdka[1], buf, BUFSIZ) printf("rodzic odczytal %s\n", buf); write(gniazdka[1], "Pozdrowienia dla potomka", 24); close(gniazdka[1]); } } Mechanizmy komunikacji i synchronizacji gniazdka 29
30 Gniazdka SOCK STREAM: serwer #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/un.h> #include <sys/socket.h> int main() { int serv_sock, cli_sock; struct sockaddr_un addr_str; serv_sock = socket(pf_unix, SOCK_STREAM, 0); addr_str.sun_family = AF_UNIX; strcpy(addr_str.sun_path, "gniazdko_serwera"); unlink("gniazdko_serwera"); bind(serv_sock, (struct sockaddr *) &addr_str, sizeof(addr_str)); listen(serv_sock, 5); /* kolejkowanie polaczen */ while(1) { /* petla oczek.na polaczenie */ char buf; cli_sock = accept(serv_sock,0,0); /* polacz.zamiast adr.klienta*/ read(cli_sock, &buf, 1); /* obsluga klienta: */ buf++; /*... generujemy odpowiedz */ write(cli_sock, &buf, 1); /*... wysylamy */ close(cli_sock); /*... koniec */ } } Mechanizmy komunikacji i synchronizacji gniazdka 30
31 Gniazdka SOCK STREAM: klient #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/un.h> #include <sys/socket.h> int main() { int sock; struct sockaddr_un addr_str; char buf = A ; } sock = socket(pf_unix, SOCK_STREAM, 0); addr_str.sun_family = AF_UNIX; strcpy(addr_str.sun_path, "gniazdko_serwera"); if (connect(sock, (struct sockaddr *) &addr_str, sizeof(addr_str)) == -1){ perror("blad connect"); return -1; } write(sock, &buf, 1); read(sock, &buf, 1); printf("znak od serwera = %c\n", buf); close(sock); return 0; Mechanizmy komunikacji i synchronizacji gniazdka 31
32 Gniazdka SOCK DGRAM: klient #include <unistd.h> #include <string.h> #include <sys/un.h> #include <sys/socket.h> int main() { int sock, serv_len, cli_len; struct sockaddr_un serv_addrstr, cli_addrstr; char ch = A ; unlink("gniazdko_klienta"); sock = socket(pf_unix, SOCK_DGRAM, 0); cli_addrstr.sun_family = AF_UNIX; strcpy(cli_addrstr.sun_path, "gniazdko_klienta"); cli_len = sizeof(cli_addrstr); bind(sock, (struct sockaddr *) &cli_addrstr, cli_len); serv_addrstr.sun_family = AF_UNIX; strcpy(serv_addrstr.sun_path, "gniazdko_serwera"); serv_len = sizeof(serv_addrstr); sendto(sock, &ch, 1, 0, (struct sockaddr *) &serv_addrstr, serv_len); if (recvfrom(sock, &ch, 1, 0, 0, 0) == -1) perror("blad recvfrom"); else printf("znak od serwera = %c\n", ch); return 0; } Mechanizmy komunikacji i synchronizacji gniazdka 32
33 Gniazdka SOCK DGRAM: serwer #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/un.h> #include <sys/socket.h> int main() { int sock, serv_len, cli_len; struct sockaddr_un serv_addrstr, cli_addrstr; } sock = socket(pf_unix, SOCK_DGRAM, 0); serv_addrstr.sun_family = AF_UNIX; strcpy(serv_addrstr.sun_path,"gniazdko_serwera"); unlink("gniazdko_serwera"); serv_len = sizeof(serv_addrstr); bind(sock,(struct sockaddr *)&serv_addrstr,serv_len); while(1) { /* petla oczek.na pakiet */ char ch; cli_len = sizeof(cli_addrstr); recvfrom(sock, &ch, 1, 0, (struct sockaddr *) &cli_addrstr, &cli_len); ch++; sendto(sock, &ch, 1, 0, (struct sockaddr *) &cli_addrstr, cli_len); } Mechanizmy komunikacji i synchronizacji gniazdka 33
34 Gniazdka inne warianty komunikacji W przypadku komunikacji po laczeniowej (gniazdka typu SOCK_STREAM) umożliwia to serwerowi zwiazanie gniazdka z jakimś rozpoznawalnym adresem (funkcja bind), dzieki czemu serwer może zadeklarować swój adres i oczekiwać na po laczenia, a klient może podejmować próby nawiazania po laczenia z serwerem (funkcja connect). W przypadku komunikacji bezpo laczeniowej (gniazdka typu SOCK_DGRAM) pozwala to skierować pakiet we w laściwym kierunku (adres odbiorcy w funkcji sendto), jak również zwiazać gniazdko procesu z jego adresem (bind), co ma skutek opatrzenia każdego wysy lanego pakietu adresem nadawcy. Możliwe jest również użycie funkcji connect w komunikacji bezpo laczeniowej, co jest interpretowane jako zapamietanie w gniazdku adresu odbiorcy i kierowanie do niego ca lej komunikacji zapisywanej do gniazdka, ale nie powoduje żadnego nawiazywania po laczenia. Wywo lanie funkcji close na gniazdku po laczonym powoduje rozwiazanie po laczenia, a w przypadku komunikacji bezpo laczeniowej rozwiazanie zwiazku adresu z gniazdkiem. Mechanizmy komunikacji i synchronizacji gniazdka 34
35 Mechanizmy komunikacji standardu POSIX Realtime Istnieja mechanizmy komunikacji miedzyprocesowej, analogiczne badź podobne do System V IPC, wprowadzone w rozszerzeniu realtime standardu POSIX rozszerzenia Realtime IEEE Sa to: kolejki komunikatów, pamieć wspó ldzielona, semafory. Pomimo iż ich funkcjonalność jest podobna do starszych i bardzo dobrze utrwalonych mechanizmów System V IPC, te nowe posiadaja istotne zalety, przydatne w aplikacjach czasu rzeczywistego ale nie tylko w takich. Dlatego zostana one tu przedstawione. Należy zwrócić uwage, że nie wszystkie mechanizmy czasu rzeczywistego wprowadzone w standardzie POSIX sa tu omówione, np. nie bed a omawiane sygna ly czasu rzeczywistego, timery, ani mechanizmy zwiazane z watkami, takie jak mutexy, zmienne warunkowe, ani blokady zapisu i odczytu. Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime 35
36 Wszystkie mechanizmy komunikacji miedzyprocesowej tu opisywane, opieraja identyfikacje wykorzystywanych urzadzeń komunikacji na deskryptorach plików, do których dostep można uzyskać przez identyfikatory zbudowane identycznie jak nazwy plików. Nazwy plików musza zaczynać sie od slash-a / (co podkreśla fakt, że maja charakter globalny), jednak standard nie określa, czy te pliki musza istnieć/być tworzone w systemie, a jeśli tak to w jakiej lokalizacji. Takie rozwiazanie pozwala systemom, które moga nie posiadać systemu plików (jak np. systemy wbudowane) tworzyć urzadzenia komunikacyjne w swojej w lasnej wirtualnej przestrzeni nazw, natomiast wiekszym systemom komputerowym na osadzenie ich w systemie plików wed lug dowolnie wybranej konwencji. Dodatkowo, semafory moga wystepować w dwóch wariantach: anonimowe i nazwane. Jest to analogiczne do anonimowych i nazwanych potoków. Semafor anonimowy nie istnieje w sposób trwa ly, i po jego utworzeniu przez dany proces, dostep do niego moga uzyskać tylko jego procesy potomne przez dziedziczenie. Dostep do semaforów nazwanych uzyskuje sie przez nazwy plików, podobnie jak dla pozosta lych urzadzeń. Urzadzenia oparte o konkretna nazwe pliku zachowuja swój stan (np. kolejka komunikatów swoja zawartość, a semafor wartość) po ich zamknieciu przez wszystkie procesy z nich korzystajace, i ponownym otwarciu. Standard nie określa jednak, czy ten stan ma być również zachowany po restarcie systemu. Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime 36
37 Kolejki komunikatów POSIX Kolejki komunikatów standardu POSIX maja nastepuj ace w lasności: kolejka jest dwukierunkowym urzadzeniem komunikacyjnym Kolejka może być otwarta w jednym z trybów: O_RDONLY, O_WRONLY, O_RDWR. sta ly rozmiar komunikatu Podobnie jak kolejki komunikatów System V IPC, a odmiennie niż potoki (anonimowe i FIFO), które sa strumieniami bajtów, kolejki przekazuja komunikaty jako ca le jednostki. priorytety komunikatów Podobnie jak komunikaty System V IPC, komunikaty POSIX posiadaja priorytety, które sa jednak inaczej wykorzystywane. Nie ma możliwości odebrania komunikatu o dowolnie określonym priorytecie, natomiast zawsze odbierany jest najstarszy komunikat o najwyższym priorytecie. Taka funkcjonalność pozwala, miedzy innymi, uniknać typowego zjawiska inwersji priorytetów, gdzie komunikat o wysokim priorytecie może znajdować sie w kolejce za komunikatem/ami o niższym priorytecie. Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: kolejki komunikatów 37
38 blokujace lub nieblokujace odczyty Podobnie jak kolejki komunikatów System V IPC, kolejki POSIX posiadaja zdolność blokowania procesu w oczekiwaniu na komunikat gdy kolejka jest pusta, lub natychmiastowego powrotu z kodem sygnalizujacym brak komunikatu. Jednak w odróżnieniu od kolejek System V IPC, ta funkcjonalność jest dostepna dla kolejki jako takiej (wymaga jej otwarcia w trybie O_NONBLOCK) a nie dla konkretnych odczytów. powiadamianie asynchroniczne Kolejki komunikatów POSIX posiadaja dodatkowa funkcje pozwalajac a zażadać asynchronicznego powiadomienia o nadejściu komunikatu do kolejki. Dzieki temu proces może zajmować sie czymś innym, a w momencie nadejścia komunikatu może zostać powiadomiony przez: doreczenie sygna lu uruchomienie określonej funkcji jako nowego watku Rejestracja asynchronicznego powiadomienia jest dopuszczalna tylko dla jednego procesu, i ma charakter jednorazowy, to znaczy, po doreczeniu pojedynczego powiadomienia wygasa (ale może być ponownie uruchomiona). W przypadku gdy jakiś proces w systemie oczekiwa l już na komunikat w danej kolejce, asynchroniczne powiadomienie nie jest generowane. Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: kolejki komunikatów 38
39 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <mqueue.h> Kolejki komunikatów POSIX: mq receive #define MQ_TESTQUEUE "/mq_testqueue" #define MODES 0666 #define MSGLEN int main() { mqd_t mqd; int len; unsigned int pri; char msg[msglen]; // na wszelki wypadek printf("probuje usunac istniejaca kolejke komunikatow...\n"); if(mq_unlink(mq_testqueue) < 0) perror("nie moge usunac kolejki"); else printf("kolejka usunieta.\n"); Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: kolejki komunikatów 39
40 mqd = mq_open(mq_testqueue, O_RDONLY O_CREAT O_NONBLOCK, MODES, 0); if (mqd == (mqd_t)-1) { perror("mq_open"); exit(-1); } else printf("kolejka komunikatow mqd = %d\n", mqd); printf("czekam na dane...\n"); do { sleep(1); len = mq_receive(mqd, msg, MSGLEN, &pri); if (len >= 0) printf("odebrany komunikat dlugosc %d: <%d,%s>\n", len, pri, msg); else perror("brak komunikatu"); } while (0!=strncmp(msg, "koniec", MSGLEN)); } mq_close(mqd); return 0; Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: kolejki komunikatów 40
41 Kolejki komunikatów POSIX: mq send #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <mqueue.h> #include <sys/unistd.h> #ifndef MQ_PRIO_MAX #define MQ_PRIO_MAX _SC_MQ_PRIO_MAX #endif #define MQ_TESTQUEUE "/mq_testqueue" #define MODES 0666 #define MSGLEN int main() { mqd_t mqd; unsigned int pri; char msg[msglen], buf[bufsiz], *charptr; mqd = mq_open(mq_testqueue, O_WRONLY O_CREAT O_NONBLOCK, MODES, 0); if (mqd == (mqd_t)-1) { perror("mq_open"); exit(-1); } else printf("kolejka komunikatow mqd = %d\n", mqd); Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: kolejki komunikatów 41
42 do { printf("podaj tresc komunikatu: "); fflush(stdout); fgets(msg, MSGLEN, stdin); charptr = strchr(msg, \n ); if (NULL!=charptr) *charptr = 0; printf("podaj priorytet komunikatu: "); fflush(stdout); fgets(buf, BUFSIZ, stdin); sscanf(buf, "%i", &pri); if (pri<0) pri = 0; if (pri>mq_prio_max) { printf("wartosc priorytetu przekracza maksimum: %d\n", MQ_PRIO_MAX); pri = MQ_PRIO_MAX; } printf("wysylany komunikat: <%d,%s>\n", pri, msg); } if (mq_send(mqd, msg, strlen(msg)+1, pri) < 0) perror("blad mq_send"); else printf("poszlo mq_send.\n"); } while (0!=strncmp(msg, "koniec", MSGLEN)); mq_close(mqd); return 0; Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: kolejki komunikatów 42
43 Pamieć wspó ldzielona Komunikacja przez pamieć wspólna jest najszybszym rodzajem komunikacji miedzyprocesowej. Wymaga stworzenia obszaru pamieci wspólnej w systemie operacyjnym przez jeden z procesów, a nastepnie odwzorowania tej pamieci do w lasnej przestrzeni adresowej wszystkich pragnacych sie komunikować procesów. Komunikacja w tym trybie wymaga synchronizacji za pomoca oddzielnych mechanizmów, takich jak muteksy albo blokady zapisu i odczytu. Obrazki zapożyczone bez zezwolenia z: Mechanizmy komunikacji i synchronizacji pamieć wspó ldzielona 43
44 Mechanizmy komunikacji i synchronizacji pamieć wspó ldzielona 44
45 Pamieć wspó ldzielona: serwer #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <fcntl.h> #include <sys/types.h> #include <sys/mman.h> #define POSIX_SOURCE #define SHM_TESTMEM "/shm_testmem" #define MODES 0666 struct shared_struct { int client_wrote; char text[bufsiz]; }; int main() { struct shared_struct *shared_mem; int shmd, shared_size; // na wszelki wypadek printf("probuje usunac istniejacy obszar wspolny...\n"); if(shm_unlink(shm_testmem) < 0) perror("nie moge usunac obszaru pamieci"); else printf("obszar pamieci wspolnej usuniety.\n"); Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: pamieć wspó ldzielona 45
46 shmd = shm_open(shm_testmem, O_RDWR O_CREAT, MODES); if (shmd == -1) { perror("shm_open padlo"); exit(errno); } shared_size = sizeof(struct shared_struct); ftruncate(shmd, shared_size); shared_mem = (struct shared_struct *) mmap(null,shared_size,prot_read PROT_WRITE,MAP_SHARED,shmd,0); srand((unsigned int)getpid()); shared_mem->client_wrote = 0; do { printf("czekam na dane...\n"); sleep( rand() % 4 ); /* troche czekamy */ if (shared_mem->client_wrote) { printf("otrzymalem: \"%s\"\n", shared_mem->text); sleep( rand() % 4 ); /* znow troche poczekajmy */ shared_mem->client_wrote = 0; } } while (strncmp(shared_mem->text, "koniec", 6)!= 0); } munmap((char *)shared_mem, shared_size); return 0; Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: pamieć wspó ldzielona 46
47 Pamieć wspó ldzielona: klient #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <fcntl.h> #include <sys/types.h> #include <sys/mman.h> #define POSIX_SOURCE #define SHM_TESTMEM "/shm_testmem" #define MODES 0666 struct shared_struct { int client_wrote; char text[bufsiz]; }; int main() { struct shared_struct *shared_mem; char buf[bufsiz], *charptr; int shmd, shared_size; shmd = shm_open(shm_testmem, O_RDWR O_CREAT, MODES); if (shmd == -1) { perror("shm_open padlo"); exit(errno); Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: pamieć wspó ldzielona 47
48 } shared_size = sizeof(struct shared_struct); ftruncate(shmd, shared_size); shared_mem = (struct shared_struct *) mmap(null,shared_size,prot_read PROT_WRITE,MAP_SHARED,shmd,0); do { while(shared_mem->client_wrote == 1) { sleep(1); printf("czekam na odczytanie...\n"); } printf("podaj text do przeslania: "); fgets(buf, BUFSIZ, stdin); charptr = strchr(buf, \n ); if (NULL!=charptr) *charptr = 0; strcpy(shared_mem->text, buf); shared_mem->client_wrote = 1; } while (strncmp(buf, "koniec", 6)!= 0); } munmap((char *)shared_mem, shared_size); return 0; Mechanizmy komunikacji i synchronizacji mechanizmy POSIX Realtime: pamieć wspó ldzielona 48
49 Semafory: teoria W teorii semafor jest nieujemna zmienna (sem), domyślnie kontrolujac a przydzia l pewnego zasobu. Wartość zmiennej sem oznacza liczbe dostepnych jednostek zasobu. Określone sa nastepuj ace operacje na semaforze: P(sem) oznacza zajecie zasobu sygnalizowane zmniejszeniem wartości semafora o 1, a jeśli jego aktualna wartość jest 0 to oczekiwanie na jej zwiekszenie, V(sem) oznacza zwolnienie zasobu sygnalizowane zwiekszeniem wartości semafora o 1, a jeśli istnieje( a) proces(y) oczekujacy(e) na semaforze to, zamiast zwiekszać wartość semafora, wznawiany jest jeden z tych procesów. Istotna jest niepodzielna realizacja każdej z tych operacji, tzn. każda z operacji P, V może albo zostać wykonana w ca lości, albo w ogóle nie zostać wykonana. Z tego powodu niemożliwa jest prywatna implementacja operacji semaforowych przy użyciu zmiennej globalnej przez proces pracujacy w warunkach prze laczania procesów. Przydatnym przypadkiem szczególnym jest semafor binarny, który kontroluje dostep do zasobu na zasadzie wy l aczności. Wartość takiego semafora może wynosić 1 lub 0. Semafory binarne zwane sa również muteksami (ang. mutex = mutual exclusion). Mechanizmy komunikacji i synchronizacji semafory 49
50 Semafory POSIX #include <semaphore.h> sem_t *sem_open(const char *name, int oflag); sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value); int sem_close(sem_t *sem); int sem_unlink(const char *name); int sem_post(sem_t *sem); int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem); int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout); int sem_getvalue(sem_t *sem, int *sval); Mechanizmy komunikacji i synchronizacji semafory 50
Komunikacja mi edzyprocesowa (IPC)
Komunikacja miedzyprocesowa (IPC) Procesy tworzone w ramach systemu operacyjnego moga sie komunikować. Jeżeli duża aplikacja jest budowana z wielu wspó lpracuj acych procesów, to ta komunikacja może być
Unix: komunikacja mi edzyprocesowa
Unix: komunikacja miedzyprocesowa Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2013 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera
Unix: komunikacja mi edzyprocesowa
Unix: komunikacja miedzyprocesowa Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2013 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera
Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.
Procesy Procesy umożliwiaja w systemach operacyjnych (quasi)równoleg le wykonywanie wielu zadań. Moga być wykonywane naprzemiennie i/lub jednocześnie. Zatem system operacyjny musi to (quasi)równoleg le
Unix: komunikacja mi edzyprocesowa
Unix: komunikacja mi edzyprocesowa Witold Paluszyński witold.paluszynski@pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 1999 2013 Witold Paluszyński All rights reserved. Niniejszy dokument
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 1999 2013 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera
Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.
Procesy Procesy umożliwiaja w systemach operacyjnych (quasi)równoleg le wykonywanie wielu zadań. Moga być wykonywane naprzemiennie i/lub jednocześnie. Zatem system operacyjny musi to (quasi)równoleg le
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2018 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia
Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.
Procesy Procesy umożliwiaja w systemach operacyjnych (quasi)równoleg le wykonywanie wielu zadań. Moga być wykonywane naprzemiennie i/lub jednocześnie. Zatem system operacyjny musi to (quasi)równoleg le
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2018 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia
4.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
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2018 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia
Środowisko procesu Unixowego
Środowisko procesu Unixowego Proces unixowy jest wykonywalnym programem za ladowanym do pami eci operacyjnej komputera, wraz z pewnym środowiskiem (zestawem zmiennych z wartościami). Jadro Unixa utrzymuje
Funkcje systemu Unix
Funkcje systemu Unix Witold Paluszyński witold@ict.pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 2002 2005 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia ly
Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.
Procesy Procesy umożliwiaja w systemach operacyjnych (quasi)równoleg le wykonywanie wielu zadań. Moga być wykonywane naprzemiennie i/lub jednocześnie. Zatem system operacyjny musi to (quasi)równoleg le
Łą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
przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.
c Wies law P laczek 9 3 Sygna ly 3.1 Opis sygna lów Najprostsz ametod akomunikacjimi edzyprocesowej w systenie UNIX s sygna ly. Umożliwiaj aoneasynchroniczne przerwanie dzia lania procesu przez inny proces
Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.
Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,
Kolejki 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
Sygnały. 7. Sygnały (2005/2006)
Sygnały Sygnał jest to informacja dla procesu, że wystąpiło jakieś zdarzenie. Sygnały mogą być wysyłane: z procesu do innego procesu (grupy procesów) z procesu do siebie samego z jądra do procesu Sygnały
Systemy Operacyjne Ćwiczenia
Systemy Operacyjne Ćwiczenia Wies law P laczek Wydzia l Fizyki, Astronomii i Informatyki Stosowanej, Uniwersytet Jagielloński ul. Reymonta 4, 30-059 Kraków 4 lutego 2009 Streszczenie Praca ta zawiera materia
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)
Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany
Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie drugie (jedne zajęcia) Temat: Procesy i sygnały w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Budowa procesu
Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011
Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 9 października 2011 Plan zajęć 1 Procesy w systemie Linux proces procesy macierzyste i potomne procesy zombie i sieroty 2 Funkcje systemowe pobieranie
SYSTEMY 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()
Laboratorium 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ę,
sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),
27 4 L acza L acza w systemie UNIX sa plikami specjalnymi, s luż acymi do komunikacji pomiedzy procesami. L acza maja kilka cech typowych dla plików zwyk lych, czyli posiadaja swój i-weze l, posiadaja
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
Łą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ś
Instrukcja 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
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Pliki. 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:
Kolejki 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).
pami eć operacyjna przechowuje dane do przetworzenia, tymczasowe dane pomocnicze,
16 3 Procesy 3 Procesy Pojecie procesu jest kluczowe dla zrozumienia funkcjonowania wielozadaniowych systemów operacyjnych. Trudność w zrozumieniu tego pojecia i tym samym zg lebienie mechanizmu obs lugi
Obsługa plików Procesy
Obsługa plików Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 15 października 2011 Plan zajęć 1 Obsługa plików 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach 3 Operacje
Instrukcja 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
Watki. kod programu za ladowany do pami eci operacyjnej, wraz ze środowiskiem (zbiorem
Watki Procesy stanowia podstawowa jednostke, z której tradycyjnie sk lada sie wiekszość systemów operacyjnych. Procesy posiadaja dwie podstawowe cechy: kod programu za ladowany do pamieci operacyjnej,
Programowanie Współbieżne. W Linuxie/Unixie
Programowanie Współbieżne W Linuxie/Unixie Identyfikatory pid numer identyfikacyjny procesu zwykle od 0 do 32K przydzielany przez system każdemu nowemu procesowi uzyskać możemy go przez int getpid() 0
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Wieloprogramowy system komputerowy
Wieloprogramowy system komputerowy sprzet: procesor(y), pamieć(i), lacza i magistrale komunikacyjne, urzadzenia wejścia/wyjścia system operacyjny obs luguje i zarzadza sprzetem, umożliwia prace i korzystanie
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
procesy odrębne dzielone
procesy odrębne Unikatowy PID (2-32000) Zmienne Zbiory deskryptorów plików Przestrzeń stosu (lokalne zmienne, wywołania funkcji) Środowisko Licznik rozkazów dzielone Kod programu brak możliwości zapisu
Klient-Serwer Komunikacja przy pomocy gniazd
II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu
Obsł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
Gniazda BSD. komunikacja bezpołączeniowa
Gniazda BSD komunikacja bezpołączeniowa Użycie gniazd w transmisji bezpołączeniowej socket() socket() bind() bind() STOP! recv() żądanie send() send() odpowiedź recv() STOP! recvfrom() #include
Systemy Operacyjne - Operacje na plikach
Systemy Operacyjne - Operacje na plikach Andrzej Stroiński Institute of Computer Science Poznań University of Technology 1 październik, 2012 Wprowadzenie do ANSI-C Pomoc systemowa man gcc man 2 write man
1. 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
METODY 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ę
przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna zwraca wartość 1(czasamiNULL) iprzypisujezmiennej zewn etrznej,
c Wies law P laczek 3 1 Obs luga b l edów Wwi ekszości przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna kończ ac si e b l edem zwraca 1(czasamiNULL) iprzypisujezmiennej zewn
1. Procesy i współbieżność
1. Procesy i współbieżność Opracował: Sławomir Samolej Politechnika Rzeszowska, Katedra Informatyki i Automatyki, Rzeszów, 2013. 1.1. Wprowadzenie Proces to przestrzeń adresowa i pojedynczy wątek sterujący,
Systemy 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
Obsługa sygnałów. Tomasz Borzyszkowski
Obsługa sygnałów Tomasz Borzyszkowski Wprowadzenie Zaawansowane systemy operacyjne często realizując duże zadania, wykorzystują do ich realizacji wiele współdziałających ze sobą programów/procesów. Do
Wieloprogramowy system komputerowy
Wieloprogramowy system komputerowy sprzet: procesor(y), pamieć(i), lacza i magistrale komunikacyjne, urzadzenia wejścia/wyjścia system operacyjny obs luguje i zarzadza sprzetem, umożliwia prace i korzystanie
procesami w systemie Unix
Zarzadzanie procesami w systemie Unix Witold Paluszyński Katedra Cybernetyki i Robotyki Politechnika Wroc lawska http://www.kcir.pwr.edu.pl/~witold/ 2000 2013 Ten utwór jest dostepny na licencji Creative
Model procesu w systemie Linux. Tomasz Borzyszkowski
Model procesu w systemie Linux Tomasz Borzyszkowski Definicja procesu klasyka Definicja [M.Bach WNT95] Proces jest wykonaniem programu i składa się ze zbiorowości bajtów, które CPU interpretuje jako instrukcje
13. 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.
Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła
Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej
SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)
(opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie
Funkcje 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
z powielaniem wielu struktur danych oraz komunikacja
c Wies law P laczek 28 8 Watki 8.1 Wprowadzenie Wiele rozwiazywanych problemów można podzielić na zadania czastkowe, które daja sie wykonać niemal niezależnie. Każde z takich zadań można by powierzyć oddzielnemu
POSIX: IEEE Std 1003.1 2001 (Issue 6, 2004 edition)
POSIX: IEEE Std 1003.1 2001 (Issue 6, 2004 edition) Podstawowe rekomendacje przejęte z UNIXa wielodostęp wielozadaniowość system plików terminal gniazda Rekomendacje dla obszaru czasu rzeczywistego strategie
IPC: 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
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę
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.
Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998
Gniazda BSD Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998 socket() Użycie gniazd w transmisji połączeniowej bind() listen() socket() accept()
Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot
Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot października 2018 Wstęp W tej instrukcji zawarte są informacje na temat tworzenia i obsługiwania
Temat 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
Mechanizmy 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
5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
Autor: 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
Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias 7 październik 2008 Uruchomienie, monitorowanie
Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP
Gniazda UDP Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 3 kwietnia 2006 Wstęp ZewzględunaróżnicewprotokołachTCPiUDPsposób korzystania z gniazd UDP różni sie znacznie od
Instytut 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
UNIX. mgr inż. Marcin Borkowski
UNIX Cel Przedmiotu Doskonalenie umiejętności poprawnego programowania w systemach klasy UNIX Nabycie i rozwinięcie technik pisania przenośnego kodu w C Opanowanie standardu POSIX w zakresie funkcji systemowych
Laboratorium Procesy w systemach UNIX 3.2 Polecenia związane z procesami
Laboratorium 3 3.1 Procesy w systemach UNIX 3.2 Polecenia związane z procesami 1 3.1 Procesy w systemach UNIX Z systemami unixowymi związane jest pojęcie procesu. W takim ujęciu, proces, rozumiany jest
Funkcje 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
Systemy Operacyjne I: Procesy
Politechnika Poznańska 4 kwietnia 2013 Materiały Prezentacja oraz inne materiały zostały przygotowane na podstawie: Użytkowanie systemu operacyjnego UNIX - dr D.Wawrzyniak Systemy operacyjne - skrypt -
Ghost in the machine
Operacje na pami eci i odrobina I/O Zak lad Chemii Teoretycznej UJ 8 stycznia 2007 Funkcje operujace Wstep do operacji I/O na plikach 1 Operacje na pami eci 2 Funkcje operujace 3 Wst Funkcje operujace
Procesy wielowatkowe. Watki. Wspólne dane watków. Prywatne dane watków. Programowanie z użyciem watków
Watki Procesy stanowia podstawowa jednostke, z której tradycyjnie sk lada sie wiekszość systemów operacyjnych. Procesy posiadaja dwie podstawowe cechy: Procesy wielowatkowe Watki z natury rzeczy sa jednostkami
Procesy, pliki, potoki, sygnały - uzupełnienie
Procesy, pliki, potoki, sygnały - uzupełnienie 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/
Laboratorium 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
Zarządzanie procesami
Zarządzanie procesami Proces, najogólniej rzecz ujmując, jest wykonywanym programem. Na linuxowy proces składają się: Liniowa przestrzeń adresowa, w której z kolei można wydzielić sekcję tekstu zawierającą
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
System operacyjny MACH
Emulacja w systemie MCH System operacyjny MCH 4. SD Systemu V HP/UX MS-DOS VMS inne Mikrojądro Zbigniew Suski Zbigniew Suski Podstawowe cele projektu MCH! Dostarczenie podstawy do budowy innych systemów
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
1. 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
1.1 Definicja procesu
1 Procesy pojęcia podstawowe 1 1.1 Definicja procesu Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Prezentacja systemu RTLinux
Prezentacja systemu RTLinux Podstawowe założenia RTLinux jest system o twardych ograniczeniach czasowych (hard real-time). Inspiracją dla twórców RTLinux a była architektura systemu MERT. W zamierzeniach
Temat zajęć: Obsługa procesów w systemie.
Temat zajęć: Obsługa procesów w systemie. Czas realizacji zajęć: 90 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Procesy macierzyste i potomne, tworzenie procesów potomnych, uruchamianie
Programowanie 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
Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu
Proces Procesy i wątki Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz
procesami w systemie Unix
Zarzadzanie procesami w systemie Unix Witold Paluszyński Katedra Cybernetyki i Robotyki Politechnika Wroc lawska http://www.kcir.pwr.edu.pl/~witold/ 2000 2013 Ten utwór jest dostepny na licencji Creative
procesami w systemie Unix
Zarzadzanie procesami w systemie Unix Witold Paluszyński Katedra Cybernetyki i Robotyki Politechnika Wroc lawska http://www.kcir.pwr.edu.pl/~witold/ 2000 2013 Ten utwór jest dostepny na licencji Creative
3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);
3.1. Określanie adresu połączonego hosta 3. #include int getpeername(int socket, struct sockaddr *addr, int *addrlen); Funkcja getpeername dostarcza adresu drugiej strony połączenia. Parametry:
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
Aplikacja 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ę
4. 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
Procesy w systemach UNIX i Linux
SOE Systemy Operacyjne Wykład 5 Procesy w systemach UNIX i Linux dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Procesy Proces wykonujący się program identyfikator PID Procesy
Systemy operacyjne III
Systemy operacyjne III WYKŁAD 2 Jan Kazimirski 1 Procesy w systemie operacyjnym 2 Proces Współczesne SO w większości są systemami wielozadaniowymi. W tym samym czasie SO obsługuje pewną liczbę zadań procesów