Pamięć operacyjna

WasilieW 667 views 7 slides Jun 02, 2014
Slide 1
Slide 1 of 7
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7

About This Presentation

No description available for this slideshow.


Slide Content

Pamięci wirtualne, hierarchia, zasada działania, pamięć cache

Pamięć wirtualna Mechanizm zarządzania pamięcią komputera zapewniający procesowi wrażenie pracy w jednym dużym, ciągłym obszarze pamięci operacyjnej podczas, gdy fizycznie może być ona pofragmentowana, nieciągła i częściowo przechowywana na urządzeniach pamięci masowej. Systemy korzystające z tej techniki ułatwiają tworzenie rozbudowanych aplikacji oraz poprawiają wykorzystanie fizycznej pamięci RAM w systemach wielozadaniowych. Często popełnianym błędem jest utożsamianie pamięci wirtualnej z wykorzystaniem pamięci masowej do rozszerzenia dostępnej pamięci operacyjnej. Pamięć wirtualna działa na zasadzie przedefiniowania adresów pamięci (fizycznych) na adresy używane przez procesy (logiczne) tak, aby "oszukać" procesy i dać im wrażenie pracy w ciągłej przestrzeni adresowej.

Hierarchia pamięci PP – pamięć półprzewodnikowa - pamięć do zapisu i odczytu dynamicznego i statycznego oraz pamięci typu ROM, a także rejestry wewnątrz  mikroprocesora; PM - pamięć masowa - pamięć na nośnikach magnetycznych, takie jak dyski twarde i elastyczne, streamery oraz pamięci optyczne typu CD – ROM czy też DVD – ROM.

Zasada działania Pewna część informacji wykonywanego programu załadowana jest do pamięci operacyjnej. Pozostała część niemieszcząca się w niej jest przechowywana w pamięci masowej. Jeżeli w trakcie realizacji programu następuje odwołanie do informacji znajdującej się na dysku, to odpowiedni mechanizm powoduje wczytanie brakującego bloku informacji do pamięci operacyjnej, przesyłając inny blok do pamięci masowej w celu zwolnienia miejsca (chyba że blok ten, na przykład fragment programu, jest w niej już zapisany). Na wykonanie tych operacji pozwala mechanizm pamięci wirtualnej. Powinien także spowodować przetłumaczenie (translację) długich adresów (wirtualnych) w programie na krótsze adresy (fizyczne) pamięci operacyjnej. Przy okazji takiej translacji należy też sprawdzać, czy poszukiwana informacja jest dostępna w pamięci operacyjnej . Podsumowując, mechanizm pamięci wirtualnej jest następujący : 1 . Program żąda dostępu do określonej informacji, podając (długi, 32-bitowy) adres wirtualny. 2. Sprawdzana jest obecność poszukiwanej informacji w pamięci operacyjnej. Informacja o obecności konkretnych bloków w pamięci operacyjnej przechowywana jest w specjalnej tablicy. 3. W przypadku braku poszukiwanej informacji jest ona wczytywana z dysku, a odpowiednie pozycje w tablicach obsługujących pamięć wirtualną są modyfikowane. 4.  Obliczany jest adres fizyczny miejsca przechowywania informacji w pamięci operacyjnej, czyli dokonywana jest translacja adresu wirtualnego na fizyczny (krótki, 24-bitowy). Translacji tej dokonuje się także przy użyciu odpowiedniej tablicy. 5. Poszukiwana informacja jest dostępna dla procesora, co zamyka cykl działania pamięci wirtualnej.

