Rok akademicki 2008/2009, Wykład nr 10 2/32 Plan wykładu nr 10 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2008/2009 Systemy plików Zarządzanie pamięcią operacyjną: partycjonowanie statyczne i dynamiczne proste stronicowanie prosta segmentacja pamięć wirtualna stronicowanie pamięci wirtualnej segmentacja pamięci wirtualnej Wykład nr 10 (24.01.2009) Rok akademicki 2008/2009, Wykład nr 10 3/32 Rok akademicki 2008/2009, Wykład nr 10 4/32 pierwszy system plików w Linuxie: Minix (14-znakowe nazwy plików i maksymalny rozmiar wynoszący 64 MB) Boot Sector (blok startowy) przechowuje informacje wykorzystywane przez system operacyjny podczas jego uruchamiania system Minix zastąpiono nowym systemem nazwanym rozszerzonym systemem plików - ext (ang. extended file system), a ten, w styczniu 1993 r., systemem (ang. second extended file system) w systemie podstawowym elementem podziału dysku jest blok wielkość bloku jest stała w ramach całego systemu plików, określana na etapie jego tworzenia i moŝe wynosić 1024, 2048 lub 4096 bajtów w celu zwiększenia bezpieczeństwa i optymalizacji zapisu na dysku posługujemy się nie pojedynczymi blokami, a grupami bloków na poziomie logicznym grupę bloków tworzą: deskryptor grupy (32 bajty) blok z mapą zajętości bloków danych (1 blok dyskowy) blok z mapą zajętości i-węzłów (1 blok dyskowy) bloki z tablicą i-węzłów bloki danych Boot Sector Bloki grupy 1 Bloki grupy 2... Bloki grupy N
Rok akademicki 2008/2009, Wykład nr 10 5/32 Rok akademicki 2008/2009, Wykład nr 10 6/32 kaŝda grupa fizyczna bloków zawiera informacje o jednej grupie logicznej, a ponadto pewne informacje o całym systemie plików w kaŝdej grupie fizycznej bloków znajduje się kopia tego samego bloku identyfikacyjnego oraz kopia bloków z deskryptorami wszystkich grup blok identyfikacyjny zawiera informacje na temat systemu plików: numer urządzenia, na którym jest super-block rodzaj systemu plików rozmiar bloku struktury do synchronizacji dostępu czas dokonanej ostatnio zmiany informacje specyficzne dla konkretnej implementacji w deskryptorach grupy znajdują się informacje na temat grupy bloków: numer bloku z bitmapą zajętości bloków grupy numer bloku z bitmapą zajętości i-węzłów numer pierwszego bloku z tablicą i-węzłów liczba wolnych bloków liczba wolnych i-węzłów w grupie liczba katalogów w grupie Rok akademicki 2008/2009, Wykład nr 10 7/32 Rok akademicki 2008/2009, Wykład nr 10 8/32 blok z mapą bitową zajętości bloków danej grupy jest tablicą bitów o rozmiarze jednego bloku jeśli blok ma rozmiar 1 kb to pojedynczą mapą moŝna opisać fizyczna grupę 8096 bloków czyli 8 MB danych jeśli natomiast blok ma rozmiar 4 kb, to fizyczna grupa bloków zajmuje 128 MB danych przed tablicą i-węzłów znajduje się blok z mapą bitową zajętości i-węzłów danej grupy - jest to tablica bitów, z których kaŝdy zawiera informację czy dany i-węzeł jest wolny czy zajęty pliki na dysku reprezentowane są przez i-węzły (ang. i-node) kaŝdemu plikowi odpowiada dokładnie jeden i-węzeł znajdujący się w tablicy i-węzłów i zawierający m.in. numer i-węzła w dyskowej tablicy i-węzłów typ pliku: zwykły, katalog, łącze nazwane, specjalny, znakowy prawa dostępu do pliku: dla wszystkich, grupy, uŝytkownika liczba dowiązań do pliku identyfikator właściciela pliku i identyfikator grupy właściciela pliku rozmiar pliku w bajtach (max. 4 GB) czas utworzenia, ostatniego dostępu, ostatniej modyfikacji pliku liczba bloków dyskowych zajmowanych przez plik
Rok akademicki 2008/2009, Wykład nr 10 9/32 Rok akademicki 2008/2009, Wykład nr 10 10/32 - i-węzeł połoŝenie pliku na dysku określają w i-węźle pola: 12 adresów bloków zawierających dane (w systemie Unix jest ich 10) - bloki bezpośrednie 1 adres bloku zawierającego adresy bloków zawierających dane - blok jednopośredni (ang. single indirect block) 1 adres bloku zawierającego adresy bloków jednopośrednich - blok dwupośredni (ang. double indirect block) 1 adres bloku zawierającego adresy bloków dwupośrednich - blok trójpośredni (ang. triple indirect block) /* Structure of an inode on the disk */ struct _inode {... u16 i_mode; /* File mode */ u16 i_uid; /* Owner Uid */ u32 i_size; /* Size in bytes */ u32 i_atime; /* Access time */ u32 i_ctime; /* Creation time */ u32 i_mtime; /* Modification time */ u32 i_dtime; /* Deletion Time */ u16 i_gid; /* Group Id */ u16 i_links_count; /* Links count */ u32 i_blocks; /* Blocks count */ u32 i_flags; /* File flags */ union { struct { u32 l_i_reserved1; } linux1; struct { u32 h_i_translator; } hurd1; struct { u32 m_i_reserved1; } masix1; } osd1; /* OS dependent 1 */ Rok akademicki 2008/2009, Wykład nr 10 11/32 Rok akademicki 2008/2009, Wykład nr 10 12/32 Zarządzanie pamięci cią nazwy plików przechowywane są w katalogach, które w systemie Linux są plikami, ale o specjalnej strukturze w systemie komputerowym moŝe być uruchomionych jednocześnie wiele programów (wiele procesów) katalogi składają się z ciągu tzw. pozycji katalogowych o nieustalonej z góry długości kaŝda pozycja opisuje dowiązanie do jednego pliku i zawiera: numer i-węzła (4 bajty) rozmiar pozycji katalogowej (2 bajty) długość nazwy (2 bajty) nazwa (od 1 do 255 znaków) rozmiar pamięci operacyjnej jest ograniczony i niewystarczający, aby przechowywać wszystkie programy oraz struktury danych potrzebne aktywnym procesom oraz systemowi operacyjnemu z powyŝszego powodu niektóre procesy (lub ich część) przechowywane są w pamięci pomocniczej (na dysku twardym) zadaniem systemu operacyjnego jest więc wydajne przenoszenie programów i danych do i z pamięci operacyjnej czyli zarządzanie pamięcią struct _dir_entry { _u32 inode /* numer i-wezla */ _u16 rec_len /* dlugosc pozycji katalogowej */ _u16 name_len /* dlugosc nazwy */ char name[ext2_name_len] /* nazwa */ }
Rok akademicki 2008/2009, Wykład nr 10 13/32 Rok akademicki 2008/2009, Wykład nr 10 14/32 Zarządzanie pamięci cią (relokacja) Zarządzanie pamięci cią (sprzętowa obsługa relokacji) program przenoszony z dysku za kaŝdym razem umieszczany jest w innym obszarze pamięci operacyjnej, dlatego konieczna jest relokacja procesu do tego obszaru pamięci w uproszczeniu proces w pamięci komputera ma składnię pokazaną na rysunku po załadowaniu procesu do pamięci system operacyjny zna połoŝenie: bloku kontrolnego procesu, punktu wejścia do procesu oraz stosu w przypadku rozgałęzień rozkazów oraz odwołań do danych, system operacyjny oraz procesor muszą konwertować odwołania do pamięci znalezione w kodzie programu na rzeczywiste adresy pamięci fizycznej adres względny (relative address) - adres logiczny wyraŝony jako lokalizacja względna wobec jakiegoś znanego punktu (zazwyczaj wartości w rejestrze) adres fizyczny (physical address) - rzeczywista lokalizacja w pamięci operacyjnej adres bezwzględny powstaje poprzez sumowanie adresu względnego i wartości z rejestru bazowego jeśli adres bezwzględny mieści się wewnątrz obszaru programu, to rozkaz moŝe być wykonany, w przeciwnym wypadku generowane jest przerwanie z informacją o błędzie Rok akademicki 2008/2009, Wykład nr 10 15/32 Rok akademicki 2008/2009, Wykład nr 10 16/32 Zarządzanie pamięci cią Partycjonowanie statyczne w nowoczesnych wieloprogramowych systemach operacyjnych zarządzanie pamięcią opiera się na bardzo zaawansowanych schematach nazywanych pamięcią wirtualną pamięć wirtualna bazuje na wykorzystaniu jednego lub obu podstawowych metod: segmentacji i stronicowania w systemach komputerowych stosowane były/są następujące metody zarządzania pamięcią: partycjonowanie statyczne partycjonowanie dynamiczne proste stronicowanie prosta segmentacja stronicowanie pamięci wirtualnej segmentacja pamięci wirtualnej metoda polegająca na podziale pamięci operacyjnej na obszary o takim samym lub róŝnym rozmiarze, ale ustalanym podczas generowania systemu w przypadku takiego samego rozmiaru partycji kaŝdy proces, którego rozmiar jest równy lub mniejszy od rozmiaru partycji moŝe zostać załadowany do dowolnej partycji zbyt duŝe procesy mogą nie zmieścić się w partycji o stałym rozmiarze - rozwiązanie: nakładkowanie występuje fragmentacja wewnętrzna (proces 2 MB zajmuje partycję 8 MB) powyŝszym problemom moŝna zaradzić stosując partycje o róŝnych rozmiarach
Rok akademicki 2008/2009, Wykład nr 10 17/32 Rok akademicki 2008/2009, Wykład nr 10 18/32 Partycjonowanie statyczne Partycjonowanie dynamiczne metoda polegająca na podziale pamięci operacyjnej na obszary o takim samym lub róŝnym rozmiarze, ale ustalanym podczas generowania systemu partycje są tworzone dynamicznie w ten sposób, Ŝe kaŝdy proces jest ładowany do partycji o rozmiarze równym rozmiarowi procesu w przypadku partycji o róŝnych rozmiarach najprostszy algorytm rozmieszczenia polega na przypisaniu kaŝdego procesu do najmniejszej partycji, w której się zmieści partycje mają róŝną długość, moŝe zmieniać się takŝe ich liczba przykład - w systemie działa 5 procesów: 20 MB, 14 MB, 18 MB, 8 MB, 8 MB w takim przypadku dla kaŝdej partycji stosowana jest kolejka procesów przeniesionych do pamięci pomocniczej wady partycjonowania statycznego: ograniczona liczba partycji a więc i procesów w systemie niewielkie zadania powodują nieefektywne wykorzystanie pamięci Rok akademicki 2008/2009, Wykład nr 10 19/32 Rok akademicki 2008/2009, Wykład nr 10 20/32 Partycjonowanie dynamiczne Proste stronicowanie Zalety: brak fragmentacji wew., wydajniejsze wykorzystanie pamięci Wady: fragmentacja zewnętrzna rozwiązaniem problemu fragmentacji zewnętrznej jest upakowanie - co pewien czas system operacyjny przemieszcza tak procesy, aby wolne obszary stanowiły jeden blok w metodzie partycjonowania dynamicznego stosowane są trzy algorytmy rozmieszczenia procesów/partycji: najlepsze dopasowanie (best-fit) - wybierany jest blok najbliŝszy rozmiarowi procesu w pamięci (najgorsza metoda) pamięć operacyjna podzielona jest na jednakowe bloki o stałym niewielkim rozmiarze nazywane ramkami lub ramkami stron (page frames) do tych ramek wstawiane są fragmenty procesu zwane stronami (pages) aby proces mógł zostać uruchomiony wszystkie jego strony muszą znajdować się w pamięci operacyjnej pierwsze dopasowanie (first-fit) - wybierany jest pierwszy blok od początku pamięci, w którym moŝe zmieścić się dany proces (najprostsza, najlepsza, najszybsza metoda) kolejne dopasowanie (next-fit) - wybierany jest pierwszy blok, w którym moŝe zmieścić się dany proces, ale jego poszukiwanie rozpoczyna się poniŝej miejsca, w którym proces był ostatnio wstawiony
Rok akademicki 2008/2009, Wykład nr 10 21/32 Rok akademicki 2008/2009, Wykład nr 10 22/32 Proste stronicowanie Proste stronicowanie dla kaŝdego procesu przechowywana jest tablica strony (page table) zawierająca lokalizację ramki dla kaŝdej strony procesu aby mechanizm stronicowania był wygodny ustala się, Ŝe rozmiar strony jest liczbą podniesioną do potęgi drugiej - dzięki temu adres względny oraz adres logiczny (numer strony + jej przesunięcie) są takie same Przykład: 16-bitowy adres logiczny 6 bitów: nr strony (0-63), max. 2 6 = 64 strony 10 bitów: przesunięcie w ramach strony (0-1023), rozmiar strony wynosi: 2 10 = 1024 bajty = 1 kb Rok akademicki 2008/2009, Wykład nr 10 23/32 Rok akademicki 2008/2009, Wykład nr 10 24/32 Proste stronicowanie Prosta segmentacja zalety: brak fragmentacji zewnętrznej, stronicowanie nie jest widoczne dla programisty polega na podzieleniu programu i skojarzonych z nim danych na odpowiednią liczbę segmentów wady: niewielki stopień fragmentacji wewnętrznej segmenty mogą mieć róŝną długość, ale określony jest ich maksymalny rozmiar proces jest ładowany do pamięci poprzez wczytanie wszystkich jego segmentów do partycji dynamicznych, które nie muszą być partycjami ciągłymi segmentacja jest widoczna dla programisty i ma na celu wygodniejszą organizację programów i danych (programista decyduje o wielkości segmentu) adres logiczny wykorzystujący segmentację składa się z dwóch części: numeru segmentu przesunięcia dla kaŝdego procesu określana jest tablica segmentu procesu zawierająca: długość danego segmentu adres początkowy danego segmentu w pamięci operacyjnej
Rok akademicki 2008/2009, Wykład nr 10 25/32 Rok akademicki 2008/2009, Wykład nr 10 26/32 Prosta segmentacja Prosta segmentacja Przykład: 16-bitowy adres logiczny 4 bity: nr segmentu (0-15), max. 2 4 = 16 segmentów 12 bitów: przesunięcie w ramach segmentu (0-4095), rozmiar segmentu wynosi: 2 12 = 4096 bajtów = 4 kb do zmiany adresu logicznego na fizyczne potrzebne są następujące kroki: z adresu logicznego pobieramy numer segmentu wykorzystując numer segmentu jako indeks tablicy segmentu procesu odczytujemy początkowy fizyczny adres segmentu oraz jego długość porównujemy przesunięcie z adresu logicznego z długością segmentu - jeśli przesunięcie jest większe lub równe długości segmentu to adres jest błędny adres fizyczny jest sumą początkowego fizycznego adresu segmentu oraz przesunięcia Rok akademicki 2008/2009, Wykład nr 10 27/32 Rok akademicki 2008/2009, Wykład nr 10 28/32 Pamięć wirtualna pamięć wirtualna umoŝliwia przechowywanie stron/segmentów wykonywanego procesu w pamięci dodatkowej - pomocniczej (na dysku twardym) Co się dzieje, gdy procesor chce odczytać stronę z pamięci dodatkowej? kiedy procesor napotyka na adres logiczny nie znajdujący się w pamięci operacyjnej to generuje przerwanie sygnalizujące błąd w dostępie do pamięci system operacyjny zmienia stan procesu na zablokowany, wstawia do pamięci operacyjnej fragment procesu zawierający adres logiczny, który był przyczyną błędu, a następnie zmienia stan procesu na uruchomiony Dzięki zastosowaniu pamięci wirtualnej: Pamięć wirtualna w przypadku stronicowania i segmentacji pamięci wirtualnej nie wszystkie strony/segmenty procesu muszą znajdować się w pamięci operacyjnej, aby proces mógł być uruchomiony - strony/segmenty mogą być odczytywane w miarę potrzeby odczytanie strony/segmentu i przeniesienie do pamięci operacyjnej moŝe wymagać przeniesienia innej strony/segmentu do pamięci pomocniczej jeśli będzie dotyczyć to fragmentu, który miał być właśnie uŝyty, to będzie on musiał zostać przeniesiony z powrotem do pamięci operacyjnej zbyt częste powtarzanie takich operacji prowadzi do tzw. migotania - system operacyjny przeznacza większość czasu procesora na realizację operacji wymiany zamiast na wykonywanie rozkazów w pamięci operacyjnej moŝe być przechowywanych więcej procesów proces moŝe być większy od całej pamięci operacyjnej aby mechanizm pamięci wirtualnej był wydajny potrzebne są dwa składniki: wsparcie sprzętowe stronicowania i/lub segmentacji umieszczenie w systemie operacyjnym oprogramowania zarządzającego przenoszeniem stron/segmentów pomiędzy pamięcią operacyjną a pomocniczą
Rok akademicki 2008/2009, Wykład nr 10 29/32 Rok akademicki 2008/2009, Wykład nr 10 30/32 Stronicowanie pamięci wirtualnej Stronicowanie pamięci wirtualnej przy zastosowaniu stronicowania, adres wirtualny ma postać: odczytanie strony z pamięci wymaga translacji adresu wirtualnego na fizyczny Numer strony Przesunięcie mechanizm pamięci wirtualnej bazującej na stronicowaniu wymaga równieŝ tablicy stron, ale zapisy do tej tablicy są bardziej złoŝone niŝ w przypadku prostego stronicowania P - bit określający, czy strona znajduje się w pamięci operacyjnej, jeśli tak, to zapis zawiera numer ramki tej strony M - bit określający, czy zawartość strony skojarzonej z tą tablicą została zmodyfikowana od ostatniego załadowania tej strony do pamięci - jeśli nie, to nie trzeba tej strony zapisywać, gdy ma być ona przeniesiona do pamięci pomocniczej Rok akademicki 2008/2009, Wykład nr 10 31/32 Rok akademicki 2008/2009, Wykład nr 10 32/32 Segmentacja pamięci wirtualnej Segmentacja pamięci wirtualnej w przypadku segmentacji, adres wirtualny ma postać: mechanizm odczytania słowa z pamięci obejmuje translację adresu wirtualnego na fizyczny za pomocą tablicy segmentu mechanizm pamięci wirtualnej wykorzystujący segmentację wymaga tablicy segmentu zawierającej więcej pól P - bit określający, czy segment znajduje się w pamięci operacyjnej M - bit określający, czy zawartość segmentu skojarzonego z tablicą została zmodyfikowana od ostatniego załadowania tego segmentu do pamięci