W06 AK2 Biernat


Architektura komputerów 2
Prof. PWr dr hab. inż. Janusz Biernat
Wykład 06
OCHRONA DANYCH
" segmentacja (powiązana z logicznymi strukturami pamięci)
" stronicowanie (mechanizmy realizacji uprawnień dostępu do danych)
Zarządzanie pamięcią (memory management)
Funkcje zarządzania pamięcią
" przydział zasobów pamięci (memory allocation)
" ochrona zasobów pamięci (memory protection)
" współdzielenie obszarów pamięci (memory sharing) przez różne procesy
" przemieszczanie obszarów pamięci (memory relocation)
" przezroczysta organizacja pamięci fizycznej i logicznej
ć% relacje logiczne danych w programie niewrażliwe na zarządzanie
ć% elastyczne powiązanie logicznych struktur danych z fizycznymi lokacjami, realizowane
dynamicznie
Pamięć wirtualna
Wirtualna przestrzeń adresowa  suma logicznych przestrzeni pamięci (widzianych w programie
stanowiącym treść procesu)
" translacja adresu wirtualnego (logicznego) na adres rzeczywisty
" odwzorowanie adresu wirtualnego w pamięci fizycznej (real memory).
Aby mechanizmy zarządzania pamięcią były efektywne, potrzebne jest efektywne odwzorowanie
pamięci procesu na pamięć główną. Powiązania między pamięcią procesu są kluczowymi dla
mechanizmów ochrony pamięci. Sprawdzane jest, czy dany proces ma dostęp do danego obszaru
pamięci. Określane zostają poziomy uprawnień dla każdego procesu i każdego obszaru.
segmentacja, stronicowanie:
f : adres_wirtualny ->w adres fizyczny (funkcja typu w)
DYSKRETNA
blok z przestrzeni wirtualnej ->1-1 blok w przestrzeni rzeczywistej (funkcja typu na)
Segmentacja:
Jeżeli nastąpi próba wywołania segmentu nieodwzorowanego, to zmienia się powiązanie (*), a
wcześniej pojawia się wyjątek.
Wskazniki segmentów:
" CS  code segment (program)  domniemane skazanie (automatyczne)
" DS  data segment (dane)
" SS  stock segment (stos)  ograniczony, pozostałe wskazywane za pomocą trybów
adresowania (oprócz SS i CS), np. mov eax,FS:adres wg trybu adresowania (domniemany
jest DS)
" są jeszcze inne wskazniki, ale nie muszą być, wskazniki używane swobodnie przez
użytkownika, które muszą być inicjalizowane (IA-32):
ć% ES
ć% GS
ć% FS
Sekcje: (tylko tyle byłoby potrzebne przy segmentowaniu)
" .text  program
" .data  dane
" .bss  bufory
Jakbyśmy sie uparli to możemy stworzyć własny segment, np.:
.section moje
IA-32 (model x86/Borland)
Dyrektywa asm
SEGMENT nazwa
:
:
ENDS
Wszystko co jest kodem programu (fragmentem algorytmu) musi być wskazywany przez jeden
wskaznik, tak samo stos, dane muszą być wskazywane przez co najmniej jeden wskaznik.
Odwzorowanie jest zawsze takie, że ilość odwzorowanych fragmentów jest równa liczbie
wskazników.
Najważniejsze: RS, SL i RWX
SL  kontrola dostępu do pamięci, rozmiar segmentu, żeby nie można było wykroczyć poza
segment i skorzystać z innego
RWX  kontrola uprawnień, np. jeżeli segment jest tylko do odczytu, nie pozwoli do niego zapisać,
jeżeli tylko do wykonania to nie pozwoli ani odczytać, ani zapisać
P  bit obecności, czy dany segment w danym momencie jest odwzorowany w pamięci fizycznej,
jeżeli nie ma to następuje obsługa wyjątku
VS  numer segmentu wirtualnego
RS  adres rzeczywisty
SD  przemieszczenie w segmencie
Stronicowanie:
Ile jest stron wirtualnych?
Rozmiar przestrzeni wirtualnej:
liczba procesów x rozmiar logiczny przestrzeni adresowej = 2długość_nr_procesu x 2długość_wskaznika_adresu_segmentu
216-2 x 232B (IA-32, rejestry są 32 bitowe, 16-2  rozmiar wskaznika segmentu (segmentacja jest
konieczna)) = 246B
W IA-32 są dwa rozmiary stron;
"  mała 4kB=212B
"  duża 2MB=221B
Ile jest stron?
Rozmiar przestrzeni wirtualnej/rozmiar strony:
" małych stron 246/212=234 ok. 16 miliardów
" dużych stron 246/221=225 ok. 32 miliony
Ponieważ rozmiar strony jest ustalony z góry to SL jest niepotrzebny.
Muszą być równe, żeby to się dało zrobić (nie dałoby się to gdyby rozmiar strony nie byłby potęgą
dwójki)
Sprawdzane jest tylko czy mamy prawo dostępu dla strony dla konkretnej operacji, nie trzeba już
sprawdzać czy adres nie wychodzi poza stronę.
P  bit obecności strony,
RWX  kod praw dostępu,
VP  numer strony wirtualnej,
RP  numer strony rzeczywistej,
DP  przemieszczenie na stronie
Segmentacja stronicowana
To co jest na rysunku jest prawdziwe dla IA-32, niekoniecznie dla innych (najpierw segmenty, a
pózniej strony) (np. w PowerPC nie ma SL, najpierw strony, pózniej segmenty).
SEGEMENTACJA IA-32
" tryb rzeczywisty  bez jakiejkolwiek ochrony (wsk. segmentu -> wskaznik bloków pamięci
co 16B, przestrzeń fizyczna 216+4B, segment 64kB)
" tryb wirtualny  zawartość rejestru segmentowego (CS, DS, SS, ES, GS, FS) jest
wskaznikiem do tablicy segmentów (LDT)  położenie tablicy  rejestr procesora LDTR
W danym momencie można wskazywać dokładnie 6 różnych segmentów.
GDT może zawierać wskazniki do kontekstów, zerowe (na siebie), do usługi będącej osobnym
procesem itp.
Wskaznik poziomu ochrony pokazuje czy wskazany nr. segmentu może być wskazany, jeżeli jest to
00 to można wszystko, jeżeli jest 11 to można tylko tam gdzie w opisie jest 11, bo musi być nie
niższy.
Furtka (gate) jest mechanizmem który pozwala na dostęp do usług o wyższym poziomie
uprzywilejowania przez usługi o niższym poziomie uprzywilejowania, obejście mechanizmów
ochrony (osłabienie ochrony). CS korzysta z furtki.
Stronicowanie jest mechanizmem wtórnym i może być wyłączone, segmentacja może zostać
pozornie wyłączona.
POZORNE WYACZENIE SEGMENTACJI:
CS=DS=SS=FS=ES=GS=SS (ustalony taki sam wskaznik segmentu, najczęściej równy 0, choć
niekoniecznie).
Rozmiar segmentu max (232) -> załączamy stronicowanie (płaski/umowny model pamięci,
ustawiony jest wszędzie najwyższy poziom ochrony, dopiero w stronicowaniu jest ochrona).
Zasada lokalności
W określonym przedziale czasu program przejawia tendencję do grupowania odwołań do małego
fragmentu dostępnej przestrzeni adresowej
Lokalność czasowa  tendencja do powtarzania odwołań, realizowanych w niedawnej przeszłości
(realizacja pętli, referencje do tablicy).
Lokalność przestrzenna  tendencja do odwołań do obiektów w obszarze adresowym obejmującym
obiekty wcześniej użyte w programie (kolejne rozkazy programu, elementy regularnej struktury
danych).
Model zbioru roboczego
Zbiór roboczy  zapotrzebowanie procesu na pamięć w okresie wykonania
Rozmiar zbioru roboczego S(t,h) i przepustowość przetwarzania
Efekt szamotania
Suma zbiorów roboczych procesów aktywnych > rozmiar dostępnej pamięci
Heurystyka
Nie wymieniaj bloku, który jest częścią zbioru roboczego aktywnego procesu i nie uaktywniaj
procesu, którego zbiór roboczy nie może zostać w całości odwzorowany w pamięci głównej.


Wyszukiwarka

Podobne podstrony:
W08 AK2 Biernat
W05 AK2 Biernat
W02 AK2 Biernat
W01 AK2 Biernat
W09 AK2 Biernat
W07 AK2 Biernat
W03 AK2 Biernat
Strona bierna
W06 apr int
inf2 w06
W02 AK1 Biernat
MB W06 PWr
Aire W06
W06?solutna kalibracja robotów
BD 2st 1 2 w06 tresc 1 1 kolor
LP mgr W06 Zasady Lean Manuf

więcej podobnych podstron