SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN
007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN
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 (oprogramowanie 16-bitowe), tryb chroniony (oprogramowanie 32-bitowe), wirtualny tryb rzeczywisty (oprogramowanie 16-bitowe uruchamiane na platformie 32-bitowej). 3 SO i SK/WIN
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. 4 SO i SK/WIN
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. 5 SO i SK/WIN
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. 6 SO i SK/WIN
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. 7 SO i SK/WIN
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ę. 8 SO i SK/WIN
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). 9 SO i SK/WIN
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). 10 SO i SK/WIN
11 SO i SK/WIN