PROGRAMOWANIE SYSTEMÓW WBUDOWANYCH INTER-PROCESS COMMUNICATION

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

Download "PROGRAMOWANIE SYSTEMÓW WBUDOWANYCH INTER-PROCESS COMMUNICATION"

Transkrypt

1 PROGRAMOWANIE SYSTEMÓW WBUDOWANYCH INTER-PROCESS COMMUNICATION Mariusz Rudnicki Programowanie Systemów Wbudowanych 1/91

2 KOMUNIKACJA MIĘDZYPROCESOWA IPC Omawiane zagadnienia Czym jest komunikacja międzyprocesowa? W jakim celu stosuje się komunikację międzyprocesową? Metody IPC w RT OS:, RT Linux, Windows CE Niebezpieczeństwa związane z mechanizmami komunikacji IPC Programowanie Systemów Wbudowanych 2/91

3 KOMUNIKACJA MIĘDZYPROCESOWA IPC W większości systemów RT procesy uruchamiane są w chronionej przestrzeni adresowej Powoduje to brak dostępu do zasobów danego procesu od strony innych procesów W związku z tym musiały powstać mechanizmy, które pozwolą na wymianę zasobów pomiędzy procesami Programowanie Systemów Wbudowanych 3/91

4 KOMUNIKACJA MIĘDZYPROCESOWA IPC Komunikacja IPC ang Inter-Process Communication zapewnia mechanizmy wymiany danych pomiędzy procesami Procesy mogą wymieniać: dane; kontrolę; powiadomienie o wystąpieniu zdarzenia Programowanie Systemów Wbudowanych 4/91

5 wspiera różnorodne mechanizmy komunikacji IPC: rodzima komunikacja (API unikalne dla QNX): komunikaty ; pulsy ; mechanizmy zgodne z POSIX/UNIX (API przenośne): sygnały; pamięć dzielona; potoki (wymagany proces pipe); kolejki komunikatów POSIX (wymagany proces mqueue lub mq); gniazda TCP/IP (wymagany proces io-net) Programowanie Systemów Wbudowanych 5/91

6 Komunikaty : oparta na modelu klient serwer; komunikacja dwukierunkowa Proces klienta Proces serwera Wątek Wątek 1 MsgSend() MsgReceive() klient wysyła zapytanie/dane do serwera serwer odbiera i przetwarza MsgReply() server odpowiada klientowi, klient odbiera odpowiedź i kontynuuje process msg 3 Programowanie Systemów Wbudowanych 6/91

7 Komunikaty : architektura zdalnego wywoływania funkcji jądra ang kernel calls; w pełni synchroniczna: w czasie bezczynności, serwer jest zablokowany w oczekiwaniu na komunikat klient jest zablokowany do czasu odpowiedzi serwera Programowanie Systemów Wbudowanych 7/91

8 Komunikaty : CZAS 1 Proces klienta Wątek MsgSend()entry Proces serwera Wątek MsgReceive() 2 process msg 3 5 MsgSend()exit MsgReply() 4 Zablokowany Programowanie Systemów Wbudowanych 8/91

9 PRZYPADEK 1: Send po Receive zablokowany serwer Klient Serwer Stan READY REPLY Blocked READY Blocked Wątek MsgSend() CZAS kopiowanie danych wysłanych kopiowanie danych zwrotnych Wątek MsgReceive() Programowanie Systemów Wbudowanych 9/91 MsgReply() Stan READY RECEIVE Blocked READY

10 PRZYPADEK 2: Send przed Receive zajęty serwer Klient Serwer Stan READY SEND Blocked REPLY Blocked READY Blocked Wątek MsgSend() MsgReceive() kopiowanie danych wysłanych CZAS Wątek MsgReply() kopiowanie danych zwrotnych Stan READY Programowanie Systemów Wbudowanych 10/91

11 Komunikaty : popatrzmy na wątek klienta i jego stany: Programowanie Systemów Wbudowanych 11/91

12 Komunikaty : spójrzmy na wątek serwera i jego stany: Programowanie Systemów Wbudowanych 12/91

13 Komunikaty : połączenia i kanały: serwer odbiera w kanale; klient dołącza się do kanału; klient wysyła dane przez kanał serwera po podłączeniu się do niego połączenie kanał klient serwer Programowanie Systemów Wbudowanych 13/91

14 Komunikaty : wielokrotne połączenia i kanały: klient może mieć połączenia z wieloma serwerami; serwer używa jednego kanału do odbierania wiadomości od wielu klientów klient A połączenie połączenie kanał serwer A połącznie kanał połączenie klient B serwer B Programowanie Systemów Wbudowanych 14/91

15 Komunikaty : Pseudo kod serwera: utwórz kanał ( ChannelCreate() ) czekaj na komunikat ( MsgReceive() ) przetwarzaj odpowiedz ( MsgReply() ) przejdź do oczekiwania Pseudo kod klienta dołącz do kanału ( ConnectAttach() ) wyślij komunikat ( MsgSend() ) wykorzystaj odpowiedź serwera Programowanie Systemów Wbudowanych 15/91

16 Serwer tworzy kanał wykorzystując: chid = ChannelCreate (flagi); kanał (prawdopodobnie wielowątkowy) serwer kanał powiązany jest z procesem; dowolny wątek w procesie może odbierać komunikaty poprzez kanał; kiedy komunikat nadchodzi, jądro po prostu wybiera wątek nasłuchujący MsgReceive(); flagi są ustawiane bitowo, niektóre z flag będą omówione w dalszej części Programowanie Systemów Wbudowanych 16/91

17 Klient dołącza się do kanału serwera: coid = ConnectAttach(nd, pid, chid, _NTO_SIDE_CHANNEL, flags); połączenie kanał klient serwer nd, pid, chid unikalnie identyfikuje kanał serwera; nd jest deskryptorem węzła: opisuje komputer na którym jest uruchomiony serwer; pid to id procesu serwera; chid id kanału; jako 4-ty argument zawsze podajemy NTO_SIDE_CHANNEL Programowanie Systemów Wbudowanych 17/91

18 ID połączenia (coids) może być dwóch typów: coids deskryptory plików połączenia kanałów fd = open (filename, O_RDONLY); coid = ConnectAttach (nd, pid, chid, _NTO_SIDE_CHANNEL, flags); kiedy wywołujemy ConnectAttach() nie chcemy, żeby coid był w przedziale deskryptorów plików; umieszczenie _NTO_SIDE_CHANNEL zabezpiecza przed tym Programowanie Systemów Wbudowanych 18/91

