Tryb rzeczywisty i chroniony procesora

:: Tryby pracy procesora

Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy procesora odnoszą się do różnych środowisk roboczych i mają wpływ na możliwości i instrukcje przez niego wykonywane. Tryb pracy procesora decyduje, w jaki sposób zarządza on pamięcią systemową i zadaniami do wykonania.

Można wyróżnić następujące trzy tryby pracy.

Tryb rzeczywisty

Oryginalny komputer IBM PC był wyposażony w procesor 8088, który przy użyciu 16-bitowych rejestrów wewnętrznych potrafił wykonywać instrukcje 16-bitowe oraz za pośrednictwem 20 linii adresowych współpracować z pamięcią o pojemności maksymalnej 1 MB. Oprogramowanie, w które był wyposażony oryginalny IBM PC zostało stworzone z myślą o współpracy z procesorem 8088, dlatego też wykorzystywało zestaw instrukcji 16-bitowych i 1-megabajtowy model pamięci. Przykładowo, system DOS i wszystkie programy dla niego przeznaczone oraz system Windows w wersjach 1 .x - 3.x wraz z aplikacjami zostały napisane przy wykorzystaniu instrukcji 16-bitowych. 16-bitowe systemy operacyjne i aplikacje zostały stworzone dla oryginalnego procesora 8088.

Następne procesory, takie jak 286, nadal mogły wykonywać te same 16-bitowe instrukcje co procesor 8088, ale już znacznie szybciej. Inaczej mówiąc, procesor 286 był w pełni z nim kompatybilny, dlatego też można było na nim uruchamiać wszystkie programy 16-bitowe co w przypadku procesora 8088, ale oczywiście działały one o wiele szybciej. Tryb wykonywania przez procesory 8088 i 286 instrukcji 16-bitowych został określony terminem trybu rzeczywistego (ang. real mode). 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)

Pierwszym procesorem 32-bitowym przeznaczonym dla komputerów PC i wprowadzonym do sprzedaży był układ 386. Procesor ten mógł wykonywać zupełnie nowy zestaw instrukcji 32-bitowych. Aby w pełni wykorzystać taką możliwość, konieczne było stworzenie odpowiedniego 32-bitowego systemu operacyjnego i aplikacji. Nowy, 32-bitowy tryb pracy procesora został określony terminem trybu chronionego (ang. protected mode). 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.

Wiedząc, że stworzenie nowych systemów operacyjnych i aplikacji wykorzystujących zalety 32-bitowego trybu chronionego może zająć trochę czasu, firma Intel na wszelki wypadek wbudowała do układu 386 kompatybilność wstecz z trybem rzeczywistym. Pozwoliło to, bez potrzeby wykonywania żadnych modyfikacji, na uruchamianie 16-bitowych systemów operacyjnych i aplikacji. Działały one zupełnie przyzwoicie i o wiele szybciej niż w przypadku poprzedniego procesora. Opracowanie nowego oprogramowania opartego na architekturze 32-bitowej nie było dla nich konieczne właściwie wystarczyło, aby istniejące aplikacje 16-bitowe działały znacznie szybciej. Niestety, oznaczało to. że procesor nigdy nie wykorzysta 32-bitowego trybu chronionego, a tym samym wszystkie związane z tym możliwości zostaną utracone.

W sytuacji, gdy tak wydajny procesor jak Pentium III pracuje pod kontrolą systemu DOS (w trybie rzeczywistym), upodabnia się on do procesora 8088 w wersji Turbo. Słowo "Turbo" oznacza, że jest lepszy od zwykłego procesora 8088 w tym, że każdy program 16-bitowy działa szybciej, ale poza tym wykorzystuje tylko 16-bitowe instrukcje i ma dostęp do tego samego obszaru pamięci o pojemności 1 MB, co oryginalny układ 8088. Wniosek z tego jest taki, że jeśli jesteś posiadaczem systemu zawierającego procesor Pentium 4 lub Athlon oraz 256 MB pamięci, a pracującego pod kontrolą systemu Windows 3.1 lub DOS, wtedy w rzeczywistości jest wykorzystywany tylko pierwszy megabajt pamięci, a pozostałe 255 MB jest nieużywane!

