Kolejki FIFO (łącza nazwane)

Podobne dokumenty
4.2 Sposób korzystania z l acza

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

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

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

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

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

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

sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),

Temat zajęć: Obsługa łączy komunikacyjnych

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

Łącza nienazwane(potoki)

IPC: Kolejki komunikatów

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

Klient-Serwer Komunikacja przy pomocy gniazd

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Obsługa plików Procesy

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

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

System plików warstwa logiczna

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

5. Algorytm genetyczny przykład zastosowania

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

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

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

aodczytywać zniegoza pomoc afunkcjiread, (niebuforowane funkcje wejścia/wyjścia). e sukcesem, to zwróci liczb, erzeczywiściezapisanychbajtów.

Programowanie w językach

Ustalanie dostępu do plików - Windows XP Home/Professional

Iteracyjny serwer TCP i aplikacja UDP

Linux: Procesy. Systemy Operacyjne. Mateusz Hołenko. 26 marca 2013

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.

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

Aplikacja Sieciowa wątki po stronie klienta

76.Struktura oprogramowania rozproszonego.

Mechanizmy z grupy IPC

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

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

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

Klient poczty elektronicznej - Thunderbird

Akademia Techniczno-Humanistyczna w Bielsku-Białej

1. Kolejki komunikatów POSIX

Funkcje zawarte w bibliotece < io.h >

KS-ZSA. Mechanizm centralnego zarządzania rolami

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

Zwielokrotnianie wejścia wyjścia

Instytut Teleinformatyki

Znaki globalne w Linuxie

Funkcje zawarte w bibliotece < io.h >

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

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

FAQ: /PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

Zadanie 2: transakcyjny protokół SKJ (2015)

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

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

Integrator ze sklepem internetowym (dodatek do Sage Symfonia ERP Handel)

Programowanie zespołowe

Podstawy i języki programowania

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Odczyty 2.0 Spis treści

1 Przygotował: mgr inż. Maciej Lasota

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

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

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Opis protokołu RPC. Grzegorz Maj nr indeksu:

1 Podstawowe informacje o programie

ROZPROSZONE SYSTEMY OPERACYJNE. Niezawodne usługi w rozwiązaniach SSI dokumentacja projektu. Karol Ostrowski 16 czerwca 2005

System Gokart Timing

SIMON SAYS ARCHITECTURE! Usługi zdalne. Technologie, techniki i praktyki implementacji

Aktualizacja map TT Europa. Aktualizacja map TT Europa w programie mapfactor Navigator w urządzeniach SmartGPS - instrukcja

Instrukcja programu ESKUP

Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania.

Kolejki komunikatów POSIX

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Materiały szkoleniowe. Zarządzanie relacjami z klientami WF-CRM

INFRA. System Connector. Opis wdrożenia systemu

Wstęp do programowania 2

Systemy Operacyjne - Operacje na plikach

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Problemy techniczne. Jak umieszczać pliki na serwerze FTP?

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Utworzenie pliku. Dowiesz się:

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Program dla praktyki lekarskiej

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

IIIIIIIIIIIIIIIMMIMMIII

Koordynacja procesów w środowisku rozproszonym

Windows Serwer 2008 R2. Moduł 5. Zarządzanie plikami

Przy wykonywaniu rozliczeń obowiązują pewne zasady, do których nie zastosowanie się będzie skutkowało odrzuceniem raportów ze strony NFZ:

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

Systemy operacyjne System sieciowy UNIX-a

Instrukcja IT Service & Help Desk Ticket System.

Pocztowe Konto Firmowe - aneks do umowy

Poradnik korzystania z usługi FTP

Statyczne i dynamiczne predykaty

PWI Instrukcja użytkownika

Transkrypt:

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 przez łącza 2 Funkcje systemowe tworzenie łącza odczyt z łącza zapis do łącza zamykanie łącza 3 Zadania praktyczne Mateusz Hołenko Kolejki FIFO (łącza nazwane) [1/14]

Łącza w systemie Linux

Łącza nazwane i nienazwane łącza służą do komunikacji między procesami w systemie Linux wyróżnia się dwa rodzaje łączy: nienazwane, inaczej potoki nazwane, inaczej kolejki FIFO łącza są implementowane jako pliki specjalne posiadają swój i-węzeł posiadają bloki z danymi można do nich pisać i z nich czytać Mateusz Hołenko Kolejki FIFO (łącza nazwane) [3/14]

Łącza nazwane i nienazwane łącza służą do komunikacji między procesami w systemie Linux wyróżnia się dwa rodzaje łączy: nienazwane, inaczej potoki nazwane, inaczej kolejki FIFO łącza są implementowane jako pliki specjalne posiadają swój i-węzeł posiadają bloki z danymi można do nich pisać i z nich czytać Mateusz Hołenko Kolejki FIFO (łącza nazwane) [3/14]