19 Wywołanie MsgSend() (po stronie klienta): status = MsgSend (coid, smsg, sbytes, rmsg, rbytes); coid identyfikator połączenia smsg dane do wysłania sbytes liczba bajtów do wysłania z bufora smsg rmsg bufor odbiorczy na przyjęcie komunikatu zwrotnego rbytes rozmiar bufora rmsg status jest wartością przekazywaną przez parametr status podczas odpowiedzi MsgReply*(); Programowanie Systemów Wbudowanych 19/91

20 Wywołanie MsgReceive() (po stronie serwera): rcvid = MsgReceive (chid, rmsg, rbytes, info); chid identyfikator kanału; rmsg bufor na odbierane dane; rbytes liczba bajtów możliwych do odebrania w buforze rmsg; info pozwala na uzyskanie dodatkowych informacji; rcvid pozwala na użycie MsgReply*() do klienta Programowanie Systemów Wbudowanych 20/91

21 Wywołanie MsgReply() (po stronie serwera): MsgReply (rcvid, status, msg, bytes); rcvid identyfikator nadawcy otrzymany po wywołaniu MsgReceive*(); status jest wartością przekazywaną do MsgSend*(); msg zwracany bufor; bytes liczba bajtów przekazywanych w buforze Programowanie Systemów Wbudowanych 21/91

22 Wywołanie MsgError() (po stronie serwera): spowoduje wyjście z MsgSend*() z wartością -1 i ustawienie errno MsgError (rcvid, error); rcvid identyfikator klienta zwrócony przez wywołanie MsgReceive*(); error wartość błędu Programowanie Systemów Wbudowanych 22/91

23 Przykład serwera: #include <sys/neutrinoh> int main(void) { int chid, rcvid; mymsg_t msg; chid = ChannelCreate(0); while(1) { rcvid = MsgReceive(chid, &msg, sizeof(msg), NULL); przetwórz informacje z komunikatu klienta MsgReply(rcvid, EOK, &reply_msg, sizeof(reply_msg) ); } } Programowanie Systemów Wbudowanych 23/91

24 Przykład klienta: #include <sys/neutrinoh> #include <sys/netmgrh> int main(void) { int coid; //Identyfikator połączenia mymsg_t outgoing_msg; int server_pid, server_chid, incoming_msg; coid = ConnectAttach(ND_LOCAL_NODE, server_pid, server_chid, _NTO_SIDE_CHANNEL, 0); MsgSend(coid, &outgoing_msg, sizeof(outgoing_msg), &incoming_msg, sizeof(incoming_msg) ); } Programowanie Systemów Wbudowanych 24/91

25 Treść komunikatu jest zawsze kopiowana Jądro nie przekazuje wskaźników Wątek klient Wątek serwer MsgSend(coid, msg,,replybuf,) rcvid = MsgReceive(chid, msg,) Bufory komunikatów MsgReply(rcvid, sts, replybuf,) Programowanie Systemów Wbudowanych 25/91

26 Serwer może odpowiedzieć bez danych: w celu odblokowanie klienta, w przypadku gdy chcemy jedynie przekazać potwierdzenie odbioru do MsgSend(); klient zna status żądania Klient Serwer Thread Thread MsgSend(coid, msg,,replybuf,) rcvid = MsgReceive(chid, msg,) MsgReply(rcvid, EOK, NULL, 0) Bufory komunikatów status no data Programowanie Systemów Wbudowanych 26/91

27 W jaki sposób zaprojektować interfejs komunikacyjny? zdefiniować typy komunikatów i struktur w pliku nagłówkowym: klient i serwer dołącza wspólny plik nagłówkowy; rozpoczynać wszystkie komunikaty typem wiadomości; utworzyć strukturę opisującą każdy typ komunikatu: jeżeli komunikaty są powiązane lub używają wspólnych struktur, rozważyć możliwość użycia typu i podtypu komunikatu; zdefiniować struktury dla odpowiedzi; unikać nakładania się typów komunikatów dla różnych serwerów Programowanie Systemów Wbudowanych 27/91

28 unikać nakładania się typów komunikatów z zakresu komunikatów systemowych QNX: w/w typy komunikatów generowane są przez funkcje biblioteczne QNX, np read(); wszystkie komunikaty QNX rozpoczynają się od: uint16_t type; systemowe komunikaty są w zakresie: 0 to _IO_MAX (511); używanie wartości większych niż _IO_MAX jest zawsze bezpieczne Programowanie Systemów Wbudowanych 28/91

29 Po stronie serwera fragment uzależniony od typu komunikatu, np: while(1) { } rcvid = MsgReceive( chid, &msg, sizeof(msg), NULL ); switch( msgtype ) { } case MSG_TYPE_1: handle_msg_type_1(rcvid, &msg); break; case MSG_TYPE_2: Programowanie Systemów Wbudowanych 29/91

30 Rodzima komunikacja jest z natury synchroniczna: wysłanie MsgSend*() przez klienta powoduje jego zablokowanie; serwer musi wywołać MsgReply*() w celu odblokowania klienta Jak postępować, jeżeli nie chcemy aby klient był zablokowany? Programowanie Systemów Wbudowanych 30/91

31 Kilka możliwości: jeżeli potrzebujemy przesłać dane: wątek przeznaczony na serwer: serwer odbiera komunikaty i natychmiast odpowiada minimalizując okres blokowania wątku klienta; wykorzystujemy komunikację asynchroniczną QNX; jeżeli nie potrzebujemy przesyłać danych lub jeśli potrzebujemy jedynie przesłać powiadomienie o dostępnych danych wykorzystujemy: sygnały; pulsy Programowanie Systemów Wbudowanych 31/91

32 Pulsy: nie blokujące dla nadawcy; ustalony rozmiar: 32 bitowa wartość, 8 bitowy kod (-128 to 127), ujemne wartości zarezerwowane dla systemu; jednokierunkowe (nie wymagają odpowiedzi); szybkie i niedrogie PULS Programowanie Systemów Wbudowanych 32/91

33 Pulsy są wysyłane za pomocą wywołania: MsgSendPulse (coid, priority, code, value); 8-bits 32-bits code zwykle używany do określenia typu pulsu: zakres od _PULSE_CODE_MINAVAIL do _PULSE_CODE_MAXAVAIL; priority priorytet wysyłanego komunikatu; wysłanie pulsu do innego procesu wymaga aby nadawca miał taki sam userid jak odbiorca lub był użytkownikiem root Programowanie Systemów Wbudowanych 33/91

34 Pulsy są odbierana tak samo jak komunikaty, za pomocą wywołania MsgReceive*(): serwer określa odebranie pulsu na podstawie wartości zwracanej przez MsgReceive(); jeżeli wartość zwracana przez MsgReceive() jest >0 - odebrano komunikat: ta wartość będzie niezbędna dla MsgReply(); jeżeli wartość zwracana przez MsgReceive() == 0 odebrano pulse: nie musimy odpowiadać MsgReply() dla pulsów; dane z pulsu będą zapisane do bufora odbiorczego Programowanie Systemów Wbudowanych 34/91

