ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH struktury procesorów ASK SP.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 Maszyny wirtualne 2 3 Literatura c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 1 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22 komputera zasoby podlegające ochronie Ochrona procesora poziomy zaufania procesor wykonuje program zachodzi proces sterowana zmiana stanu kontekstu procesora sterowana zmiana stanu pamięci sterowana zmiana stanu wyjść procesor jeden proces nie może zmonopolizować czasu pracy procesora poziomy (pierścienie) ochrony i tryby pracy procesora pamięć proces może mieć dostęp tylko do przydzielonej mu pamięci dostęp do współdzielonych danych tylko po uzyskaniu zgody segment.text chroniony przed zapisem segmenty.data,.bss chronione przed wykonaniem wejście/wyjście dostęp do urządzeń za pośrednictwem systemu operacyjnego c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 3 / 22 poziom użytkownika (nieuprzywilejowany) ograniczony zestaw dostępnych rejestrów ograniczona lista dostępnych instrukcji poziom systemowy (uprzywilejowany) dla jądra SO i programów systemowych dostępny pełny zestaw rejestrów dostępna pełna lista instrukcji rejestr stanu procesora przechowuje numer poziomu zaufania często wiele poziomów zaufania, np. x86: 0 jądro SO 1, 2 dodatkowe poziomy systemowe 3 użytkownik tryb pracy w rejestrze deskryptora segmentu kodu próba naruszenia zasad ochrony: generowane sprzętowo przerwanie diagnostyczne obsługa przez jądro SO. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 4 / 22
Ochrona procesora ochrona czasu procesora Ochrona urządzeń wejścia/wyjścia wiele programów wykonywanych przez procesor proces nie może zawłaszczyć procesora, nawet gdy wpadnie w pętlę nieskończoną praca z podziałem czasu procesora pomiędzy różne procesy cykliczne przejmowanie kontroli przez SO timer (czasomierz) przerwania, np. co 10 100 ms w ramach cyklu rozkazowego procesora następuje zakończenie bieżącej instrukcji i przekazanie sterowania do jądra SO SO może przekazać sterowanie: do przerwanego procesu do innego procesu z kolejki procesów gotowych do wykonania konieczne przełączenie konteksu procesu całkowite odizolowanie procesów użytkowych od fizycznych urządzeń próba dostępu do urządzeń (w trybie użytkownika) powoduje zgłoszenie wyjątku (przerwania diagnostycznego) fizyczna obsługa urządzeń przez jądro SO SO udostępnia użytkownikowi obiekty wirtualne powiązane z urządzeniami fizycznymi poprzez SO np. strumienie: stdin, stdout dostępne z poziomu języka C lub shell kompilator języka C (lub interpreter powłoki) generuje kod zawierający wywołania funkcji systemowych c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 5 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 6 / 22 Koncepcja maszyny wirtualnej Maszyny wirtualne maszyna wirtualna program interpretujący inne programy (zakodowane w języku tej maszyny) równoczesna praca kilku systemów operacyjnych hypervisor nadrzędny system operacyjny implementacje historyczne SO na poziomie użytkownika hypervisor na poziomie uprzywilejowanym realizuje dostęp do zasobów systemowych implementacje współczesne hypervisor na dodatkowym poziomie zaufania: host SO w trybie gościa (ang. guest) niektóre zasoby obsługiwane w trybie host 1 Maszyny wirtualne 2 3 Literatura c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 7 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 8 / 22
(MMU) relokacja sprzętowa zapewnia identyczne postrzeganie przestrzeni owej przez wszystkie procesy ochrona pamięci przed odczytem lub modyfikacją kodu programu i danych przydzielonych innym procesom przed niedopuszczalnym dostępem w obrębie przestrzeni przydzielonej danemu procesowi (np. przed zapisem pod stałej, przed wykonaniem danych) dynamiczna alokacja i dealokacja zmiany położenia i rozmiarów przestrzeni owej procesu w czasie wirtualizacja dostęp do pamięci niezależny od fizycznej konfiguracji komputera i bieżącego stopnia jej wykorzystania MMU logiczny CPU fizyczny MEM tryb błąd odwołania dane logiczny wirtualny MMU sprawdza poprawność odwołania gdy odwołanie poprawne MMU generuje fizyczny c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 9 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 10 / 22 Zasada relokacji procesu DATUM logiczny błąd LIMIT > fizyczny MEM lata 60. XX w. brak MMU dla procesu wartości ów: bazowego (DATUM) i granicznego (LIMIT) przechowywane w deskryptorze procesu w ramach przełączania kontekstów DATUM i LIMIT ładowane do stosownych rejestrów CPU uogólnienie metody relokacji implementacja w MMU przestrzeń owa pamięci procesu dzielona na segmenty: segment kodu (programu) segmenty danych statycznych (zawierają stałe albo zmienne) segment stosu segment sterty (zmiennych dynamicznych) widoczna na poziomie modelu programowego użytkownika logiczny zawiera: pole służące do identyfikacji segmentu pole u wewnątrz segmentu (offset) wada: fragmentacja pamięci (zewnętrzna) c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 11 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 12 / 22
translacja ów deskryptor segmentu x86: pozycja w GDT zadanie MMU: translacja z przestrzeni 2D do 1D pole u identyfikujące segment wskazuje na deskryptor segmentu zawierający: bazowy segmentu rozmiar segmentu prawa dostępu do segmentu znacznik ważności MMU generuje przerwanie do CPU sygnalizując błąd odwołania do pamięci, gdy: przekracza rozmiar segmentu naruszenie praw dostępu zapisanych w deskryptorze deskryptor nieważny c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 13 / 22 dla każdego procesu 3 wpisy w GDT (global description table) pozycja w GDT zawiera dla każdego segmentu: bazowy segmentu: kod 32 bit. (dwa pola) rozmiar segmentu: kod 20 bit. (dwa pola) P - present obecność segmentu (kodu, danych) DPL poziom uprawnień S typ deskryptora (1: dla danych lub kodu) TYP typ segmentu (0010: dane R/W, 1010: kod R) G granulacja segmentu (1: porcje 4kB) D - D/B 1: domyślny argument 32 bitowy R reserved (0: nieużywany) A dostępność do rejestru GDTR za pomocą instrukcji LGDT zapisywany jest tablicy zawierającej fizyczny i rozmiar GDT przełączenie do trybu chronionego: w CS umieścić segmentu kodu (offset w tablicy GDT) c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 14 / 22 deskryptor segmentu x86: pozycja w GDT realizacja pamięci wirtualnej 7 0 długość <15..0> bazowy segmentu <23..0> P DPL S TYP podział przestrzeni owej procesu na: jeden lub kilka segmentów kodu jeden lub kilka segmentów danych statycznych jeden segment stosu jeden lub kilka segmentów sterty komplikacja operacji na wskaźnikach fragmentacja zewnętrzna pamięci w czystej postaci nie stosowane G D R A długość <19..16> bazowy <31..24> c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 15 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 16 / 22
strona blok logicznej przestrzeni owej (4, 8 kb) ramka blok fizycznej przestrzeni owej o rozmiarze strony, nazywany czasem stroną fizyczną (physical page) stronicowanie niewidoczne w modelu programowym MMU pełni rolę Jednostki Stronicowania logiczny dzielony na dwa pola VPN nr strony (virtual page number) offset na stronie MMU w ramach translacji zastępuje VPN przez PPN (physical page number) bufor translacji (TLB: translation lookaside buffer) struktura w MMU zorganizowana na zasadzie kieszeni zbiorowo-asocjacyjnej przechowuje ostatnio używane ważne deskryptory stron bufor translacji TLB VPN offset VPN PPN attr PPN fizyczny logiczny offset c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 17 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 18 / 22 deskryptor strony dwupoziomowe tablice deskryptorów (x86) umieszczany w TLB łącznie z numerem VPN, gdy strona o numerze VPN umieszczana w ramce o numerze PPN deskryptor strony zawiera pola: P - present: znacznik ważności strona w ramce znacznik praw dostępu PPN numer ramki bity atrybutów (dla SO) deskryptor w TLB odnajdowany na podstawie VPN gdy wzorzec VPN nie występuje w TLB, wtedy MMU zgłasza przerwanie błąd strony do obsługi przez SO praktyczna organizacja: dla każdego procesu drzewa tablic stron CR3 (dla x86) rejestr bazowy tablic deskryptorów stron: tablicy pierwszego poziomu, niedostępny w trybie użytkownika, przeładowywany podczas przełączania kontekstów DTptr index1 index2 offset c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 19 / 22 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 20 / 22
Literatura dwupoziomowe tablice deskryptorów każdy proces ma własną tablicę deskryptorów 1. poziomu strona: 4kB index1: deskryptora w tablicy zawierającej y tablic 2. poziomu 2 10 tablic 2. poziomu (wspólne dla wszystkich procesów) w tablicy 2. poziomu deskryptory stron (2 10 deskryptorów) typowy proces potrzebuje kilkadziesięciu MB pamięci potrzeba 4 do kilkunastu tablic 2. poziomu gdy deskryptor w tablicy 1. poziomu nieważny to brak dostępu do 4MB pamięci nie podlegają wirtualizacji: obszar jądra SO pamięć urządzeń we/wy (np. pamięć obrazu) koncepcja dużych stron (4MB, 1GB) c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 21 / 22 Literatura A. S. Tanenbaum, Strukturalna organizacja systemów komputerowych, Helion, 2006. J. Biernat, Architektura komputerów, OWPW, 2005. D. Patterson, J. Hennessy, Computer organization and design, Elsevier 2005. G. Mazur, Architektura systemów komputerowych, http://wazniak.mimuw.edu.pl. R. Hyde, Profesjonalne programowanie, Helion, 2005. R. Hyde, Asembler. Sztuka programowania, Helion, 2004. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 22 / 22