Pojawiło się zatem zapotrzebowanie na nowe systemy operacyjne i aplikacje działające w 32-bitowym trybie chronionym oferowanym przez nowoczesne procesory. Użytkownicy komputerów opierali się początkowym próbom przejścia na 32-bitowe środowisko pracy. Można odnieść wrażenie, że społeczność użytkowników nie jest skłonna do zmian i woli nadal wykorzystywać starsze oprogramowanie, ale działające szybciej z nowym procesorem, niż nowe aplikacje oferujące dodatkowe możliwości. Wskutek tak dużego sprzeciwu musiało upłynąć sporo czasu, zanim prawdziwe 32-bitowe systemy operacyjne takie jak Unix lub jego odmiany (Linux), OS/2 lub nawet Windows NT/2000 czy XP zyskały na rynku komputerów osobistych większą popularność. Windows XP jest pierwszym w pełni 32-bitowym systemem operacyjnym, który odniósł prawdziwy sukces i było to spowodowane głównie faktem zakończenia tworzenia przez Microsoft systemów z serii Windows 95/98/Me, które są mieszanką architektur 16- i 32-bitowej. Windows 3.x był ostatnim wyłącznie 16-bitowym systemem operacyjnym. Tak naprawdę nigdy nie był uważany za prawdziwy system operacyjny, ponieważ stanowił nakładkę dla systemu DOS.

Nowy procesor Itanium oferuje nową architekturę 64-bitową, chociaż można również uruchomić istniejące aplikacje 32-bitowe. Aby jednak w pełni wykorzystać jego możliwości, konieczne jest stworzenie 64-bitowego systemu operacyjnego i aplikacji. Firma Microsoft opracowała 64-bitową wersję systemu Windows XP, natomiast kilka innych producentów stworzyło 64-bitowe aplikacje sieciowe przeznaczone dla stacji roboczych.

Wirtualny tryb rzeczywisty

Kluczem do zgodności wstecz 32-bitowego środowiska Windows jest trzeci tryb pracy procesora wirtualny tryb rzeczywisty. Wirtualny tryb rzeczywisty (ang. virtual real mode) właściwie jest trybem wirtualnym środowiska 16-bitowego działającego w 32-bitowym trybie chronionym. Po uruchomieniu w systemie Windows sesji DOS jest wykorzystywany wirtualny tryb rzeczywisty. Dzięki wielozadaniowości oferowanej przez tryb chroniony właściwie możliwe jest uruchomienie kilku sesji w trybie rzeczywistym, w których działają programy na zasadzie pracy w wirtualnych komputerach. Programy te mogą działać jednocześnie, nawet gdy są uruchomione aplikacje 32-bitowe.

Należy zauważyć, że dowolny program działający w wirtualnym trybie rzeczywistym ma dostęp tylko do 1 MB pamięci, co spowoduje, że będzie "przekonany o tym", że jest to pierwszy i jedyny megabajt pamięci dostępnej w systemie. Inaczej mówiąc, jeśli aplikacja napisana dla systemu DOS zostanie uruchomiona w wirtualnym trybie rzeczywistym, będzie miała do dyspozycji tylko 640 kB. Takie ograniczenia wynika stąd, że w przypadku 16-bitowego środowiska pracy jest dostępny tylko 1 MB pamięci RAM, z czego 384 kB jest zarezerwowane dla samego systemu. Wirtualny tryb rzeczywisty w pełni emuluje środowisko pracy procesora 8088, dlatego też aplikacje działają tak, jakby były uruchomione w komputerze oferującym tylko faktyczny tryb rzeczywisty. Każda wirtualna maszyna korzysta z własnej 1-megabajtowej przestrzeni adresowej, w której znajduje się obraz rzeczywistych funkcji systemu BIOS odwołujących się do urządzeń i emuluje wszystkie pozostałe rejestry oraz funkcje występujące w trybie rzeczywistym.

Wirtualny tryb rzeczywisty jest wykorzystywany w momencie uruchomienia, w oknie sesji DOS, 16-bitowego programu stworzonego dla systemu DOS lub Windows 3.x. Po uruchomieniu takiego programu system Windows tworzy wirtualną maszynę DOS, która przejmuje jego obsługę.

Zasługujący na uwagę jest fakt, że wszystkie procesory firmy Intel i z nimi kompatybilne takich firm jak AMD i Cyrix, działając w trybie rzeczywistym, zwiększają swoją wydajność. Po załadowaniu 32-bitowego systemu operacyjnego następuje automatyczne przełączenie pracy procesora w tryb 32-bitowy, który od tej pory przejmuje kontrolę.

