Co to jest tryb rzeczywisty?

Tryb rzeczywisty to schemat adresowania pamięci i stan operacyjny mikroprocesorów komputerowych. W trybie rzeczywistym pamięć, do której program może uzyskać dostęp — zwykle pamięć o dostępie swobodnym (RAM) — nie jest w żaden sposób zarządzana ani buforowana przez sprzęt, oprogramowanie ani podstawowe usługi wejścia i wyjścia (BIOS). Oznacza to, że program może uzyskać dostęp do wszystkich osiągalnych adresów pamięci, niezależnie od tego, do czego jest używana pamięć, i musi samodzielnie zarządzać wszystkimi aspektami odczytu i zapisu do lokalizacji pamięci. Korzystanie z trybu rzeczywistego wiąże się z kilkoma ograniczeniami, w tym z faktem, że ilość dostępnej pamięci jest ograniczona do 1 megabajta, ponieważ procesor w tym trybie umożliwia adresom o długości tylko 20 bitów. Z praktycznego punktu widzenia oprogramowanie komputerowe nie korzysta już z trybu rzeczywistego, ponieważ zostało zastąpione bezpieczniejszym, rozszerzalnym i bardziej elastycznym trybem adresowania, znanym jako tryb chroniony.

Jednostka centralna (CPU) komputera jest miejscem, w którym można aktywować tryb rzeczywisty, a większość aspektów tego trybu faktycznie dotyczy problemów zwykle obserwowanych w aplikacjach napisanych w języku asemblerowym, ponieważ są one dość atomowe z natury. Układy procesorów oparte na oryginalnej architekturze 8086 uruchamiają się w trybie rzeczywistym po włączeniu, aby móc uruchamiać programy napisane dla wcześniejszego sprzętu, chociaż często wymagałoby to oprogramowania do emulacji. Tryb chroniony prawie całkowicie zastąpił rzeczywiste adresowanie, począwszy od 2011 r., do tego stopnia, że ​​dostępnych jest bardzo niewiele kompilatorów, które potrafią nawet skompilować program, który może korzystać z rzeczywistego adresowania, i jeszcze mniej popularnych systemów operacyjnych, które mogłyby go uruchomić.

Pamięć w trybie rzeczywistym to w zasadzie pojedyncza, liniowa sekwencja bajtów, do której można uzyskać swobodny dostęp za pomocą adresu składającego się z 16-bitowego adresu segmentu i 4-bitowego przesunięcia w obrębie segmentu, co po połączeniu daje pełny 20-bitowy adres. Program może uzyskać dostęp do dowolnego miejsca w pamięci i odczytywać lub zapisywać wszystko, niezależnie od tego, co znajduje się w lokalizacji. Oznacza to, że bez odpowiedniego zarządzania i wiedzy program korzystający z trybu adresowania rzeczywistego może łatwo nadpisać system operacyjny i BIOS systemu, wywołać fizyczne przerwanie sprzętowe lub przypadkowo wysłać sygnał do urządzenia peryferyjnego. Może to spowodować nie tylko zawieszenie się lub awarię systemu, ale także utratę danych lub fizyczne uszkodzenie sprzętu.

Wraz z rozwojem architektury procesora tryb chroniony ostatecznie zastąpił tryb rzeczywisty w prawie każdym oprogramowaniu. Z biegiem czasu korzystanie z trybu adresowania rzeczywistego stało się niepotrzebne, ponieważ nie był w stanie uzyskać dostępu do więcej niż 1 megabajta pamięci RAM i nie był w stanie wykorzystać więcej niż 20 bitów magistrali systemowej, co oznaczało, że mógł wykorzystać tylko ułamek zasobów dostępnych na większości komputery. Rzeczywiste adresowanie również stanowi poważne zagrożenie bezpieczeństwa. Jednym z niewielu sposobów napisania programu używającego trybu adresowania rzeczywistego jest użycie języka asemblerowego i wykonanie programu w specjalnym systemie operacyjnym dysku (DOS), który nie przełącza się automatycznie w tryb chroniony podczas uruchamiania.