Łącza nazwane i nienazwane łącza służą do komunikacji między procesami w systemie Linux wyróżnia się dwa rodzaje łączy: nienazwane, inaczej potoki nazwane, inaczej kolejki FIFO łącza są implementowane jako pliki specjalne posiadają swój i-węzeł posiadają bloki z danymi można do nich pisać i z nich czytać Mateusz Hołenko Kolejki FIFO (łącza nazwane) [3/14]

Ograniczenia łączy limit wielkości dostęp jedynie sekwencyjny (brak możliwości wykorzystania funkcji lseek) specyfika odczytu danych odczytywane dane są usuwane z łącza dane odczytywane są w takiej samej kolejności jak były zapisywane blokowanie operacji zapisu gdy łącze jest pełne odczytu gdy łącze jest puste, a otwarty jest jakiś deskryptor do zapisu otwarcia gdy łącze nie zostało otwarte komplementarnie Mateusz Hołenko Kolejki FIFO (łącza nazwane) [4/14]

Ograniczenia łączy limit wielkości dostęp jedynie sekwencyjny (brak możliwości wykorzystania funkcji lseek) specyfika odczytu danych odczytywane dane są usuwane z łącza dane odczytywane są w takiej samej kolejności jak były zapisywane blokowanie operacji zapisu gdy łącze jest pełne odczytu gdy łącze jest puste, a otwarty jest jakiś deskryptor do zapisu otwarcia gdy łącze nie zostało otwarte komplementarnie Mateusz Hołenko Kolejki FIFO (łącza nazwane) [4/14]

Ograniczenia łączy limit wielkości dostęp jedynie sekwencyjny (brak możliwości wykorzystania funkcji lseek) specyfika odczytu danych odczytywane dane są usuwane z łącza dane odczytywane są w takiej samej kolejności jak były zapisywane blokowanie operacji zapisu gdy łącze jest pełne odczytu gdy łącze jest puste, a otwarty jest jakiś deskryptor do zapisu otwarcia gdy łącze nie zostało otwarte komplementarnie Mateusz Hołenko Kolejki FIFO (łącza nazwane) [4/14]

Ograniczenia łączy limit wielkości dostęp jedynie sekwencyjny (brak możliwości wykorzystania funkcji lseek) specyfika odczytu danych odczytywane dane są usuwane z łącza dane odczytywane są w takiej samej kolejności jak były zapisywane blokowanie operacji zapisu gdy łącze jest pełne odczytu gdy łącze jest puste, a otwarty jest jakiś deskryptor do zapisu otwarcia gdy łącze nie zostało otwarte komplementarnie Mateusz Hołenko Kolejki FIFO (łącza nazwane) [4/14]

Łącza nazwane są widoczne w systemie plików jako pliki specjalne mogą być tworzone za pomocą funkcji systemowych lub w konsoli (polecenie mkfifo) wykorzystywane mogą być przez dowolne procesy mające dostęp do pliku specjalnego łącza Ważne! W odróżnieniu od łączy nienazwanych, kolejki FIFO mogą być wykorzystywane do komunikacji między dowolnymi procesami. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [5/14]

Łącza nazwane są widoczne w systemie plików jako pliki specjalne mogą być tworzone za pomocą funkcji systemowych lub w konsoli (polecenie mkfifo) wykorzystywane mogą być przez dowolne procesy mające dostęp do pliku specjalnego łącza Ważne! W odróżnieniu od łączy nienazwanych, kolejki FIFO mogą być wykorzystywane do komunikacji między dowolnymi procesami. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [5/14]

Łącza nazwane są widoczne w systemie plików jako pliki specjalne mogą być tworzone za pomocą funkcji systemowych lub w konsoli (polecenie mkfifo) wykorzystywane mogą być przez dowolne procesy mające dostęp do pliku specjalnego łącza Ważne! W odróżnieniu od łączy nienazwanych, kolejki FIFO mogą być wykorzystywane do komunikacji między dowolnymi procesami. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [5/14]

Łącza nazwane są widoczne w systemie plików jako pliki specjalne mogą być tworzone za pomocą funkcji systemowych lub w konsoli (polecenie mkfifo) wykorzystywane mogą być przez dowolne procesy mające dostęp do pliku specjalnego łącza Ważne! W odróżnieniu od łączy nienazwanych, kolejki FIFO mogą być wykorzystywane do komunikacji między dowolnymi procesami. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [5/14]

Schemat komunikacji przez potok Rysunek: Schemat użycia potoku nazwanego Mateusz Hołenko Kolejki FIFO (łącza nazwane) [6/14]

Problemy funkcje read, write, open są blokujące istnieje niebezpieczeństwo zakleszczenia należy uważać podczas korzystania z innych mechanizmów synchronizacji (np. funkcji wait) Mateusz Hołenko Kolejki FIFO (łącza nazwane) [7/14]

