Zwielokrotnianie wejścia wyjścia

Podobne dokumenty
J. Ułasiewicz Łącza nienazwane, nazwane, select 1

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP

4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane

J. Ułasiewicz Łącza nienazwane, nazwane, select 1

Zaawansowane operacje wejścia/wyjścia

Zaawansowane operacje wejścia/wyjścia

Zaawansowane operacje wejścia/wyjścia

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Zaawansowane operacje wejścia/wyjścia

Programowanie sieciowe

Serwer współbieżny połączeniowy

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

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

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

Kolejki FIFO (łącza nazwane)

Schemat dla UDP. = możliwe zablokowanie aplikacji KLIENT SERWER. s=socket(...) bind(s,...) recvfrom(s,...) sendto(s,...) recvfrom(s,...

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

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

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

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Futex (Fast Userspace Mutex) Łukasz Białek

Gniazda. S. Samolej: Gniazda 1

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

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

Jedrzej Ułasiewicz Komputerowe systemy sterowania 1

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

Klient-Serwer Komunikacja przy pomocy gniazd

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

Metody obsługi zdarzeń

Adresowanie grupowe. Bartłomiej Świercz. Katedra Mikroelektroniki i Technik Informatycznych. Łódź, 25 kwietnia 2006

Iteracyjny serwer TCP i aplikacja UDP

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

Serwery współbieżne c.d.

Architektura i administracja systemów operacyjnych

Przerwania, polling, timery - wykład 9

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

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Podstawowe typy serwerów

Sygnały. 7. Sygnały (2005/2006)

Systemy Operacyjne 1 Laboratorium 3 Potoki i łącza nazwane w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Instytut Teleinformatyki

Działanie systemu operacyjnego

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Łącza nienazwane(potoki)

9. Problem wzajemnego wykluczania i sekcji krytycznej

Programowanie sieciowe

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Standard transmisji równoległej LPT Centronics

Mikroinformatyka. Mechanizmy ochrony pamięci

Działanie systemu operacyjnego

Podstawy Informatyki Układ przerwań

5. Algorytmy serwera

Dokumentacja programu sieciowego - komunikacja z portem szeregowym

Architektura systemów komputerowych. dr Artur Bartoszewski

Przykład aplikacji UDP

Systemy wejścia-wyjścia. wyjścia

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Synchronizowanie czasu kontrolera PACSystems do urządzeń HMI

Pobieranie argumentów wiersza polecenia

Wykład PASCAL - Pliki tekstowe

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Systemy Operacyjne - Operacje na plikach

Systemy operacyjne II

Budowa systemów komputerowych

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Bezpieczeństwo systemów informatycznych

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

System plików Linuksa

1.1 Definicja procesu

Materiały dodatkowe Krótka charakterystyka protokołu MODBUS

Gniazda BSD. Procesy w środowisku sieciowym. Gniazda podstawowe funkcje dla serwera. Gniazda podstawowe funkcje dla klienta

Temat zajęć: Obsługa systemu plików.

asix4 Podręcznik użytkownika CtTwinCAT - drajwer protokołu ADS systemu TwinCAT Podręcznik użytkownika

Architektura komputerów. Układy wejścia-wyjścia komputera

Warstwy oprogramowania wejścia/wyjścia

Linux Kernel III. Character devices

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

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

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Programowanie usług działających w tle

Działanie systemu operacyjnego

Systemy rozproszone. Krzysztof Banaś Obliczenia równoległe 1

Metody komunikacji międzyprocesowej w systemach lokalnych i rozproszonych

1. Tworzenie nowego projektu.

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

4.2 Sposób korzystania z l acza

4. Procesy pojęcia podstawowe

Embedded Systems Programming

Zadanie 2: transakcyjny protokół SKJ (2015)

1. Uruchom poniższy program tworzący pojedynczy wątek:

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

Różnicowy przetwornik ciśnienia EL-PS-xxx

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Transkrypt:

Zwielokrotnianie wejścia wyjścia Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 21 marca 2006

Wstęp Zwielokrotnianie wejścia wyjścia informowanie przez jądro procesu użytkownika o spełnieniu jednego lub więcej warunku wejścia wyjścia dotyczącego np. gotowości deskryptora do odczytu danych z bufora systemu. Ze zwielokrotnienia wejścia wyjścia korzysta się najczęściej w przypadku: gdy program obsługuje więcej niż jeden deskryptor lub większą liczbę gniazd, w sytuacji gdy program stosuje jednocześnie gniazdo nasłuchowe i połączeniowe, kiedy serwer udostępnia naraz wiele usług.

Modele wejścia wyjścia Model wejścia wejścia blokującego. Model wejścia wejścia nieblokującego. Model wejścia wejścia zwielokrotnionego. Model wejścia wejścia sterowanego sygnałami. Model wejścia wejścia asynchronicznego.

Model wejścia wyjścia blokującego Jest to najbardziej rozpowszechniony model. Domyślnie każdy deskryptor i gniazdo jest blokujące. Oznacza to że podczas wywołania funkcji read proces zostaje zablokowany przez jądro systemu na czas odczytania bufora lub przekazania informacji o błędzie. Uwaga: Należy pamiętać że w modelu wejścia wyjścia blokującego funkcje służące do operacji na deskryptorach mogą być przerwane przez sygnał!

Model wejścia wyjścia nieblokującego Model nieblokujący wymaga utworzenia deskryptora w trybie nieblokującym(flaga O_NONBLOCK). Wywołując funkcję systemową na takim deskryptorze(np. read) jądro napotykając sytuację, w którejmusiuśpićproces(np.niemadanychwbuforze)nieusypia go lecz zwraca informację o błędzie(eagain).

Model wejścia wyjścia zwielokrotnionego W modelu wejścia wyjścia zwielokrotnionego korzystamy z wywołania funkcji systemowych select lub poll. Proces nie blokuje się na funkcjach dostępu do bufora(read lub write), lecz na funkcjach select i poll. Funkcje służące do zwielokrotniania wejścia wyjścia zostaną omówione w dalszej części prezentacji.

Model wejścia wyjścia sterowanego sygnałami W modelu tym jądro generuje sygnał SIGIO za każdym razem kiedy deskryptor gotowy jest do czytania.

Model wejścia wyjścia asynchronicznego Jest to nowy model wprowadzony przez standard POSIX.1g jako rozszerzenie dla systemów czasu rzeczywistego. Do obsługi wejścia wyjścia asynchronicznego służą funkcje aio_read i aio_write. Główna różnica pomiędzy modelem sterowanym sygnałami, a modelem asynchronicznym wejścia wyjścia polega na tym, że w modelu asynchronicznym dostajemy informację o zakończeniu operacji, a w modelu sterowanym sygnałami informację o możliwości rozpoczęcia operacji.

Funkcja select Funkcja select nakazuje jądru informowanie procesu użytkownika o zmianach stanu podanych jako argumenty deskryptorów. #include <sys/select.h> int select(int n, fd set readfds, fd set writefds, fd set exceptfds, struct timeval timeout); FDCLR(int fd, fd set set); FDISSET(int fd, fd set set); FDSET(int fd, fd set set); FDZERO(fd set set);

Określenie czasu #include <sys/time.h> struct timeval { long tv sec; / seconds / long tv usec; / microseconds / }; Możemy przekazać argument dotyczący czasu na trzy rożne sposoby: Przekazać wartość NULL co oznacza, że funkcja select ma czekać w nieskończoność. Możemy określić szczegółowy czas i polecić, aby funkcja select nie czekała dłużej niż czas podany jako argument. Możemy ustawić czas na zero, co spowoduje, że funkcja select będzie odpytywała system o stan deskryptorów(tryb polling).

Funkcja poll Funkcja poll ma podobne zastosowanie co funkcja select lecz w porównaniu do funkcji select dostarcza więcej informacji dotyczących urządzeń strumieniowych. #include <sys/poll.h> int poll(struct pollfd ufds, nfds t nfds, int timeout); struct pollfd { int fd; / file descriptor / short events; / requested events / short revents; / returned events / };

Określenie czasu dla funkcji poll Funkcja poll ze względu na parametr timeout: INFTIM oczekuje aż do skutku(wystąpienia zdarzenia na deskryptorze). 0 powraca natychmiast(polling). >0 czekanazdażenieniedłużejniżczaspodanyw milisekundach.

Porównanie funkcji poll i select Funkcja poll jest bardziej skalowalna. Funkcja poll przekazuje dodatkowe informacje o połączeniach strumieniowych. W jądrze Linux 2.6 funkcja select jest zaimplementowana za pomocą funkcji poll. Funkcja select jest znacznie częściej spotykana.