Należy również zwrócić uwagę na istotną rzecz, a mianowicie na to, że niektóre aplikacje 16-bitowe (dla systemu DOS i Windows 3.x), działając w środowisku 32-bitowym, nie zachowują się prawidłowo, co oznacza, że wykonują one operacje, które nie są obsługiwane nawet w wirtualnym trybie rzeczywistym. Oprogramowanie diagnostyczne jest znakomitym tego przykładem. Tego typu programy nie sprawują się za dobrze działając w oknie sesji wirtualnej uruchomionej w systemie Windows. W takich sytuacjach rozwiązaniem jest przełączenie procesora Pentium III w faktyczny tryb rzeczywisty poprzez załadowanie systemu DOS z dyskietki startującej lub, w przypadku systemu Windows 9x (z wyjątkiem Me), poprzez przerwanie procesu jego ładowania i nakazanie uruchomienia zwykłej platformy DOS.

Chociaż tryb rzeczywisty jest używany przez 16-bitowy system operacyjny DOS i zwykłe aplikacje, istnieją programy, które "poszerzają" system DOS i udostępniają pamięć rozszerzoną (powyżej 1 MB). Czasem są one określane terminem ekspandera systemu DOS (ang. DOS extenders) i zazwyczaj stanowią część programów przeznaczonych dla systemu DOS lub Windows 3.x. Protokół opisujący proces przełączania systemu DOS w tryb chroniony nosi nazwę DPMI (ang. DOS protected mode interface).

Protokół DPMI był wykorzystywany przez system Windows 3.x w celu uzyskania przez działające pod jego kontrolą aplikacje dostępu do pamięci rozszerzonej. DPMI umożliwiało 16-bitowym programom korzystanie z większej ilości pamięci niż pozwalała im na to ich architektura. Programy rozszerzające DOS były szczególnie popularne w przypadku gier napisanych dla systemu DOS, ponieważ za ich pomocą możliwy był dostęp do znacznie większej ilości pamięci systemowej niż standardowy 1 MB, z którym mogła współpracować większość aplikacji trybu rzeczywistego. Zasada ich działania polega na ciągłym włączaniu i wyłączaniu trybu rzeczywistego procesora. W przypadku programów rozszerzających DOS uruchomionych pod kontrolą systemu Windows jest przez nie wykorzystywany wbudowany protokół DPMI pozwalający im ma współdzielenie obszaru systemowej pamięci rozszerzonej.

Kolejnym wyjątkiem dotyczącym trybu rzeczywistego jest obszar 64 kB pamięci rozszerzonej, który właściwie jest dostępny dla komputera uruchomionego w tym trybie, chociaż tak nie powinno być. Sytuacja ta jest wynikiem błędu popełnionego w oryginalnym komputerze IBM AT, a dotyczącym 21 linii adresowej pamięci znanej jako A20 (pierwszą linią adresową jest A0). Po zmodyfikowaniu tej linii programy działające w trybie rzeczywistym uzyskiwały dostęp do pierwszych 64 kB pamięci rozszerzonej, czyli już za granicą 1 MB. Taki obszar pamięci określany jest terminem pamięci wysokiej (ang. High memory area HMA).


Wyszukiwarka

Podobne podstrony:
Tryb rzeczywisty, chroniony i wirtualny
RZECZYWISTOŚĆ SPOŁECZNA I PROCES JEJ POZNANIA
RZECZYWISTOŚĆ SPOŁECZNA I PROCES JEJ POZNANIAx
CPU Speed Professional darmowy program do szybkiego testowania rzeczywistej prędkości procesorów AMD
Tryb chroniony i rzeczywisty
cz 1c projektowanie systemow czasu rzeczywistego tryb zgodnosci
5 Planowanie w procesie zarzdzania [tryb zgodnoci]
!tutorials, tryb chroniony 3, Modele pamięci
!tutorials, tryb chroniony 2
10 Kontrola w procesie zarzdzania [tryb zgodnoci]
Instytucje i proces decyzyjny Unii Europejskiej tryb stacjon, nauka - szkola, hasło integracja, rok
2 Zagadnienia utrzymania czystości w procesach mikro i nanotechnologii [tryb zgodności]
003 Proces decydowania emocjonalnego tryb zgodno ci
!tutorials tryb chroniony 1
10a Kontrola w procesie zarzdzania [tryb zgodnoci]
13 Proces podejmowania decyzji [tryb zgodnoci]
Augustynek Zdarzenia, rzeczy, procesy
6a Planowanie w procesie zarzdzania [tryb zgodnoci]
003 Proces decydowania emocjonalnego tryb zgodno ci

więcej podobnych podstron