35 Przykład: typedef union { struct _pulse } mymessage_t; pulse; // inne typy odbieranych komunikatów mymessage_t msg; while (1) { rcvid = MsgReceive (chid, &msg, sizeof(msg), NULL); if (rcvid == 0) { // to jest pulse, spójrzmy w msgpulse w celu odczytania danych } else { // to jest regularny komunikat } } Programowanie Systemów Wbudowanych 35/91

36 Po odebraniu, struktura pulsu wygląda następująco: struct _pulse { signed char code; 8-bit kod union sigval value; }; int scoid; Pole value jest unią: union sigval { int sival_int; void* sival_ptr; }; Programowanie Systemów Wbudowanych 36/91

37 Serwer będzie chciał określić powód wysłania danego pulse poprzez sprawdzenie pola code: rcvid = MsgReceive (chid, &msg, sizeof(msg), NULL); if (rcvid == 0) { // to jest pulse, spójrzmy w msgpulse switch (msgpulsecode) { case case MY_PULSE_CODE1: // wykonaj odpowiednie czynności break; MY_PULSE_CODE2: // wykonaj odpowiednie czynności break; Programowanie Systemów Wbudowanych 37/91

38 W jaki sposób klient odnajduje serwer? klient potrzebuje identyfikatora połączenia (COID) z serwerem; np MsgSend(coid, &msg, ); jak widzieliśmy, aby otrzymać coid, klient wykonuje ConnectAttach(); np coid = ConnectAttach(nd, pid, chid, ); Problem w tym, skąd wziąć pozostałe parametry nd, pid i chid? Programowanie Systemów Wbudowanych 38/91

39 W jaki sposób klient odnajduje serwer? Na zajęciach laboratoryjnych serwer drukuje pid/chid i klient korzysta z nich jako argumenty linii poleceń to nie jest dobre rozwiązanie Dlaczego? istnieją dwie metody, w zależności od tego jaką serwer pełni rolę: managera zasobów; pętla MsgReceive(); obie metody korzystają z przestrzeni nazw: serwer rejestruje swoją nazwę w przestrzeni nazw; klient i serwer muszą znać tą nazwę; klient wykonuje open na tej nazwie i pobiera coid Programowanie Systemów Wbudowanych 39/91

40 Jeżeli serwer jest managerem zasobów: manager zasobu rejestruje swoją nazwę w przestrzeni nazw: resmgr_attach(, /dev/sound, ); klient wykonuje: fd = open( /dev/sound, ); LUB w przypadku sieciowym: fd = open("/net/nodename/dev/sound", ); wówczas może wykorzystać deskryptor fd write( fd, ); // wysłanie danych read( fd, ); lub // odbiór danych MsgSend( fd, ); // wysłanie/odbiór danych Programowanie Systemów Wbudowanych 40/91

41 Jeżeli serwer działa w pętli MsgReceive() używamy name_attach() i name_open(): Po stronie serwera: name_attach_t *attach; attach = name_attach( NULL, myname, 0 ); rcvid = MsgReceive( attach->chid, &msg, sizeof(msg), NULL ); name_detach( attach, 0 ); Programowanie Systemów Wbudowanych 41/91

42 Jeżeli serwer działa w pętli MsgReceive() używamy name_attach() i name_open(): Po stronie klienta: coid = name_open( myname, 0 ); MsgSend( coid, &msg, sizeof(msg), NULL, 0 ); name_close( coid ); Programowanie Systemów Wbudowanych 42/91

43 Wywołanie name_attach() tworzy kanał: wewnętrznie wywołuje ChannelCreate(); ustawia pewne flagi dla kanału; ustawienie odpowiednich flag powoduje wysyłanie pulsów przez jądro jako powiadomienia o różnych zdarzeniach; musimy być świadomi tego, że będziemy otrzymywać pulsy, które musimy odpowiednio obsłużyć Programowanie Systemów Wbudowanych 43/91

44 Flagi ChannelCreate() ustawiane przez name_attach(): _NTO_CHF_DISCONNECT: żądanie zgłoszenia powiadomienia w sytuacji zakończenia klienta; pulse będzie miał pole code: _PULSE_CODE_DISCONNECT; _NTO_CHF_COID_DISCONNECT: żądanie zgłoszenia powiadomienia w sytuacji zakończenia serwera; pulse będzie miał pole code _PULSE_CODE_COIDDEATH; _NTO_CHF_UNBLOCK: żądanie zgłoszenia jeżeli klient zablokowany na REPLY, wymaga odblokowania; pulse będzie miał pole code _PULSE_CODE_UNBLOCK; Programowanie Systemów Wbudowanych 44/91

45 Przykład serwera odbierającego pulsy od jądra: rcvid = MsgReceive(attach->chid, &msg, sizeof(msg), NULL); if(rcvid == 0) { //sprawdzenie czy przyszedł puls switch(msgpulsecode) { //Jaki typ pulsu case _PULSE_CODE_DISCONNECT: //odłączenie klienta break; case _PULSE_CODE_UNBLOCK: //klient żąda odblokowania break; case //inne Programowanie Systemów Wbudowanych 45/91

46 Flaga odłączenia _NTO_CHF_DISCONNECT: ustawiana kiedy kanał jest tworzony wymaga dostarczenia przez jądro odpowiedniego pulse do serwera w sytuacji: wszystkie połączenia od klienta są rozłączone, włączając: zakończenie procesu wywołanie ConnectDetach() dla wszystkich połączeń utrata połączenia sieciowego w sytuacji, kiedy komunikacja odbywała się przez sieć połączenie połączenie kanał klient kiedy dwa połączenia są odłączone, puls będzie wysłany serwer pole code będzie miało wartość _PULSE_CODE_DISCONNECT Programowanie Systemów Wbudowanych 46/91

47 Parametr scoid - Server Connection ID; identyfikuje proces klienta: nie można użyć pid jak identyfikatora klienta, ponieważ pid może być taki sam dla dwóch procesów uruchomionych na różnych węzłach sieci nowy scoid jest automatycznie tworzony kiedy dołącza się nowy klient; jeżeli flaga _NTO_CHF_DISCONNECT została ustawiona podczas tworzenia kanału, scoid powinien być zwolniony ręcznie; po odebraniu pulsu oznaczającego rozłączenie z klientem, musimy: usunąć informacje związane z klientem; wykonać ConnectDetach(pulsescoid) aby zwolnić scoid klient A połączenie klient B połączenie połączenie kanał serwer 2 scoid - jeden na klienta Programowanie Systemów Wbudowanych 47/91

48 Przykład czyszczenia po odłączeniu klienta: attach = name_attach(null, my_name, 0); while (1) { } rcvid = MsgReceive(attach->chid, &msg, sizeof(msg), NULL); if (rcvid == 0) { /* Pulse received */ switch (msgpulsecode) { case _PULSE_CODE_DISCONNECT: //code to clean up per-client info ConnectDetach(msgpulsescoid); /* zwalniamy scoid */ break; Programowanie Systemów Wbudowanych 48/91

49 Problemy związane z odblokowaniem klienta: Wątek klienta Wątek serwera Stan READY SEND Blocked REPLY Blocked READY Wątek 1 Wątek 2 MsgSend() 1 2 CZAS Signal, timeout, or cancel send data transmitted Signal, timeout, or cancel MsgReceive() MsgReceive() Stan READY RECEIVE Blocked Programowanie Systemów Wbudowanych 49/91

50 Ilustracja flag odblokowania: Wątek klienta Sygnał, timeout, or cancel 3a MsgSend() 1 Pulse 3b Wątek serwera ChannelCreate( _NTO_CHF_UNBLOCK) MsgReceive() MsgReply() Programowanie Systemów Wbudowanych 50/91

51 Flaga _NTO_CHF_UNBLOCK: informuje jądro o konieczności wysłania pulsu do serwera kiedy zablokowany na REPLY wątek klienta otrzymuje: sygnał, zakończenie wątku, kernel timeout; pole code tegu pulsu będzie: _PULSE_CODE_UNBLOCK ; pole valuesival_int będzie zawierać rcvid odpowiadający wartości zwracanej przez MsgReceive*(); pozwala to serwerowi na oczyszczenie wszelkich zasobów zaalokowanych dla klienta, ponieważ klient nie jest już zainteresowany w oczekiwaniu na ich wynik; serwer MUSI wywołać MsgReply*() lub MsgError() do klienta, w przeciwnym razie klient zostanie zablokowany na zawsze Programowanie Systemów Wbudowanych 51/91

52 Jeżeli serwer wywołuje MsgReceive() oraz istnieje kilku klientów zablokowanych na SEND: komunikat SEND od procesu o najwyższym priorytecie zostanie odebrany; jeżeli wielu klientów posiada jednakowy priorytet, obsłużony będzie ten który najdłużej czekał; takie same reguły jak przy szeregowaniu PRZYPADEK 2: Send przed Receive serwer zajęty MsgSend() Zabloko wany na SEND Zablokowany na REPLY CZAS MsgReceive() MsgReply() READY Programowanie Systemów Wbudowanych 52/91

53 Jeżeli wątki wywołują MsgSend() w kolejności: id wątku priorytet Komunikaty będą odebrane w kolejności:?,?,?,? Programowanie Systemów Wbudowanych 53/91

54 Jeżeli proces odbiera komunikaty i pulsy: kolejność odbioru ciągle opiera się na priorytetach; wykorzystywany jest priorytet pulsu; pulsy i komunikaty mogą się mieszać Programowanie Systemów Wbudowanych 54/91

55 Jeżeli wątki wysyłają pulsy i komunikaty następująco: C Z A S Thread Thread id priority Action 1 10 Send pulse p1 with pulse priority Send message 1 10 Send pulse p2 with pulse priority Send message 1 10 Send message 4 17 Send pulse p3 with pulse priority 6 Komunikat od wątku 1 dociera do serwera przed pulsem p2, który był wysłany wcześniej Programowanie Systemów Wbudowanych 55/91

56 Priorytety Problem inwersji priorytetów: wysokie t2 t1 server MsgReceive() nikie 0 Uwaga: to nie ma miejsca w rzeczywistości Programowanie Systemów Wbudowanych 56/91

57 Priorytety Rozwiązanie: wysoki niski t1 t3 t2 4 server server jeżeli wielu klientów wysyła SEND, serwer odziedziczy priorytet po kliencie o najwyższym priorytecie _NTO_CHF_FIXED_PRIORITY wyłączanie dziedziczenia priorytetów Programowanie Systemów Wbudowanych 57/91 5

58 Komunikacja IPC Projektowanie systemu komunikacji Unikanie zakleszczeń Co się stanie jeżeli serwer potrzebuje wysłać komunikat do klienta? SEND klient serwer można umieścić kanał u klienta ale, jeżeli dwa procesy wykonują SEND jeden do drugiego, będą zablokowani, czekając nawzajem na odpowiedź: tzw DEADLOCK SEND Programowanie Systemów Wbudowanych 58/91

59 Projektowanie systemu komunikacji Unikanie zakleszczeń: możemy użyć klienta, wykonującego wszystkie blokujące operacje wysłania; serwer wykorzystuje nieblokujące pulsy; kiedy klient otrzymuje puls, wysyła do serwera komunikat z pytaniem o dane; SEND REPLY Serwer 1 pulse Klient 3 SEND REPLY Programowanie Systemów Wbudowanych 59/91 2

60 Projektowanie systemu komunikacji Unikanie zakleszczeń: Klient może mieć kanał: SEND klient kanał kanał serwer SEND Programowanie Systemów Wbudowanych 60/91

61 Projektowanie systemu komunikacji Unikanie zakleszczeń: Jeżeli mamy tylko dwa kanały: SEND Serwer Klient SEND rozpoznanie potencjalnego zakleszczenia jest proste, ale w złożonym systemie: P4 P1 P2 P3 jest trudniejsze P5 P6 P7 Programowanie Systemów Wbudowanych 61/91

62 Komunikacja IPC Rozwiązanie: Hierarchia wysyłania: P1 P2 P4 P3 P5 P6 P7 P8 projektujemy graf stanów gdzie polecenie wysłania zawsze schodzą w dół, nigdy nie powodując zakleszczenia; jeżeli dwa procesy na tym samym poziomie muszą się komunikować, po prostu tworzymy kolejny poziom Programowanie Systemów Wbudowanych 62/91

63 Nie blokujące pulsy wykorzystujemy do wysyłania powiadomień w górę: P1 P2 P4 P3 P5 P6 P7 blokujący send nie blokujący puls P8 Programowanie Systemów Wbudowanych 63/91

64 Asynchroniczne oraz synchroniczne przekazywanie komunikatów: komunikacja asynchroniczna: klient nie jest zablokowany w oczekiwaniu na Reply ; klienci mogą kolejkować wiele wiadomości; serwer może być zablokowany w oczekiwaniu na komunikaty lub może opróżnić kolejkę; Proces klienta Proces serwera Thread Wątek msg msg msg 1 2 asyncmsg_put() Thread Wątek asyncmsg_get() Programowanie Systemów Wbudowanych 64/91

65 Połączenia asynchroniczne i kanały: połączenia asynchroniczne i kanał nie są takie same jak połączenia i kanały synchroniczne, chociaż koncepcja jest podobna; klient/serwer często będzie mieć połączenie/kanał synchroniczny oraz dodatkowo asynchroniczne duplikaty klient serwer połączenie async kanał async asyncmsg_connect_attach() asyncmsg_channel_create() Programowanie Systemów Wbudowanych 65/91

66 Klient może zarejestrować wywołanie zwrotne (callback): callback jest wywoływany za każdym razem gdy komunikat zostanie dostarczony do serwera; wywołanie zwrotne rejestrowane jest podczas nawiązywania połączenia Programowanie Systemów Wbudowanych 66/91

67 RT Linux Istnienie procesów standardowego Linuxa oraz RT Linuxa stawia nowe wyzwania przed projektantami systemów w kwestii komunikacji zadań RT z zadaniami non-rt Co stanowi głównym zagrożeniem? Programowanie Systemów Wbudowanych 67/91

68 RT Linux Jądro Linuxa może być wywłaszczane przez zadania krytyczne, stąd nie mogą one wywoływać systemowych funkcji jądra Linuxa Rozwiązanie problemu? Programowanie Systemów Wbudowanych 68/91

69 Data Software level RT Linux RT-Kernel RT-FIFO Linux Process RT Processes X-Window Linux Kernel Display Disk Devices RTLINUX/RTFIFO and Tcl/Tk - Nishant Upadhyaya, Maung Wynn Aung Han - CIS642: Seminar in Real-time Systems, University of Pennsylvania Embedded System Programming 69/38

70 RT Linux RT FIFO: bufory o stałym rozmiarze; od strony procesów RT widziane są podobnie jak UNIX owe pipe y; operacje wykonywane na RT-FIFO są nieblokujące z punktu widzenia zadań krytycznych; dostępne są w formie ładowalnego modułu RT Core; Programowanie Systemów Wbudowanych 70/91

71 Komunikacja IPC RT Linux umieszczone są w przestrzeni RT Core; zadania krytyczne mogą wykonywać następujące operacje na RT-FIFO: tworzenie, usuwanie, odczytywanie, zapisywanie, operacje zapisu i odczytu są niepodzielne i nieblokujące od strony procesów RT (rozwiązuje to inwersję priorytetów); Programowanie Systemów Wbudowanych 71/91

72 RT Linux Linux RT FIFO: procesy Linuxa widzą RT-FIFO jako urządzenia znakowe; procesy Linuxa pracują na RT-FIFO jak na zwykłych plikach, pod warunkiem, że proces RT utworzył wcześniej odpowiadające mu RT-FIFO; sposób obsługi RT-FIFO zależy od wersji RT Linuxa: początkowo były to urządzenia nazwane /dev/rtf0 do rtf64 Pliki te musiały być utworzenie ręcznie z poziomu OS Linuxa; obecnie mogą mieć dowolną nazwę i nie muszą być tworzone z poziomu wątków Linuxa Programowanie Systemów Wbudowanych 72/91

73 RT Linux Linux RT FIFO: Pamięć dla RT-FIFO musi być alokowana z poziomu Linuxa np w module inicjującym OS, a nie bezpośrednio w procesie RT; Ilość RT-FIFO jest określona na poziomie kompilacji kodu jądra Czy potrzebne są mechanizmy synchronizacji zapisu i odczytu do RT- FIFO od strony zadań RT i procesów zwykłego Linuxa? Programowanie Systemów Wbudowanych 73/91

74 RT Linux RT-FIFO RT Task non-rt Task RT Task non-rt Task RT Kernel Space Std Linux Space RTLINUX/RTFIFO and Tcl/Tk - Nishant Upadhyaya, Maung Wynn Aung Han - CIS642: Seminar in Real-time Systems, University of Pennsylvania Programowanie Systemów Wbudowanych 74/91

75 RT Linux Linux pamięć współdzielona: mbuff driver alokuje nazwany obszar pamięci w wirtualnej pamięci jądra poprzez wykorzystanie funkcji vmalloc(); mbuff przegląda strona po stronie pamięć wirtualną i rezerwuje dla nich strony pamięci fizycznej; umieszczenie pamięci wirtualnej w pamięci fizycznej i odpowiednie jej stronicowanie zapobiega występowaniu wyjątku błędu strony; inaczej mówiąc VMM ang Virtual Machine Monitor nie jest wywoływany w momencie gdy proces jądra lub proces RT odwołuje się do zaalokowanej pamięci; Programowanie Systemów Wbudowanych 75/91

76 RT Linux Linux pamięć współdzielona: ponieważ RT-Core blokuje jądro zwykłego Linuxa w czasie wykonywania zadań RT jakiekolwiek odwołanie do VMM blokuje system; co więcej każde odwołanie jądra Linuxa do strony pamięci wirtualnej umieszczonej w fizycznej pamięci RAM powoduje błąd systemu; od strony zwykłego Linuxa funkcjonalność mbuff dostępna jest poprzez urządzenie /dev/mbuff Programowanie Systemów Wbudowanych 76/91

77 Windows Embedded W Windows każde okno ma swoją procedurę sterującą: LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { } gdzie: hwnd jest uchwytem identyfikatorem okna, message jest komunikatem kierowanym do okna, wparam jest parametrem krótkim komunikatu, lparam jest parametrem długim komunikatu, Programowanie Systemów Wbudowanych 77/91

78 Windows Embedded Komunikat jest częścią kodu do wykonania dla procedury okna Typy komunikatów: komunikaty systemowe (generowane przez system w reakcji na zdarzenia pochodzące od urządzeń); komunikaty aplikacji (zdefiniowane na etapie projektowania aplikacji i wysyłane od okna do okna) Programowanie Systemów Wbudowanych 78/91

79 Windows Embedded Komunikaty systemowe z predefiniowanym przedrostkiem: WM_ - duża grupa komunikatów ogólnych, CCM_ - komunikaty uogólnione różnych kontrolek, EM_, EN_ - komunikaty pola edycji, CDM_ - komunikaty dialogów (np otwarcia pliku), Programowanie Systemów Wbudowanych 79/91

80 Windows Embedded Komunikaty ogólne: komunikaty okien powiadomienia o zdarzeniach okien powiadomienia o zdarzeniach klawiatury komunikaty klawiatury powiadomienia o skrótach klawiaturowych komunikaty skrótów klawiaturowych powiadomienia o zdarzeniach myszy Programowanie Systemów Wbudowanych 80/91

81 Windows Embedded Przekazywanie komunikatów: komunikaty niekolejkowane komunikaty kolejkowane Programowanie Systemów Wbudowanych 81/91

82 Windows Embedded Komunikaty niekolejkowane: Natychmiastowa reakcja okna, np: WM_ACTIVATE WM_SETFOCUS WM_SETCURSOR Wysyłane przez funkcje: SendMessage ( ); SendMessageTimeout ( ); SendNotifyMessage ( ); BroadcastSystemMessage ( ) Programowanie Systemów Wbudowanych 82/91

83 Windows Embedded Funkcja SendMessage LRESULT WINAPI SendMessage( in HWND hwnd, in UINT Msg, in WPARAM wparam, in LPARAM lparam ); Wysyła komunikat do okna i czeka na jego obsłużenie Nie powraca, dopóki okno docelowe nie zareaguje na komunikat Programowanie Systemów Wbudowanych 83/91

84 Windows Embedded Funkcja SendMessageTimeout LRESULT WINAPI SendMessageTimeout( in HWND hwnd, in UINT Msg, in WPARAM wparam, in LPARAM lparam, in UINT fuflags, in UINT utimeout, out_opt PDWORD_PTR lpdwresult ); Wysyła komunikat do okna i czeka na jego obsłużenie, ale tylko określony czas Umożliwia przesłanie komunikatu do wszystkich okien najwyższego poziomu (głównych okien programów) Programowanie Systemów Wbudowanych 84/91

85 Windows Embedded Funkcja SendNotifyMessage LRESULT WINAPI SendNotifyMessage( in HWND hwnd, in UINT Msg, in WPARAM wparam, in LPARAM lparam ); Wysyła komunikat do okna i: jeśli okno należy do tego samego wątku, to czeka na jego obsłużenie; jeśli nie, to przekazuje komunikat do procedury okna i wraca od razu Programowanie Systemów Wbudowanych 85/91

86 Windows Embedded Funkcja BroadcastSystemMessage long WINAPI BroadcastSystemMessage( in DWORD dwflags, inout_opt LPDWORD lpdwrecipients, in UINT uimessage, in WPARAM wparam, in LPARAM lparam ); Wysyła komunikat do określonych odbiorców: aplikacji instalowanych sterowników urządzeń systemowych sterowników urządzeń sterowników sieciowych Programowanie Systemów Wbudowanych 86/91

87 Windows Embedded Komunikaty kolejkowane komunikaty od klawiatury komunikaty od myszy inne, które nie muszą być obsłużone natychmiast umieszczane w kolejce komunikatów Programowanie Systemów Wbudowanych 87/91

88 Windows Embedded Kolejki komunikatów Pojedyncza kolejka systemowa Kolejki własne wątków GUI Inicjalnie każdy wątek jest tworzony bez kolejki komunikatów Dla wątku, który wywołuje funkcje GUI, przy pierwszym wywołaniu tworzona jest kolejka komunikatów Funkcje nie należące do GUI nie tworzą kolejki komunikatów Programowanie Systemów Wbudowanych 88/91

89 Komunikacja Windows Embedded Umieszczanie komunikatów w kolejce: Funkcje: PostMessage PostThreadMessage Komunikaty są umieszczane na końcu kolejki Komunikaty opuszczają kolejkę i są przekazywane do procedury okna w kolejności ich umieszczania w kolejce z wyjątkiem: WM_PAINT WM_TIMER WM_QUIT które są zatrzymywane w kolejce do czasu, aż nie ma w niej innych komunikatów i wtedy są przekazywane do procedury okna Programowanie Systemów Wbudowanych 89/91

90 Windows Embedded Funkcja PostMessage: Wysyła komunikat do kolejki wątku skojarzonego z oknem i powraca natychmiast Funkcja PostThreadMessage: Wysyła komunikat do kolejki określonego wątku i powraca natychmiast Programowanie Systemów Wbudowanych 90/91

91 Windows Embedded Pętla obsługi komunikatów Aplikacja pobiera w pętli komunikaty z kolejki, tłumaczy je i kieruje do właściwej procedury okna MSG msg; BOOL bret; while((bret = GetMessage( &msg, NULL, 0, 0 ))!= 0){ } if (bret == -1){ } // handle the error and possibly exit else{ } TranslateMessage(&msg); DispatchMessage(&msg); Programowanie Systemów Wbudowanych 91/91

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.5

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.5 Mariusz Rudnicki mariuszrudnicki@etipggdapl PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ5 Komunikacja IPC Omawiane zagadnienia Czym jest komunikacja międzyprocesowa? W jakim celu stosuje się komunikację

Bardziej szczegółowo

Komunikaty w Windows. Jarosław Kuchta

Komunikaty w Windows. Jarosław Kuchta Komunikaty w Windows Jarosław Kuchta Okna i procedury okien W Windows każde okno ma swoją procedurę sterującą. LRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { } gdzie:

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

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

Bardziej szczegółowo

IPC: Kolejki komunikatów

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

Bardziej szczegółowo

Kolejki FIFO (łącza nazwane)

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

Bardziej szczegółowo

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów

Bardziej szczegółowo

5. Model komunikujących się procesów, komunikaty

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ęć

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino IPC native Mariusz Rudnicki 2016 Wstęp QNX Neutrino wspiera różnorodne mechanizmy komunikacji IPC: rodzima komunikacja QNX Neutrino

Bardziej szczegółowo

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

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

Bardziej szczegółowo

Mechanizmy z grupy IPC

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ółowo

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux. Kod szkolenia: Tytuł szkolenia: PS/LINUX Programowanie systemowe w Linux Dni: 5 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów tworzących aplikacje w systemie Linux, którzy chcą poznać

Bardziej szczegółowo

Aplikacja Sieciowa wątki po stronie klienta

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ę

Bardziej szczegółowo

Prezentacja systemu RTLinux

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

Bardziej szczegółowo

QNX Neutrino (v 6.3)

QNX Neutrino (v 6.3) QNX Neutrino (v 6.3) System operacyjny czasu rzeczywistego Wielozadaniowy, architektura z mikrojądrem API zgodne ze standardem POSIX Rozproszony, przezroczysta praca w sieci Mechanizmy wykrywania/tolerowania

Bardziej szczegółowo

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Opis 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ółowo

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

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()

Bardziej szczegółowo

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Łą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ółowo

Klient-Serwer Komunikacja przy pomocy gniazd

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

Bardziej szczegółowo

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

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:

Bardziej szczegółowo

Działanie systemu operacyjnego

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

Bardziej szczegółowo

Działanie systemu operacyjnego

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

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

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

Bardziej szczegółowo

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2 Mariusz Rudnicki mariusz.rudnicki@eti.pg.gda.pl PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2 Architektura - Procesy Proces program załadowany do pamięci; identyfikowany przez id procesu, zwykle nazywany

Bardziej szczegółowo

13. Kolejki komunikatów POSIX

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.

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO. Mariusz RUDNICKI: pok. 753 tel.:

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO. Mariusz RUDNICKI: pok. 753 tel.: PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO Mariusz RUDNICKI: mariusz.rudnicki@eti.pg.gda.pl pok. 753 tel.: 347 26 39 Zagadnienia Pojęcia podstawowe SCR Architektura QNX Neutrino Procesy, wątki i synchronizacja

Bardziej szczegółowo

Programowanie na poziomie sprzętu. Programowanie w Windows API

Programowanie na poziomie sprzętu. Programowanie w Windows API Programowanie w Windows API Windows API Windows Application Programming Interface (API) to zestaw funkcji systemu operacyjnego Windows, które umożliwiają aplikacjom korzystanie z wszystkich usług systemu.

Bardziej szczegółowo

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1 Mariusz Rudnicki mariusz.rudnicki@eti.pg.gda.pl PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1 Przedmiot PSCR Przedmiot PSCR Wykład do połowy semestru Laboratorium od połowy semestru Projekt Zaliczenie

Bardziej szczegółowo

TRX API opis funkcji interfejsu

TRX API opis funkcji interfejsu TRX Krzysztof Kryński Cyfrowe rejestratory rozmów seria KSRC TRX API opis funkcji interfejsu Kwiecień 2013 Copyright TRX TRX ul. Garibaldiego 4 04-078 Warszawa Tel. 22 871 33 33 Fax 22 871 57 30 www.trx.com.pl

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

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ę

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

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ę,

Bardziej szczegółowo

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows. Kod szkolenia: Tytuł szkolenia: PS/WIN Programowanie systemowe w Windows Dni: 5 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów tworzących aplikacje w systemach z rodziny Microsoft Windows,

Bardziej szczegółowo

Działanie systemu operacyjnego

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

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

Działanie systemu operacyjnego

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

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1 Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

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

Bardziej szczegółowo

1 Timery i zdarzenia

1 Timery i zdarzenia J. Ułasiewicz Komputerowe systemy sterowania 1 1 Timery i zdarzenia 1.1 Funkcje i programowanie timerów Jedną z najczęściej spotykanych funkcji systemu czasu rzeczywistego jest generowanie zdarzeń które

Bardziej szczegółowo

Iteracyjny serwer TCP i aplikacja UDP

Iteracyjny serwer TCP i aplikacja UDP Iteracyjny serwer TCP i aplikacja UDP Iteracyjny serwer TCP Funkcje wywoływane przez serwer TCP socket() - bind() - listen() - accept() - read() / write() - close() socket() Creates an endpoint for communication

Bardziej szczegółowo

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor W lekcji 5 objaśniane jest działanie i zastosowanie funkcji handlemessage() oraz initialize(). Omówiony zostanie również konstruktor

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

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

Bardziej szczegółowo

projekt akademicki w Institute for Mining and Technology of New Mexico. Autor Victor Yodaiken FSMLabs komercyjna odmiana RTLinuxPro

projekt akademicki w Institute for Mining and Technology of New Mexico. Autor Victor Yodaiken FSMLabs komercyjna odmiana RTLinuxPro projekt akademicki w Institute for Mining and Technology of New Mexico. Autor Victor Yodaiken FSMLabs komercyjna odmiana RTLinuxPro Rygorystyczny (twardy) system operacyjny czasu rzeczywistego. Jego charakterystyczną

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) int zabij_proces (int pid){ int stat; stat = kill(pid,

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1 Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij proces (int pid){ int stat; stat = kill(pid,

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC 27. października 2010

Zdalne wywoływanie procedur RPC 27. października 2010 Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_ proces (int pid){ int stat; stat

Bardziej szczegółowo

Systemy operacyjne III

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

Bardziej szczegółowo

Komunikacja między sterownikami przez protokół ADS

Komunikacja między sterownikami przez protokół ADS Komunikacja między sterownikami przez protokół ADS Poziom trudności: łatwy Wersja dokumentacji: 1.0 Aktualizacja: 20.03.2015 Beckhoff Automation Sp. z o. o. Spis treści 1. Komunikacja ADS... 3 2. Konfiguracja

Bardziej szczegółowo

Pamięć współdzielona

Pamięć 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ółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Wywoływanie procedur zdalnych Mechanizm wywołania main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014 06. Programowanie Usług Sieciowych

Bardziej szczegółowo

Podręcznik użytkownika

Podręcznik użytkownika Podręcznik użytkownika Moduł kliencki Kodak Asset Management Software Stan i ustawienia zasobów... 1 Menu Stan zasobów... 2 Menu Ustawienia zasobów... 3 Obsługa alertów... 7 Komunikaty zarządzania zasobami...

Bardziej szczegółowo

76.Struktura oprogramowania rozproszonego.

76.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ółowo

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej SEGMENT TCP CZ. I Numer portu źródłowego (ang. Source port), przeznaczenia (ang. Destination port) identyfikują aplikacje wysyłającą odbierającą dane, te dwie wielkości wraz adresami IP źródła i przeznaczenia

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat

Bardziej szczegółowo

Programowanie współbieżne. Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API.

Programowanie współbieżne. Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API. Programowanie współbieżne Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API. Cel zadania. Celem zadania jest poznanie podstawowych funkcji Windows API umożliwiających tworzenie

Bardziej szczegółowo

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych Ustawienia serwera 1. Uruchomić serwer KEPServerEX w trybie administracji 2. Wywołać ustawienia serwera 3. W zakładce Runtime Process ustawić opcję Process Mode w tryb Interactive 4. Zaakceptować ustawienia

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................

Bardziej szczegółowo

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1 Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego

Bardziej szczegółowo

Projektowanie oprogramowania systemów KOMUNIKACJA MIĘDZYPROCESOWA

Projektowanie oprogramowania systemów KOMUNIKACJA MIĘDZYPROCESOWA Projektowanie oprogramowania systemów KOMUNIKACJA MIĘDZYPROCESOWA plan Informacje ogólne Mechanizmy IPC Pliki i blokady Sygnały Gniazda i potoki Nazwane potoki Pamięć współdzielona i pliki mapowane w pamięci

Bardziej szczegółowo

1. Kolejki komunikatów POSIX

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

Bardziej szczegółowo

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 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ółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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ę

Bardziej szczegółowo

Kolejki komunikatów POSIX

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).

Bardziej szczegółowo

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1 Architektury systemów rozproszonych LABORATORIUM Ćwiczenie 1 Temat: Aplikacja klient-serwer - implementacja w środowisku QT Creator. Przykładowy projekt aplikacji typu klient - serwer został udostępniony

Bardziej szczegółowo

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

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

Bardziej szczegółowo

Wielozadaniowość w systemie Microsoft Windows

Wielozadaniowość w systemie Microsoft Windows Wielozadaniowość w systemie Microsoft Windows mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Idea wielozadaniowości Proces główny Wątki Algorytm szeregowania ustala kolejność

Bardziej szczegółowo

TCP - receive buffer (queue), send buffer (queue)

TCP - receive buffer (queue), send buffer (queue) BSD sockets c.d. TCP - receive buffer (queue), send buffer (queue) Z każdym gniazdem sieciowym są skojarzone: Bufor do odbierania danych (ang. receive buffer) Przychodzące dane są umieszczane w buforze

Bardziej szczegółowo

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne Zdalne wywołania procedur Jarosław Kuchta Programowanie Współbieżne Podstawy RPC Remote Procedure Call Wywołanie procedur jednego procesu z innego procesu. Proces wywoływany serwer Proces wywołujący -

Bardziej szczegółowo

Podstawowe zagadnienia

Podstawowe zagadnienia SWB - Systemy operacyjne w systemach wbudowanych - wykład 14 asz 1 Podstawowe zagadnienia System operacyjny System czasu rzeczywistego Systemy wbudowane a system operacyjny Przykłady systemów operacyjnych

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Jądro systemu operacyjnego

Jądro systemu operacyjnego Jądro systemu operacyjnego Jądro (ang. kernel) jest to podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego zadania. Zapewnia ono usługi systemowe takie jak: komunikacja między

Bardziej szczegółowo

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski Transport część 2: protokół TCP Sieci komputerowe Wykład 6 Marcin Bieńkowski Protokoły w Internecie warstwa aplikacji HTTP SMTP DNS NTP warstwa transportowa TCP UDP warstwa sieciowa IP warstwa łącza danych

Bardziej szczegółowo

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1 Instrukcja obsługi ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1 1 ArtPlayer to proste oprogramowanie umożliwiające odtwarzanie plików video i ich wybór poprzez protokół

Bardziej szczegółowo

Komunikacja międzywęzłowa w rozwiązaniach klastrowych

Komunikacja międzywęzłowa w rozwiązaniach klastrowych Komunikacja międzywęzłowa w rozwiązaniach klastrowych Projekt z przedmiotu RSO Michał Lech M.Lech@elka.pw.edu.pl 16 czerwca 2005 Spis treści 1 Wstęp. 1 2 Własności Internode Communication Subsection (ICS).

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 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ółowo

OPROGRAMOWANIE STEROWNIKA ROLET UNIV

OPROGRAMOWANIE STEROWNIKA ROLET UNIV 1. Cechy Oprogramowanie sterownika rolet z silnikiem AC UNIV 3.7.0.x Umożliwia sterowanie roletą przy pomocy jednego (start), dwóch (góra/stop, dół/stop) lub trzech przycisków sterujących (góra, dół, stop)

Bardziej szczegółowo

Podręcznik programisty

Podręcznik programisty Dokument zawiera opis funkcji i rozszerzeń dla aplikacji graficznych i konsolowych pracujących z oprogramowaniem OTC Terminal. Terminal GUI Terminal Console V. 2.4 Podręcznik programisty OTC S.A., 2008

Bardziej szczegółowo

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

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

Bardziej szczegółowo

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

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

Bardziej szczegółowo

wersja dokumentu 1.0 data wydania 2008.11.14

wersja dokumentu 1.0 data wydania 2008.11.14 HERMESEDI System elektronicznej wymiany dokumentów w systemie EDI/ECOD wersja dokumentu 1.0 data wydania 2008.11.14 Syriusz sp. z o.o. Rzeszów 2008 SPIS TREŚCI: 1. Przeznaczenie... 3 2. Schemat pracy...

Bardziej szczegółowo

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

SYLABUS 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

Remote Quotation Protocol - opis

Remote Quotation Protocol - opis Remote Quotation Protocol - opis Michał Czerski 20 kwietnia 2011 Spis treści 1 Streszczenie 1 2 Cele 2 3 Terminologia 2 4 Założenia 2 4.1 Połączenie............................... 2 4.2 Powiązania z innymi

Bardziej szczegółowo

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

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

Bardziej szczegółowo

IdyllaOS. Prosty, alternatywny system operacyjny. www.idyllaos.org. Autor: Grzegorz Gliński. Kontakt: milyges@gmail.com

IdyllaOS. Prosty, alternatywny system operacyjny. www.idyllaos.org. Autor: Grzegorz Gliński. Kontakt: milyges@gmail.com IdyllaOS www.idyllaos.org Prosty, alternatywny system operacyjny Autor: Grzegorz Gliński Kontakt: milyges@gmail.com Co to jest IdyllaOS? IdyllaOS jest to mały, prosty, uniksopodobny, wielozadaniowy oraz

Bardziej szczegółowo

Linux Kernel III. Character devices

Linux 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ółowo

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

U M L.  System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux) http://user-mode-linux.sourceforge.net/ System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux) Autor: Jeff Dike Koncepcja powstała w 1999 r. Początkowo jako patch do jądra 2.0

Bardziej szczegółowo

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe Wykład 7: Transport: protokół TCP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 7 1 / 23 W poprzednim odcinku Niezawodny transport Algorytmy

Bardziej szczegółowo

Kolejkowanie wiadomości Standard MQ (JMS)

Kolejkowanie wiadomości Standard MQ (JMS) Kolejkowanie wiadomości Standard MQ (JMS) Kolejkowanie wiadomości Standard wymiany informacji wiadomości (ang. message) między procesami (mogą być rozproszone) Przykładowe rozwiązania: - RabbitMQ - ActiveMQ

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

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

Bardziej szczegółowo

Wykład 3: Implementacja programów wbudowanych

Wykład 3: Implementacja programów wbudowanych Systemy wbudowane Wykład 3: Implementacja programów wbudowanych Problemy implementacji oprogramowania wbudowanego Szeregowanie zadań System operacyjny Obsługa przerwań 10/16/2010 S.Deniziak:Systemy wbudowane

Bardziej szczegółowo

Klient poczty elektronicznej - Thunderbird

Klient poczty elektronicznej - Thunderbird Klient poczty elektronicznej - Thunderbird Wstęp Wstęp Klient poczty elektronicznej, to program który umożliwia korzystanie z poczty bez konieczności logowania się na stronie internetowej. Za jego pomocą

Bardziej szczegółowo

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Struktury systemów operacyjnych

Struktury systemów operacyjnych Struktury systemów operacyjnych Jan Tuziemski Część slajdów to zmodyfiowane slajdy ze strony os-booi.com copyright Silberschatz, Galvin and Gagne, 2013 Cele wykładu 1. Opis usług dostarczanych przez OS

Bardziej szczegółowo

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski Transport część 2: protokół TCP Sieci komputerowe Wykład 6 Marcin Bieńkowski Protokoły w Internecie warstwa aplikacji HTTP warstwa transportowa SMTP TCP warstwa sieciowa warstwa łącza danych warstwa fizyczna

Bardziej szczegółowo

Tworzenie aplikacji rozproszonej w Sun RPC

Tworzenie aplikacji rozproszonej w Sun RPC Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki

Bardziej szczegółowo