L4Ka::Pistachio Mikrojądra mogą być wydajne

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

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Działanie systemu operacyjnego

Jądro systemu operacyjnego

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Klient-Serwer Komunikacja przy pomocy gniazd

Działanie systemu operacyjnego

Mikrojądra. Omówienie i przegląd

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

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

System operacyjny MACH

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

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

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

Sieciowe Systemy Operacyjne

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Architektura komputerów

Wprowadzenie. Dariusz Wawrzyniak 1

1. Etapy rozwoju systemów komputerowych

System komputerowy. System komputerowy

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

4. Procesy pojęcia podstawowe

Podstawowe zagadnienia

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

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

1.1 Wprowadzenie Organizacja operacji we/wy System wejścia/wyjścia... 6

Systemy operacyjne II

4. Procesy pojęcia podstawowe

Opis efektów kształcenia dla modułu zajęć

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

Systemy operacyjne III

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią w systemie operacyjnym

projektowanie systemu

Programowanie współbieżne Wykład 2. Iwona Kochańska

Wprowadzenie do systemów operacyjnych

MAGISTRALE ZEWNĘTRZNE, gniazda kart rozszerzeń, w istotnym stopniu wpływają na

1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU.

Monitor maszyn wirtualnych

Modularny system I/O IP67

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Struktury systemów operacyjnych

Budowa karty sieciowej; Sterowniki kart sieciowych; Specyfikacja interfejsu sterownika sieciowego; Open data link interface (ODI); Packet driver

Prezentacja systemu RTLinux

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Urządzenia wejścia-wyjścia

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

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

Wprowadzenie do systemu Minix

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Architektura Komputerów

Procesy, wątki i zasoby

TRX API opis funkcji interfejsu

Architektura i administracja systemów operacyjnych

Zaliczenie przedmiotu:

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Przesyłania danych przez protokół TCP/IP

architektura komputerów w. 8 Zarządzanie pamięcią

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Proces y i y w i ąt ą ki

Architektura komputerów

Zarządzanie pamięcią operacyjną

Architektura komputerów

Opis efektów kształcenia dla modułu zajęć

Middleware wprowadzenie października 2010

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

4. Procesy pojęcia podstawowe

Przegląd współczesnych systemów operacyjnych

POSIX ang. Portable Operating System Interface for Unix

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Architektura komputerów

System plików Linuksa

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Wywoływanie procedur zdalnych

Paweł Skrobanek. C-3, pok

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

System operacyjny Amoeba

Systemy operacyjne system przerwań

Wywoływanie procedur zdalnych

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

Wstęp do Informatyki. Klasyfikacja oprogramowania

AE/ZP-27-16/14. Oprogramowanie do wykonywania kopii zapasowych oraz zarządzania maszynami wirtualnymi

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

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

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

Budowa systemów komputerowych

Szkolenia specjalistyczne

SYSTEMY WEJŚCIA-WYJŚCIA

System plików. Warstwowy model systemu plików

Schematy zarzadzania pamięcia

WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski. 12 listopada 2007 WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski

Transkrypt:

L4Ka::Pistachio Mikrojądra mogą być wydajne Marek Materzok Instytut Informatyki Uniwersytetu Wrocławskiego Spotkanie Koła Studentów Informatyki 8 grudnia 2005

Architektura monolityczna Jądro jednolitym blokiem kodu pracującym z podwyższonymi uprawnieniami W skład jądra wchodzi wiele różnych podsystemów, które komunikują się z aplikacjami przez rozbudowane API Aplikacje nie mogą ingerować w funkcjonowanie systemu

Architektura monolityczna Jądro Sterowniki urządzeń Zarządzanie pamięcią Zarządzanie procesami Protokoły sieciowe System plików Uprawnienia dostępu Wywołania systemowe (w Linuksie ponad 200!) sh X KDE Apache I inne...

Zalety architektury monolitycznej Wysoka wydajność komunikacja między podsystemami jądra odbywa się przez współdzielenie danych we wspólnej pamięci oraz wywołania funkcji Sprawdzona w dużej liczbie prawdziwych, działających systemów

Wady architektury monolitycznej Problemy bezpieczeństwa Utrudnione pisanie kodu systemowego Ograniczone możliwości modyfikacji pracującego systemu Brak możliwości rozbudowy systemu przez użytkowników Jądro musi przebywać cały czas w pamięci

Architektura z mikrojądrem Jądro zawiera jedynie podstawową funkcjonalność: tworzenie i usuwanie wątków i procesów, mechanizmy kontroli dostępu do pamięci i sprzętu, komunikację międzyprocesową Wszystkie inne funkcje systemu realizowane są przez procesy w przestrzeni użytkownika, komunikujące się przez mechanizmy mikrojądra

Architektura z mikrojądrem Komunikacja międzyprocesowa Kontrola dostępu do pamięci i sprzętu Tworz. i usuw. procesów Wywołania systemowe (w Pistachio tylko 11) Sterownik Ethernet Stos TCP/IP Zarządca procesów Zarządca pamięci fizycznej Sterownik IDE Ext2 FAT NFS ftpfs Aplikacja Aplikacja Aplikacja

