przestrzeń adresowa procesu to zbiór adresów logicznych, za pomocą których proces odwołuje się do pamięci operacyjnej komputera.
adres fizyczny (ang. physical address) - adres słowa pamięci fizycznej, pojawiający się na magistrali adresowej procesora w momencie odwoływania się do pamięci operacyjnej lub przestrzeni wejścia-wyjścia. …podczas gdy mechanizm stronicowania pamięci jest wyłączony, adres fizyczny jest równy adresowi liniowemu. W przypadku procesorów zgodnych z x86, w trybie rzeczywistym procesora adres fizyczny oblicza się mnożąc zawartość rejestru segmentowego razy 16 i dodając offset, czyli adres w stosunku do początku segmentu. Ponieważ adresy są zapisywane szesnastkowo, korzystanie z tego schematu jest bardzo proste - wystarczy dopisać do wartości segmentu adresowego szesnastkową cyfrę "0" i zwiększyć ją o offset. Natomiast w trybie chronionym procesora uzyskanie adresu fizycznego jest dużo bardziej skomplikowane - opiera się o selektory i tablicę deskryptorów. jest adresem złożonym z dwóch członów: identyfikatora segmentu i przemieszczenia w tym segmencie. Dla trybu rzeczywistego i V86 identyfikatorem segmentu będzie jego adres liniowy podzielony przez 16, dla trybu chronionego będzie to selektor segmentu. Adres taki zapisujemy w postaci SEGMENT: OFFSET lub SELEKTOR: OFFSET. Adres logiczny powinien być wykorzystywany do zapisywania lub odczytywania danych, procesor automatycznie zamienia go na adres logiczny a następnie na adres fizyczny,
adres liniowy - (linear address) jest formą przejściową między adresem fizycznym. Dzięki istnieniu adresu liniowego można uzyskać ciągłość pamięci nawet, jeżeli fizycznie jest ona porozrzucana. Adres liniowy jest zamieniany przez mechanizm stronicowania na adres fizyczny za pomocą tablic stron. W systemach wielozadaniowych niemożliwa jest wymiana adresów liniowych pomiędzy zadaniami, gdyż każde z nich może mieć oddzielne tablice stron. Adresy liniowe wykorzystujemy głównie przy tworzeniu deskryptorów,
adres segmentowy - (segment) jest pierwszą częścią adresu logicznego. Jeżeli został podany bez przemieszczenia oznacza to, że wskazuje nie konkretną komórkę pamięci a cały blok. Domyślnie przyjmujemy przemieszczenie 0. Adres segmentowy zwracany jest przez niektóre funkcje interfejsów API (Application Program Interface),
adres relatywny - (offset) jest przemieszczeniem względem segmentu, lub jakiegoś bloku danych. Adres takiego segmentu musi być znany.
rejestry
ogólnego przeznaczenia: AX, BX Basic, CX, DX,
wskaźnikowe: SP StackPointer BP Base SI SourceIndex DI Destination, segmentowe: CS Codeseg, DS, SS Stock, ES Extra
Wskaznik rozkazów: IP-Instuction Pointer, F-Flags
kod relokowalny jest to kod, ktorego polozenie w pamieci moze ulegac zmianie
Tryb rzeczywisty: Wszystkie programy pracujące w trybie rzeczywistym mogą korzystać tylko z instrukcji 16-bitowych i współpracować z 20-bitową architekturą pamięci (1 MB). Tego typu oprogramowanie z reguły jest jednozadaniowe, co oznacza, że jednocześnie może być uruchomiony tylko jeden program. Ponadto nie ma wbudowanej żadnego ochrony zapobiegającej wykorzystaniu przez program obszaru pamięci już przydzielonego innemu programowi lub systemowi operacyjnemu. Jeśli zatem uruchomiono więcej niż jeden program, dowolny z nich może spowodować zawieszenie całego systemu.
Tryb chroniony (32-bitowy): Nazwa wywodzi się stąd, że programy działające w tym trybie otrzymują własny obszar pamięci, przez co nie dochodzi między nimi do konfliktów. Tego typu ochrona sprawia, że system jest o wiele bardziej stabilny, ponieważ programy zawierające błąd nie mogą w prosty sposób zaszkodzić innym programom lub systemowi operacyjnemu. Poza tym program, który się zawiesił, może być usunięty z pamięci bez szkody dla reszty systemu.
Co robi instrukcja LGDT? Ładuje do rejestru globalnej tablicy deskryptorow (GDTR) adres poczatku GDT w pamieci i jej rozmiar.
Czemu, po ustawieniu bitu PE w rejestrze CR0, sluzy instrukcja skoku? Umożliwia to procesorowi ustawienie w swoich wewnętrznych rejestrach odpowiednich danych (adresu i limitu) dla segmentu CS.
Tablica deskryptorów - w trybie chronionym struktura ulokowana w dedykowanym segmencie, zawierająca deskryptory wszystkich segmentów znajdujący się w PAO. Pojemność 2^13 8bitowych wpisów, Rozmiar 64kB (wielkość, dostęp, typ segmentu, ziarnistość) IDT – TabDes przerwań | LDT – lokalna TD | GDT – globlana TD
pamięć o dostępie swobodnym(RAM) - pamięć która pozwala na dostęp do przechowywanych danych w stałym czasie niezależnie od miejsca ich przechowywania i wcześniejszych operacji. Ma postać układów elektronicznych
pamięć sekwencyjna - pamięć której dane są dostępne w kolejności ich zapisania na nośniku przesuwanym pod głowicą odczytująco-zapisującą. Czas dostępu tej pamięci zależy od odległości głowicy od położenia danych.
wyjątek to zdarzenie które przerywa normalny tok obliczeń procesora i wymusza wykonanie określonego zbioru instrukcji w trybie uprzywilejowanym.
Synchroniczny generowany przez zdarzenia wewnętrzne (np. dzielenie przez 0)
przerwanie to wyjątek asynchroniczny, nie są powiązane z instrukcjami wykonywanymi przez procesor, odnoszą sie do różnych sygnałów generowanych przez sprzęt (reset). przerwanie programowane wywołane przez program a sprzętowe np przez zegar (08H) klawiatura (09) RTC(70) IRQ9(71)
kompilator - program zmieniający kod źródłowy napisany w jezyku programowania na kod maszynowy w postaci oddzielnych modułów linker - łączy skompilowane moduły kodu i inne pliki w jeden plik wykoywalny (program)
furtka umożliwia użycie segmentu o niższym trybie ochrony niż aktualnie używany
Procesor zaczyna pracę w tryb. chronionym po ustaleniu bitu PE (rejestr CR0) na jeden, jak zero to tryb REAL, skok JMP w celu zaladowania CS
--- --- ---
| | | | | |
| adres | segmentacja | adres | stronicowanie | adres |
| logiczny |---> | liniowy |---> | fizyczny |
| | | | | | --- --- ---