T: Tryb rzeczywisty i chroniony procesora.

Tryb rzeczywisty (ang. real mode) to tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086. W trybie tym brak ochrony pamięci przed użyciem przez inny proces i brak obsługi wielozadaniowości. W trybie rzeczywistym pracowały programy w systemie operacyjnym DOS, na przełomie lat 80 i 90 dwudziestego wieku prowadzono działania nad pracą programów w systemie DOS w trybie chronionym, pozostawiając sam system w trybie rzeczywistym, zbudowano kilka systemów umożliwiających taką pracę systemu.

Każdy nowy procesor musi być kompatybilny z trybem rzeczywistym.

Zadanie1:
Odszukaj w serwisie internetowym Wikipedii informacje na temat rzeczywistego trybu pracy procesora.

Ponieważ segment i przemieszczenie mają 16 bitów, dlatego w trybie rzeczywistym można maksymalnie zaadresować 1088 kB pamięci, ale procesory Intel 8086, 8088, 80188 oraz 80186 posiadają 20-bitową szynę adresową i z tego powodu mogą zaadresować tylko 1024 kB pamięci - przy próbie sięgnięcia do adresu powyżej 1024 kB w rzeczywistości odwołają się do adresu o 1 MB niższego.

Procesory nowsze, tzn. i286, i386 itd., mają szersze szyny adresowe (24, 32 lub 36-bitowe). Pracując w trybie rzeczywistym mogą adresować całe 1088 kB pamięci. System DOS począwszy od wersji 4.0 potrafił wykorzystać te dodatkowe 65536-16 B pamięci, która została nazwana pamięcią wysoką (HMA - High Memory Area).

Tryb chroniony (ang. protected mode) to tryb pracy mikroprocesorów serii x86 wprowadzony w mikroprocesorze Intel 80286. Tryb chroniony umożliwia adresowanie pamięci w większym zakresie niż 1MB (tryb rzeczywisty), wprowadza wiele nowych udogodnień wspierających wielozadaniowość, takich jak: sprzętowa ochrona pamięci (układ MMU), wsparcie przełączania kontekstu procesora i wiele innych.

Większość nowoczesnych systemów operacyjnych wykorzystuje procesory serii x86 właśnie w trybie chronionym. Zaliczają się do nich m.in.: Linux, Windows w wersji 3.0 i wyższych, systemy z rodziny BSD.

Zadanie2:
Odszukaj w serwisie internetowym Wikipedii informacje na temat chronionego trybu pracy procesora.

Tryb wirtualny (zwany także V86 lub Virtual 8086) to specjalny tryb pracy procesorów o architekturze IA-32, dostępny w trybie chronionym, który umożliwia uruchamianie programów przeznaczonych dla trybu rzeczywistego. W trybie wirtualnym symulowane jest działanie analogiczne dla procesora Intel 8086 (faktycznie można uruchamiać kod także dla 8088, 80186 i 80188), tzn. otrzymuje dostęp do 1 MB pamięci i rejestrów procesora i może wykonywać te rozkazy, które mają sens w takim otoczeniu.

Zadanie3:
Odszukaj w serwisie internetowym Wikipedii informacje na temat wirtualnego trybu pracy procesora.

W odróżnieniu od "prawdziwego" trybu rzeczywistego, wszelki dostęp do portów procesora jest sankcjonowany przez system operacyjny pracujący w tybie chronionym. Podobnie przerwania są obsługiwane przez system operacyjny. To umożliwia bezkonfliktową pracę zwykłych zadań systemu i zadań V86. Możliwe jest ponadto jednoczesne uruchmienie wielu zadań V86.

Tryb V86 jest wykorzystywany do uruchamiania programów DOS-owych. System Windows posiada wbudowane mechanizmy umożliwiające uruchomienie takich programów (w Windows NT jest to NTVDM), natomiast dla systemu Linux istnieje specjalny program dosemu.

Zadanie4:
Zapoznaj się z zawartością następującej witryny internetowej:

Podstawowym ograniczeniem trybu rzeczywistego jest to, że procesor może wykorzystać jedynie niższe 20 bitów swojej magistrali adresowej, stąd właśnie to ograniczenie pamięci, o którym pisałem wcześniej. Niepraktyczne było tworzenie rejestrów 20 bitowych na przechowywanie adresów, więc projektanci INTELA podzielili przestrzeń adresowa na segmenty (po 64KB). Wiec do odwoływania się do pamięci używamy dwóch liczb 16 bitowych, pierwsza to adres segmentu druga to offset przesunięcia od początku segmentu.

Adres fizyczny mając parę 16bitowych rejestrów(segment i offset) możemy obliczyć następująco:

Pamięć PC podzielona jest na 4 logiczne obszary:

Uwaga!
Po włączeniu komputera procesor "budzi się" w trybie rzeczywistym. Jest to potrzebne, aby załadować BIOS, który jest kodem 16-bitowym i używa specyficznych właściwości trybu rzeczywistego. Procesor "skacze" do specjalnego adresu w pamięci, gdzie znajduje się procedura skoku do właściwego punktu wejścia BIOS-u.