Zalety architektury z mikrojądrem Separacja uprawnień poszczególnych składników systemu Łatwa modyfikacja i naprawa pracującego systemu bez przestojów Uproszczone programowanie składników systemu są one normalnymi procesami Możliwość budowy systemów heterogenicznych

Wady architektury z mikrojądrem Niższa wydajność komunikacja wymaga przełączenia kontekstu i/lub kopiowania Architektura sprzętowa projektowana pod kątem mikrojąder mogłaby poprawić wydajność Niewystarczająco sprawdzone w praktyce

Notka historyczna Mikrojądro Mach Asynchroniczne, obrzydliwie nisko wydajne IPC Wbudowane sterowniki sprzętu Wbudowany system zarządzania pamięcią Systemy oparte na architekturze z mikrojądrem QNX AmigaOS Symbian

Mikrojądra L4 Pierwsze L4; Lemon Pip (1995) Minimalny kod napisany w asemblerze Bardzo wydajna komunikacja międzyprocesowa Bardzo niewielkie obciążenie cache Hazelnut (2001) Hybrydowy kod C++ i asemblerowy Pistachio (2004) Usprawnione API Sportowane na wiele architektur sprzętowych (X86, X86-64, Itanium, SPARC, PowerPC...)

API L4Ka::Pistachio Metody komunikacji z jądrem Strona interfejsu jądra Rejestry wirtualne Jedenaście wywołań systemowych Protokoły komunikacji z wątkami systemowymi Podstawowe pojęcia Przestrzenie adresowe Wątki Komunikacja międzyprocesowa Mapowanie pamięci

Przestrzeń adresowa Wirtualna przestrzeń pamięci oraz zbiór pracujących wewnątrz niej wątków Zawiera stronę interfejsu jądra (KIP) oraz blok kontrolny wątków (UTCB) Wątek Wątek Wątek Pamięć Pamięć UTCB KIP Wirtualna przestrzeń adresowa

Wątek Obiekt jądra składający się z identyfikatora (TID) lokalnego i globalnego, stanu rejestrów procesora oraz rejestrów wirtualnych mikrojądra Identyfikator wątku służy również za identyfikator przestrzeni adresowej, z którą jest związany

Strona interfejsu jądra Zawiera podstawowe informacje o jądrze: Wersja jądra Informacje o procesorach Ograniczenia dokładności zegara Rozmiar strony sprzętowej, KIP oraz UTCB Układ pamięci sprzętowej Oraz informacje niezbędne do wykonywania wywołań systemowych

Wywołania systemowe Nieuprzywilejowane KernelInterface wyszukanie strony interfejsu Ipc wymiana komunikatów ExchangeRegisters wymiana rejestrów SystemClock odczytanie zegara ThreadSwitch uwolnienie procesora Schedule ustawienia szeregowania Unmap odmapowanie stron pamięci Uprzywilejowane ThreadControl tworzenie i usuwanie wątków SpaceControl konfiguracja układu pamięci ProcessorControl konfiguracja procesorów MemoryControl ustawianie atrybutów pamięci

ThreadControl Uprzywilejowane wywołanie systemowe Pozwala na tworzenie i usuwanie wątków w obrębie istniejącej przestrzeni adresowej Umożliwia również utworzenie nowej przestrzeni adresowej, którą następnie należy skonfigurować wywołaniem SpaceControl Pozwala zmienić wątek szeregujący oraz stronicujący

SpaceControl Uprzywilejowane wywołanie systemowe Pozwala ustalić położenie UTCB oraz KIP w nowo utworzonej przestrzeni adresowej Umożliwia ustawienie wątka przekierowującego dla danej przestrzeni adresowej Wątek ten kontroluje całą komunikację między przestrzenią adresową, do której jest przydzielony, a innymi przestrzeniami adresowymi

Ipc Najważniejsze wywołanie systemowe L4Ka::Pistachio Cała komunikacja między wątkami, zarządzanie pamięcią, obsługa przerwań i wyjątków sprzętowych odbywa się poprzez IPC Trzy rodzaje przesyłanych informacji Pojedyncze rejestry Zawartość obszaru pamięci Mapowanie pamięci w przestrzeni adresowej

Ipc schemat komunikacji Komunikacja jest synchroniczna: przesył danych odbywa się tylko wtedy, gdy obie strony wykonają wywołanie Ipc Składa się z dwóch opcjonalnych faz: nadawania i odbierania Każda z faz może być: blokująca, nieblokująca lub blokująca z ograniczeniem czasowym

Ipc schemat komunikacji Przykładowa sesja komunikacji pomiędzy dwoma wątkami IPC send/recv IPC send IPC recv IPC send/recv IPC recv

Ipc przesył rejestrów Nadawca umieszcza dane w wirtualnych rejestrach MR (Message Register) i wywołuje Ipc Odbiorca otrzymuje kopię tych danych do własnych rejestrów MR Rejestry MR mogą być, w zależności od architektury, obsługiwane przez rejestry procesora lub obszar pamięci w UTCB