Załóżmy, ze pojemność pamięci przydzielona jednemu zadaniu wynosi 8 MB, co oznacza, że zezwalamy na używanie w programie 23 – bitowych adresów (2 23 = 8 M). Pojemność pamięci operacyjnej wynosi 2 MB więc długość adresu fizycznego wynosi 21 bitów. Ponieważ pojemność PAO jest mniejsza niż wielkość programu, tylko część programu będzie do niej załadowana. W naszym przypadku są to 2 MB. Program w całości będzie przechowywany w pamięci masowej, np. na dysku. Program zarówno w PAO, jak i w PM dzielimy na bloki. W naszym przypadku są to bloki o jednakowej wielkości równej 1 MB (jest to pewne uproszczenie w stosunku do rzeczywistej sytuacji, służące jaśniejszemu przedstawieniu zawartości deskryptora). Każdy z bloków ma na dysku unikalny numer, w naszym przypadku jest to liczba 3-bitowa. W pamięci operacyjnej utworzona jest specjalna tablica, zwana tablicą deskryptorów. Liczba pozycji w tej tablicy musi być równa liczbie bloków w PM, na jakie został podzielony program. Inaczej mówiąc, każdy blok programu musi mieć swój deskryptor. Każdy z deskryptorów składa się z dwóch części: bitu obecności bloku i adresu bazowego (21-bitowego) podającego, w którym miejscu w pamięci operacyjnej został umieszczony dany blok. Bit obecności równy 1 oznacza obecność danego bloku programu w PAO. W naszym przykładzie do pamięci operacyjnej załadowane są bloki programu o numerach 5 i 3 (numery tych bloków zostały dla większej czytelności rysunku umieszczone zarówno w PM, jak i PAO). W deskryptorach odpowiadającym blokom 3 i 5 bity obecności mają wartość 1. W deskryptorach pozostałych bloków wartość ta wynosi 0. Ponadto w deskryptorze bloku 3 umieszczony jest adres 100000h, co oznacza, że blok 3 rozpoczyna się w pamięci operacyjnej od adresu 100000h. Podobnie dla bloku 5 adres bazowy wynosi 000000h. Załóżmy teraz, że program odwołuje się do adresu wirtualnego 3FFFFFh. Adres jest dzielony na dwie części: pole selektora i pole przesunięcia. Pole selektora (u nas 3-bitowe) określa, w którym bloku programu znajduje się poszukiwana informacja, czyli wskazuje, którego deskryptora należy użyć podczas translacji adresu wirtualnego na rzeczywisty. Zauważmy, że pole to musi mieć taką długość, aby móc ponumerować wszystkie bloki przydzielone dla jednego programu, czyli aby obsłużyć całą przestrzeń pamięci wirtualnej przydzielonej programowi. W naszym przypadku pole to musi mieć długość 3 bitów, gdyż program może się składać z ośmiu bloków. Przesunięcie określa, jak daleko od początku bloku znajduje się poszukiwana informacja. W naszym przypadku selektor zawiera liczbę 3. Oznacza to, że poszukiwana informacja znajduje się w bloku 3. *PAO – Pamięć operacyjna.

Kolejność postępowania systemu operacyjnego jest następująca: 1.                  Sprawdzany jest bit obecności bloku w deskryptorze bloku 3. W naszym przypadku wynosi on 1, czyli blok jest obecny w PAO. 2.                  Odczytywany jest adres bazowy bloku w PAO. 3.                  Do odczytanego adresu bazowego dodawane jest przesunięcie pobrane z adresu wirtualnego. 4.                  Otrzymany 21-bitowy adres jest fizycznym adresem w PAO, pod którym znajduje się poszukiwana informacja. Co stanie się w przypadku, gdy bloku zawierającego poszukiwaną informację nie ma w PAO? Załóżmy tym razem, że adres wirtualny wynosi 7F0000h. Odwołujemy się więc do bloku 7, którego nie ma w pamięci. Wykonane muszą być wtedy dodatkowe czynności.   1a.              Blok numer 7 wczytywany jest do pamięci operacyjnej w miejscu jednego z obecnych tam bloków. Załóżmy, że blok 7 umieścimy w miejscu bloku 3. 2a.              Modyfikowane są deskryptory usuniętego i załadowanego bloku.

Pamięć cache (pamięć podręczna procesora, systemu, innych urządzeń) to rodzaj pamięci tymczasowej pośredniczącej w operacjach pomiędzy innymi, zazwyczaj wolniejszymi urządzeniami lub rodzajami pamięci przyspieszająca dostęp wolniejszej pamięci lub innego urządzenia. Inaczej jest to mechanizm, w którym część spośród danych zgromadzonych w źródłach o długim czasie dostępu i niższej przepustowości jest dodatkowo przechowywana w pamięci o lepszych parametrach. Ma to na celu poprawę szybkości dostępu do tych informacji, które przypuszczalnie będą potrzebne w najbliższej przyszłości.
Tags