Problemy funkcje read, write, open są blokujące istnieje niebezpieczeństwo zakleszczenia należy uważać podczas korzystania z innych mechanizmów synchronizacji (np. funkcji wait) Mateusz Hołenko Kolejki FIFO (łącza nazwane) [7/14]

Problemy funkcje read, write, open są blokujące istnieje niebezpieczeństwo zakleszczenia należy uważać podczas korzystania z innych mechanizmów synchronizacji (np. funkcji wait) Mateusz Hołenko Kolejki FIFO (łącza nazwane) [7/14]

Funkcje systemowe

Tworzenie łącza tworzenie łącza nazwanego (kolejki FIFO) pathname ścieżka do pliku specjalnego łącza mode prawa dostępu do pliku int mkfifo(const char *pathname, mode_t mode) otwieranie łącza pathname ścieżka do pliku specjalnego łącza flags tryb otwarcia łącza: O_RDONLY lub O_WRONLY int open(const char *pathname, int flags) Mateusz Hołenko Kolejki FIFO (łącza nazwane) [9/14]

Tworzenie łącza tworzenie łącza nazwanego (kolejki FIFO) pathname ścieżka do pliku specjalnego łącza mode prawa dostępu do pliku int mkfifo(const char *pathname, mode_t mode) otwieranie łącza pathname ścieżka do pliku specjalnego łącza flags tryb otwarcia łącza: O_RDONLY lub O_WRONLY int open(const char *pathname, int flags) Mateusz Hołenko Kolejki FIFO (łącza nazwane) [9/14]

Tworzenie łącza Ważne! Łącze musi być otwarte dwukrotnie raz z flagą O_RDONLY oraz drugi raz z flagą O_WRONLY. Do tego czasu proces wywołujący funkcję open zostaje zawieszony! Mateusz Hołenko Kolejki FIFO (łącza nazwane) [10/14]

Odczyt i zapis danych, zamykanie łącza odczyt danych funkcja read zapis danych funkcja write zamykanie deskryptora standardowa funkcja close zamykanie deskryptora do odczytu są inne deskryptory do odczytu nic się nie dzieje brak innych deskryptorów do odczytu procesy oczekujące na zapis (wiszące na write) otrzymują sygnał SIGPIPE zamykanie deskryptora do zapisu są inne deskryptory do zapisu nic się nie dzieje brak innych deskryptorów do zapisu procesy oczekujące na odczyt wychodzą z funkcji read, która zwraca wartość 0 Mateusz Hołenko Kolejki FIFO (łącza nazwane) [11/14]

Odczyt i zapis danych, zamykanie łącza odczyt danych funkcja read zapis danych funkcja write zamykanie deskryptora standardowa funkcja close zamykanie deskryptora do odczytu są inne deskryptory do odczytu nic się nie dzieje brak innych deskryptorów do odczytu procesy oczekujące na zapis (wiszące na write) otrzymują sygnał SIGPIPE zamykanie deskryptora do zapisu są inne deskryptory do zapisu nic się nie dzieje brak innych deskryptorów do zapisu procesy oczekujące na odczyt wychodzą z funkcji read, która zwraca wartość 0 Mateusz Hołenko Kolejki FIFO (łącza nazwane) [11/14]

Odczyt i zapis danych, zamykanie łącza odczyt danych funkcja read zapis danych funkcja write zamykanie deskryptora standardowa funkcja close zamykanie deskryptora do odczytu są inne deskryptory do odczytu nic się nie dzieje brak innych deskryptorów do odczytu procesy oczekujące na zapis (wiszące na write) otrzymują sygnał SIGPIPE zamykanie deskryptora do zapisu są inne deskryptory do zapisu nic się nie dzieje brak innych deskryptorów do zapisu procesy oczekujące na odczyt wychodzą z funkcji read, która zwraca wartość 0 Mateusz Hołenko Kolejki FIFO (łącza nazwane) [11/14]

Odczyt i zapis danych, zamykanie łącza odczyt danych funkcja read zapis danych funkcja write zamykanie deskryptora standardowa funkcja close zamykanie deskryptora do odczytu są inne deskryptory do odczytu nic się nie dzieje brak innych deskryptorów do odczytu procesy oczekujące na zapis (wiszące na write) otrzymują sygnał SIGPIPE zamykanie deskryptora do zapisu są inne deskryptory do zapisu nic się nie dzieje brak innych deskryptorów do zapisu procesy oczekujące na odczyt wychodzą z funkcji read, która zwraca wartość 0 Mateusz Hołenko Kolejki FIFO (łącza nazwane) [11/14]