Ipc przesył buforów Nadawca deklaruje obszary pamięci, z których będą kopiowane dane Odbiorca deklaruje, gdzie dane zostaną zapisane przy odbiorze Obszary pamięci nie muszą być spójne jądro realizuje scatter&gather Odbiorca i nadawca deklarują maksymalny czas trwania transferu

Ipc przesył buforów Przykład kopiowania danych pomiędzy dwoma przestrzeniami adresowymi Dane 1 Dane 2 Bufor 1 Bufor 2 Bufor 3 Dane 1.1 Dane 2 Dane 1.2

Ipc mapowanie pamięci Część pamięci nadawcy jest mapowana w przestrzeni adresowej odbiorcy Nie kopiowanie, lecz współdzielenie Nadawca może wybrać uprawnienia dostępu (odczyt, zapis, wykonanie) do mapowanego obszaru Ograniczenie położenia i rozmiaru mapowanej pamięci: dwójkowa wielokrotność strony pamięci Oddanie pamięci (grant) fragment pamięci jest po operacji odmapowywany od nadawcy

Ipc mapowanie pamięci Przykład operacji mapowania pamięci

Unmap Odmapowanie fragmentu pamięci od wszystkich przestrzeni adresowych, którym została zmapowana od aktualnej przestrzeni (i rekursywnie) Opcjonalnie można też odmapować pamięć również od własnej przestrzeni adresowej

Unmap Przykład działania operacji Unmap

Stronicowanie Każdy wątek posiada przydzielony wątek stronicujący W przypadku błędu stronicowania jądro komunikuje to wątkowi stronicującemu za pomocą IPC Wątek stronicujący odpowiada, mapując właściwą pamięć

Zarządzanie pamięcią fizyczną Przy starcie systemu prawie całą pamięć fizyczną otrzymuje wątek sigma0 Zadaniem sigma0 jest oddanie pamięci fizycznej systemowi operacyjnemu Sigma0 jest wątkiem stronicującym wątku głównego systemu Wątek główny pobiera pamięć od sigma0 i rozdziela ją innym składnikom systemu

Wyjątki sprzętowe Każdemu wątkowi przyporządkowany jest wątek obsługi wyjątków W przypadku wystąpienia wyjątku sprzętowego (błędu wykonania) wątek obsługi wyjątków otrzymuje komunikat zawierający rejestr IP i opcjonalnie inne rejestry Wątek obsługi wyjątków odpowiada komunikatem zawierającym nowe wartości rejestrów

Obsługa przerwań Każdemu numerowi przerwania przyporządkowany jest pewien identyfikator wątku (TID) Jeśli wątek przerwania ma przydzielony wątek stronicujący, to ten wątek będzie otrzymywać komunikaty IPC o przerwaniach Uprawnienia dostępu do zasobów sprzętowych (np. porty I/O) są przekazywane poprzez IPC

Szeregowanie Każdemu wątkowi jest przyporządkowany wątek szeregujący Wątek szeregujący może używać wywołania Schedule na podległych mu wątkach Zmiana długości kwantu czasu Ustawienie maksymalnego czasu wykonania Ustawienie docelowego procesora (SMP) Zmiana priorytetu Wyczerpanie przydzielonego czasu jest sygnalizowane wątkowi szeregującemu

Niedostatki Pistachio Rozmiar bloku UTCB stały maksymalna liczba wątków przypadająca na przestrzeń adresową jest niezmienna Brak mechanizmu wymiany pamięci pomiędzy mikrojądrem a przestrzenią użytkownika

Zastosowania: HURD GNU HURD system operacyjny kompatybilny z Uniksem, zaprojektowany z myślą o rozszerzalności System podzielony na serwery: procesów, autentyfikacji, haseł, systemów plików Montowanie poprzez translatory Aktualnie oparty na Mach, trwa eksperymentalny port na Pistachio

Zastosowania: Mungi System operacyjny z pojedynczą przestrzenią adresową Przestrzeń adresowa podzielona jest na ciągłe obszary obiekty Wprawdzie przestrzeń jest wspólna, ale różne procesy mają uprawnienia do różnych obiektów Obiekty mogą być trwałe pozostają w systemie nawet po restarcie Nie ma systemu plików! Rolę plików pełnią obiekty trwałe System katalogowy pozwala odnajdywać obiekty

Zastosowania: wirtualizacja Kilka niezależnych systemów może pracować jednocześnie na jednym mikrojądrze Projekt Marzipan: zarządca wirtualizacji Rozdziela zasoby pomiędzy maszyny wirtualne Kontroluje dostęp do uprzywilejowanych wywołań systemowych Projekt Afterburner: prewirtualizacja wydajność dorównująca parawirtualizacji bez modyfikacji kodu systemu

Bibliografia Specyfikacja API L4 X.2 oraz publikacje na stronie http://www.l4ka.org/ Podstawy systemów operacyjnych A.Silberschatz, P.Galvin