Pamięć wspólna Przegląd stosowanych rozwiązań Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.

Slides:



Advertisements
Podobne prezentacje
Wirtualizacja zasobów w systemach operacyjnych
Advertisements

Wstęp do strumieni danych
C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Programowanie obiektowe
Język ANSI C Funkcje Wykład: Programowanie komputerów
Programowanie współbieżne i rozproszone
Static, const, volatile.
SYSTEMY OPERACYJNE WSTĘP
Systemy rozproszone W. Bartkiewicz Wykład 9. Wprowadzenie do koordynacji programów współbieżnych.
Systemy rozproszone W. Bartkiewicz
Semafory Semafor w programowaniu jest abstrakcją o zastosowaniu zaczerpniętym z działalności kolei. Gdy zasobów jest na tyle mało, że trzeba ich użyciem.
Zaawansowana obsługa sygnałów
Sygnały Proponowane rozwiązanie EAIiE Katedra Automatyki Kraków,
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Marcin Kujawa Michał Łobarzewski
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 3: Struktura systemu operacyjnego
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
C++ wykład 2 ( ) Klasy i obiekty.
Systemy operacyjne.
Autorzy: Łukasz Sztandarski Bartłomiej Granat
Muteksy Muteksy (mutex – MUTual EXclusion) są prostymi obiektami synchronizacyjnymi pełniącymi rolę semaforów binarnych dla wątków (chroniącymi sekcje.
11. PAKIET IPC Narzędzia z pakietu IPC (InterProcess Communication) służą do koordynacji procesów wykonywa- nych na jednym komputerze (nie są przeznaczone.
Semafory według normy POSIX
14. WĄTKI Procesy w tradycyjnym sensie (tworzone przez wykonanie funkcji fork) mają przydzielaną oddzielną przestrzeń adresową. W przestrzeni tej jest.
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
ipcrm [ shm | msq | sem ] id
Procesy odrębne –Unikatowy PID ( ) –Zmienne –Zbiory deskryptorów plików –Przestrzeń stosu (lokalne zmienne, wywołania funkcji) –Środowisko –Licznik.
Wątki.
Program wywoływany jest z przycisku wskazanego strzałką.
Pamięć wspólna Opis własnego rozwiązania Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Pamięć wspólna Formalna specyfikacja
Sygnały Przegląd istniejących rozwiązań EAIiE Katedra Automatyki Kraków,
Pamięć wspólna Formalna specyfikacja Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Układy wejścia-wyjścia
Podstawy programowania II
Podstawy informatyki 2013/2014
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie systemowe w Linux:
Programowanie obiektowe 2013/2014
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Systemy operacyjne (wiosna 2014)
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Algorytmy i Struktury Danych
Model obiektowy bazy danych
System plików.
Kurs języka C++ – wykład 4 ( )
Procesor, pamięć, przerwania, WE/WY, …
Modelowanie obiektowe - system zarządzania projektami.
Pamięć RAM Pamięć RAM.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Wstęp do programowania Wykład 7
Programowanie Obiektowe – Wykład 2
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Pamięć wspólna Przegląd stosowanych rozwiązań Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008

Pamięć wspólna - wstęp Zastosowanie pamięci wspólnej to metoda wewnętrznej komunikacji pomiędzy procesami (IPC – inner-process communication) Przykładowo jeden proces tworzy obszar w pamięci (segment), do którego posiada dostęp inny proces, lub kilka procesów. Jest to najszybsza forma IPC, ponieważ nie istnieje żaden pośrednik typu potok czy kolejka wiadomości. Zamiast tego informacja jest bezpośrednio umieszczana w segmencie pamięci, w obszarze adresowym procesu wywołującego. Segment może zostać utworzony przez jeden proces, a wykorzystywać go może dowolna liczba procesów.

Pamięć wspólna - Unix int shmget(key_t key, int size, int shmflg); key - klucz size - rozmiar segmentu pamięci shmflg – flagi Funkcja zwraca identyfikator segmentu pamięci związanego z podaną wartością klucza key.

Pamięć wspólna - Unix void *shmat(int shmid, const void *shmaddr, int shmflg); shmid – identyfikator segmentu pamięci dzielonej size - adres w przestrzeni adresowej procesu, od którego ma być dołączony segment shmflg – flagi Funkcja zwraca identyfikator segmentu pamięci związanego z podaną wartością klucza key.

Pamięć wspólna - Unix int shmdt(const void *shmaddr); shmaddr – adres początkowy segmentu w przestrzeni adresowej procesu Odłączenie segmentu nie oznacza automatycznie usunięcia z jądra systemu. Segment pozostaje w pamięci i może być ponownie dołączany przez procesy.

Pamięć wspólna - Unix int shmctl(int shmid, int cmd, struct shmid_ds *buf); shmid – identyfikator segmentu cmd - operacja sterująca buf – wskaźnik do bufora przeznaczonego na strukturę shmid_ds segmentu. W celu usunięcia segment trzeba posłużyć się funkcją systemową shmctl().

Pamięć wspólna - Windows Jeden z procesów odwzorowuje plik w pamięci przy użyciu funkcji CreateFileMapping(): HANDLE WINAPI CreateFileMapping( __in HANDLE hFile, __in_opt LPSECURITY_ATTRIBUTES lpAttributes, __in DWORD flProtect, __in DWORD dwMaximumSizeHigh, __in DWORD dwMaximumSizeLow, __in_opt LPCTSTR lpName );

Pamięć wspólna - Windows Bezpośrednio po utworzeniu pliku wyjściowego wywołujemy MapViewOfFile(), aby odwzorować pożądaną część pliku w pamięci: LPVOID WINAPI MapViewOfFile( __in HANDLE hFileMappingObject, __in DWORD dwDesiredAccess, __in DWORD dwFileOffsetHigh, __in DWORD dwFileOffsetLow, __in SIZE_T dwNumberOfBytesToMap );

Pamięć wspólna - Windows Po wywołaniu MapViewOfFile żądana część pliku zostaje załadowana do pamięci. Następnie proces ma możliwość zapisania danych w tak zarezerwowanej pamięci, a inny proces uzyskuje możliwość dostępu do tych danych. W tym celu korzysta się z funkcji void CopyMemory( __in PVOID Destination, __in const VOID* Source, __in SIZE_T Length );

Pamięć wspólna - Windows Kiedy dostęp do pliku staje się zbędyny proces powinien wyowłać funkcję CloseHandle(), aby system mógł zwolnić miejsce w pamięci BOOL WINAPI CloseHandle( __in HANDLE hObject );

Pamięć wspólna OS-9 Zgodnie z ogólną strategią systemu, dane wykorzystywane przez różne zadania są traktowane, jako segmenty informacji nie związane trwale z żadnymi konkretnymi obszarami pamięci. Segment danych jest obiektem statycznym, który można wielokrotnie zapisywać, odczytywać, składować na dysku i ładować do pamięci w sposób określony przez atrybuty praw dostępu. Z segmentami danych nie są jednak związane żadne operacje gwarantujące poprawność współbieżnego przetwarzania danych. Synchronizacja dostępu należy do obowiązku zadań

Pamięć wspólna - VxWorks

Pamięć wspólna i semafory W systemie VxWorks występują trzy typy semaforów zorientowane na różne klasy problemów: binarne (binary) – najszybsze uniwersalne semafory zoptymalizowane do synchronizacjo i wzajemnego wykluczania, wzajemnego wykluczania (mutual exclusion) – specjalne semafory binarne zoptymalizowaen ze względu na problemy specyficzne dla wzajemnego wykluczania: dziedziczenie priorytetów, ochrona przed usunięciem i rekursją, całkowite (counting) – podobne do binarnych semaforów, ale pamiętające ilość pobrań semafora, są optymalne ze względu na obsługę urzadzeń występujacych w wielu egzemplarzach w systemie.