Odczyt i zapis danych, zamykanie łącza odczyt danych funkcja read zapis danych funkcja write zamykanie deskryptora standardowa funkcja close zamykanie deskryptora do odczytu są inne deskryptory do odczytu nic się nie dzieje brak innych deskryptorów do odczytu procesy oczekujące na zapis (wiszące na write) otrzymują sygnał SIGPIPE zamykanie deskryptora do zapisu są inne deskryptory do zapisu nic się nie dzieje brak innych deskryptorów do zapisu procesy oczekujące na odczyt wychodzą z funkcji read, która zwraca wartość 0 Mateusz Hołenko Kolejki FIFO (łącza nazwane) [11/14]

Zadania praktyczne

Zadania Zadanie 1 Napisać program który tworzy dwa procesy zapisujący do kolejki FIFO i odczytujący z niej napis HALLO!. Zadanie 2 Zrealizować następujące potoki: (1) ls wc oraz (2) ps -ef tr -s : cut -d: -f1 sort uniq -c sort -n Zadanie 3 Napisać program tworzący dwa procesy: klienta i serwera. Serwer tworzy ogólnodostępną kolejkę FIFO, i czeka na zgłoszenia klientów. Każdy klient tworzy własną kolejkę, poprzez którą będą przychodzić odpowiedzi serwera. Zadaniem klienta jest przesłanie nazwy stworzonej przez niego kolejki, a serwera odesłaniem poprzez kolejkę stworzoną przez klienta wyniku polecenia ls. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [13/14]

Zadania Zadanie 1 Napisać program który tworzy dwa procesy zapisujący do kolejki FIFO i odczytujący z niej napis HALLO!. Zadanie 2 Zrealizować następujące potoki: (1) ls wc oraz (2) ps -ef tr -s : cut -d: -f1 sort uniq -c sort -n Zadanie 3 Napisać program tworzący dwa procesy: klienta i serwera. Serwer tworzy ogólnodostępną kolejkę FIFO, i czeka na zgłoszenia klientów. Każdy klient tworzy własną kolejkę, poprzez którą będą przychodzić odpowiedzi serwera. Zadaniem klienta jest przesłanie nazwy stworzonej przez niego kolejki, a serwera odesłaniem poprzez kolejkę stworzoną przez klienta wyniku polecenia ls. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [13/14]

Zadania Zadanie 1 Napisać program który tworzy dwa procesy zapisujący do kolejki FIFO i odczytujący z niej napis HALLO!. Zadanie 2 Zrealizować następujące potoki: (1) ls wc oraz (2) ps -ef tr -s : cut -d: -f1 sort uniq -c sort -n Zadanie 3 Napisać program tworzący dwa procesy: klienta i serwera. Serwer tworzy ogólnodostępną kolejkę FIFO, i czeka na zgłoszenia klientów. Każdy klient tworzy własną kolejkę, poprzez którą będą przychodzić odpowiedzi serwera. Zadaniem klienta jest przesłanie nazwy stworzonej przez niego kolejki, a serwera odesłaniem poprzez kolejkę stworzoną przez klienta wyniku polecenia ls. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [13/14]

Zadania Zadanie 4 Zmodyfikować program 3, tak, by kolejka utworzona przez klienta była dwukierunkowa, klient publiczną kolejką powinien przesyłać nazwę stworzonej przez siebie kolejki. Dalsza wymiana komunikatów powinna odbywać się poprzez kolejkę stworzoną przez klienta. Klient kolejką tą powinien wysyłać polecenia, zadaniem serwera jest wykonywanie tych poleceń i odsyłanie wyników. Zadanie 5 Napisać program tworzący pierścień procesów połączonych za pomocą kolejki FIFO. Liczbę procesów w pierścieniu podaje użytkownik. Jeden z procesów ma zainicjalizować wysłanie komunikatu, a pozostałe odczytać go, wyświetlić na ekranie i wysłać dalej, dopisując do komunikatu własny identyfikator. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [14/14]

Zadania Zadanie 4 Zmodyfikować program 3, tak, by kolejka utworzona przez klienta była dwukierunkowa, klient publiczną kolejką powinien przesyłać nazwę stworzonej przez siebie kolejki. Dalsza wymiana komunikatów powinna odbywać się poprzez kolejkę stworzoną przez klienta. Klient kolejką tą powinien wysyłać polecenia, zadaniem serwera jest wykonywanie tych poleceń i odsyłanie wyników. Zadanie 5 Napisać program tworzący pierścień procesów połączonych za pomocą kolejki FIFO. Liczbę procesów w pierścieniu podaje użytkownik. Jeden z procesów ma zainicjalizować wysłanie komunikatu, a pozostałe odczytać go, wyświetlić na ekranie i wysłać dalej, dopisując do komunikatu własny identyfikator. Mateusz Hołenko Kolejki FIFO (łącza nazwane) [14/14]