A może jednak OS/2?

Historia tak się ułożyła, że kolejne generacje coraz lepszych komputerów osobistych pozostawały na ogół pod kontrolą DOS-a. Działo się tak częściowo z powodu utrwalenia się przyzwyczajeń rzesz użytkowników. Znacznie jednak większą winę ponosi IBM, który nie zadbał o to, by jednocześnie z nowymi komputerami pojawiały się dostosowane do ich możliwości systemy operacyjne. Niezależnie od przyczyn, dla przeciętnego użytkownika komputer klasy AT pozostał tylko szybszym XT.

Historia tak się ułożyła, że kolejne generacje coraz lepszych komputerów osobistych pozostawały na ogół pod kontrolą DOS-a. Działo się tak częściowo z powodu utrwalenia się przyzwyczajeń rzesz użytkowników. Znacznie jednak większą winę ponosi IBM, który nie zadbał o to, by jednocześnie z nowymi komputerami pojawiały się dostosowane do ich możliwości systemy operacyjne. Niezależnie od przyczyn, dla przeciętnego użytkownika komputer klasy AT pozostał tylko szybszym XT.

Gorsze jest lepsze?

Wyobraźmy sobie, że firma Mercedes-Benz zainstalowała na desce rozdzielczej swoich samochodów dźwignię, która przełącza maszynę w jeden z dwóch trybów pracy: standard i fiat 126p. W trybie "standard" samochód zachowuje się jak zwykły Mercedes, zaś w trybie "fiat 126p" moc silnika, szybkość, przyspieszenie, zużycie paliwa i bezpieczeństwo jazdy przybierają poziom charakterystyczny dla malucha. Pytanie retoryczne - ilu posiadaczy Mercedesa będzie korzystało z trybu "fiat 126p"?

Przed taką właśnie alternatywą stoją posiadacze komputerów typu IBM PC o klasie wyższej niż XT. Rzecz dziwaczna - ogromna ich większość wybiera opcję "maluch", bo taki właśnie wymiar ma pozostawanie w obrębie systemu operacyjnego DOS.

Jak doszło do tej paradoksalnej sytyuacji?

8086

był pierwszym 16-bitowym mikroprocesorem firmy INTEL. Jego architektura umożliwia wyłącznie przetwarzanie jednozadaniowe. Przestrzeń adresowa 8086 wynosi 1 MB, jednak komputery PC i PC XT przeznaczają na pamięć RAM jedynie początkowe 640 kB pamięci fizycznej. W celu zmniejszenia kosztów komputera opracowano wersję tego samego mikroprocesora o symbolu 8088, który wewnętrznie jest 16- bitowy, ale z szyną danych zwężoną do 8 bitów.

Użytkownicy bardzo szybko osiągnęli granicę 640 kB RAM i oczekiwali na więcej. Zaczęły nawet powstawać "łaty" sprzętowe w postaci niestandardowych kart rozszerzeń RAM.

80286

Pierwszy przełom we wczesnej historii komputerów osobistych wprowadził 16-bitowy 80286, wraz z którym na biurkach licznej już rzeszy entuzjastów PC pojawił się komputer PC AT. Procesor ten posiadał dwa tryby pracy: rzeczywisty (real mode), w pełni udający 8086/88, oraz nadzorowany (protected mode), w którym możliwości procesora zostały zasadniczo rozszerzone. Nowa jakość polegała głównie na obecności mechanizmów ochrony pamięci operacyjnej przed niekontrolowanym dostępem. W trybie tym procesor udostępnia mechanizm tzw. pamięci wirtualnej (Virtual Memory), w którym tylko fragmenty pamięci wirtualnej znajdują się w pamięci fizycznej, zaś pozostała część rezyduje w specjalnym pliku na dysku twardym.

Pamięć wirtualna dzieli się na bloki zmiennej długości, tzw. segmenty. Opisy segmentów znajdują się w specjalnej tablicy, zarezerwowanej do dyspozycji systemu operacyjnego, zwanej globalną tablicą deskryptorów (Global Descriptor Table - GDT). Istnieją również lokalne tablice deskryptorów (LDT), po jednej dla każdego zadania. Program użytkownika ma prawo dostępu wyłącznie do własnej LDT. Ponieważ inne mechanizmy ochrony zezwalają na modyfikację LDT i GDT jedynie programowi nadzorczemu (Supervisor), aplikacje nie mają żadnych możliwości wchodzenia we wzajemne kolizje. Takiego mechanizmu nie można zrealizować w żaden sposób w komputerze z procesorem 8088. Jeżeli system operacyjny działa w trybie chronionym, to ma on wyłączność na adresowanie przez tablice GDT, co zapewnia mu stuprocentową ochronę przed nieuprawnionym działaniem aplikacji.

Wielozadaniowy system operacyjny, pozbawiony skutecznego mechanizmu protekcji, zawsze będzie ułomny. Coż bowiem wart system, który nie potrafi zapobiec kolizjom między współbieżnie działającymi programami? Co gorsze, sam jest również bezbronny wobec źle działającego programu. Bez pełnej ochrony procesów, przetwarzanie wielozadaniowe może być po prostu niebezpieczne, bowiem nawet poprawnie napisany program zadziała nieprawidłowo, gdy jego praca zostanie zakłócona przez inny proces. Rezultatem mogą być np. błędne wyniki operacji arytmetycznych, i to bez żadnych okoliczności budzących podejrzenia operatora.

80386, 80486

Kilka lat po narodzinach 80286, firma INTEL w 1985 r. powołała do życia procesor 80386. Oprócz przełamania bariery 16 bitów (co w gruncie rzeczy jest tylko zmianą ilościową), największymi nowościami w stosunku do 80286 były: segmentowanie pamięci wirtualnej ze stronicowaniem na żądanie (demand paging), dodanie tzw. płaskiego trybu adresacji (flat model) oraz - przede wszystkim - wirtualny tryb 8086.

Tryb wirtualny umożliwia zrealizowanie wielu - do 240 - sesji DOS-owskich jednocześnie. Każdy z wirtulanych DOS-ów ma zapewnione 640 kB pamięci wirtualnej, logiczne odwzorowanie bufora karty grafiki VIDEO, oraz pełną protekcję operacji wejścia/wyjścia. DOS wirtualny jest nawet lepszy niż "prawdziwy", gdyż jego emulator rezyduje poza pamięcią DOS, pozostawiając prawie pełne 640 kB do dyspozycji programu aplikacyjnego. Niektóre programy działają szybciej pod DOS-em wirtualnym niż konwencjonalnym, bo emulator systemu jest 32-bitowy. Wielką zaletę stanowi dużo większa odporność systemu na błędy programu. W DOS-ie konwencjonalnym program mógł bez przeszkód zniszczyć system operacyjny, zaś w trybie virtual 8086 jest to prawie niemożliwe, z uwagi na prawie całkowity brak systemu w bloku pamięci konwencjonalnej. W zamian, możliwe jest przechwytywanie wielu błędów, które w "normalnym" DOS-ie prowadziłyby do zawieszenia systemu.

Kolejny mikroprocesor z omawianej rodziny, 80486, z logicznego punktu widzenia nie wprowadza prawie nic nowego. Można go traktować jako szybszą, ulepszoną wersję 386 zintegrowanego z koprocesorem arytmetycznym.

Jaki system?

Prawie żadna z zalet znakomitego w swoim czasie mikroprocesora 80286, a wraz z nim PC AT, nie została wykorzystana na masową skalę. Odwrotnie, pozostały one w ukryciu, przysłonięte brakami powszechnie stosowanych, nadal rozwijanych, systemów DOS. Żadna z wersji DOS-u nie próbowała nawet sięgnąć do nowych możliwości procesorów 80x86. W zasadzie, nie ma w tym nic dziwnego, bowiem architekturę DOS-u projektowano przed rozpoczęciem prac nad procesorem 80286, gdy nikt jeszcze nie mógł przewidzieć tak szybkiego rozwoju mikroelektroniki. W uproszczeniu można powiedzieć, że DOS jest jedynie rozszerzeniem BIOS-u o obsługę plików i moduł zarządzania pamięcią.

Wraz z pojawieniem się na rynku komputera AT użytkownicy znający zalety procesora 80286 zaczęli odczuwać coraz bardziej słabości systemu DOS. Lukę tę początkowo zapełnił Xenix, czyli mikrokomputerowa wersja Unixu. Ogromne tempo, w jakim Unix przystosowano do mikrokomputera, wynikało ze struktury tego systemu. W chwili pojawienia się nowego komputera wystarczy bowiem napisać tylko nowe jądro systemu (jedyna część Unixu uwarunkowana sprzętowo), zaś resztę przekompilować. Jednak uniwersalność UNIX-u powoduje, że zalety sprzętu często pozostają nie wykorzystane. Gdy system nie jest dedykowany do sprzętu, wówczas jego działanie bywa często zbyt wolne.

Systemem, który w pełni wykorzystywał zalety procesora 80286, była OS/2. Jego pierwsza wersja 1.0. pojawiła się w r. 1987 z dość dużym opóźnieniem w stosunku do Xenixu. Należy natomiast podkreślić, był to od razu w pełni wielozadaniowy system operacyjny. Posiadał zarządzanie segmentowaną pamięcią wirtualną i w zasadzie wszystkie podstawowe składniki, które do dziś stanowią o jego istocie. Nie miał jeszcze wbudowanego Presentation Manager'a (PM), za to mógł pracować z kartą Hercules. Wersję 1.1 SE (Standard Edition) wyposażono już w PM, zaś wersja 1.1 EE (Extended Edition) przyniosła ze sobą m. in. LAN Manager, Communication Manager i DataBase Manager.

Po wersjach OS/2 1.2 i 1.3 (SE i EE) nastąpiła nieco długa (chyba zbyt długa) przerwa, wypełniona ciszą zarówno wokół gotowych już produktów, jak i planów IBM wobec dalszych losów systemu. Firma nie podjęła zdecydowanych działań marketingowych na rzecz OS/2, co jest o tyle niezrozumiałe, że od samego początku miał on dostatecznie wiele zalet, by wygrać wszelkie porównania z innymi systemami operacyjnymi dla PC.

OS/2 2.0 - system totalitarny

IBM oficjalnie zaprezentował systemu OS/2 ver. 2.0 SE w kwietniu 1992 r. Z czysto technicznego punktu widzenia trzeba przyznać, że warto było poczekać.

OS/2 2.0 w pełni wykorzystuje wszystkie możliwości 32- bitowego procesora 80386, a w tym: stronicowaną pamięć wirtualną, pełną ochronę pamięci, płaski model pamięci oraz wirtualny tryb 8086. Kontroluje 4 GB przestrzeni adresowej pamięci rzeczywistej i 512 MB pamięci wirtualnej dla pojedynczej aplikacji. Przestrzeń adresowa pamięci wirtualnej dla DOS wynosi 633 kB plus 32 MB pamięci EMS i 16 MB pamięci XMS oraz 512 MB pamięci przeznaczonej na aplikacje DOS-u. Pod OS/2 2.0 może działać 240 współbieżnych sesji wirtualnego DOS-a, zaś ilość wszystkich zadań może sięgać liczby 4096. Maksymalna wielkość logicznego pliku dyskowego, ograniczona liczbą 32-bitową, wynosi 2 GB. Można więc powiedzieć, że współczesny sprzęt PC nie dorósł jeszcze do możliwości systemu.

W miejsce DOS-owskiego FAT (File Allocation Table) zastosowano zupełnie nowy, znacznie wydajniejszy i bezpieczniejszy system obsługi plików HPFS (High Performance File System). Optymalizuje on wszelkie operacje dyskowe, w szczególności na dużych plikach i katalogach, oraz stale kontroluje strukturę plików. Nie wchodząc w szczegóły wystarczy powiedzieć, że w systemie HPFS pojęcia takie jak fragmentacja plików dyskowych nie mają żadnego sensu. HPFS odcina również możliwości bezpośredniego dostępu do dysku fizycznego. Wynika to z konieczności zabezpieczenia zasobów dyskowych przed ingerencją programu w cudze pliki, co przeczyłoby podstawowej zasadzie wielozadaniowości. W HPFS nazwa plików może zawierać 254 znaki.

OS/2 2.0 wyposażono w obiektowy graficzny interfejs użytkownika, z pełnym wykorzystaniem technik dynamicznej wymiany danych (DDE) oraz łączenia i osadzania obiektów (OLE). Wszelkie operacje na plikach, katalogach, tworzenie własnych kartotek itd. wymaga jedynie operacji typu ikona- mysz. Wysoki komfort pracy powiększa zawsze dostępny help kontekstowy, podręcznik konwersacyjny, słowniki i skorowidze. Wraz z systemem użytkownik otrzymuje m. in. edytor tekstu, zawsze dostępny edytor ikon, arkusz kalkulacyjny, prostą bazę danych, kalkulator, kalendarz, notatnik, itp.

Wiele problemów, które w Windows rozwiązują dopiero aplikacje - np. narodowe alfabety (w tym polski), edycja ikon, fonty ekranowe i dla drukarek, sterowniki urządzeń zewnętrznych - w OS/2 2.0 załatwiono od razu i do końca konsekwentnie. Jest on też gotów do współbieżnego wykorzystywania wszystkich form komunikacji: graficznej, tekstowej, wizualnej i fonicznej, a więc technik multimedialnych.

Pod OS/2 2.0 działają (z sygnalizowanymi już zastrzeżeniami) wszystkie aplikacje 16- i 32-bitowe napisane dla DOS, 3.0 oraz poprzednich wersji OS/2. Windows 3.1 zasadniczo pozostaje w konflikcie z OS/2, gdyż odwołuje się do chronionego trybu procesora.

OS/2 jest ze swej natury systemem wielodostępnym; pod tym względem wykazuje powinowactwo raczej z Unixem niż z Novell NetWare. Jednym z opcjonalnych rozszerzeń OS/2 jest oprogramowanie sieciowe typu LAN (OS/2 LAN Server), ale komputer z OS/2 może z powodzeniem pracować jako stacja robocza w sieci Novell. Co więcej, działa dużo lepiej od stacji z DOS-em, gdyż odpowiedniki IPX, NET i in. lokują się poza 640 kB, a na dodatek pracują asynchronicznie z intensywnym buforowaniem wewnętrznym. Zintegrowany z systemem Communication Manager pozwala na podłączenie się do większości dużych sieci komputerowych.

Programiści otrzymują 32-bitowy API (Application Programming Interface), dający możliwość programowania obiektowego w środowisku Presentation Managera z wykorzystaniem jego zasobów. Wraz z tym środowiskiem dostarczono bibliotekę ponad 1000 funkcji do obsługi okien, grafiki, spoolera, itd. Poza tym, do dyspozycji pozostają biblioteki DDL (fragmenty kodu dynamicznie dołączane do programu); na zasadzie DLL oparty jest zresztą sam system operacyjny.

OS/2 nie ogląda się do tyłu. Minimalna konfiguracja sprzętu dla wersji 2.0 może przyprawić o zawrót głowy niektórych indywidualnych posiadaczy komputerów osobistych: procesor 80386SX, 4 MB pamięci operacyjnej, VGA, mysz, i dysk twardy 80 MB (system zajmuje nie mniej niż 20 MB). W dodatku, system stawia wysokie wymagania wobec zgodności sprzętu ze standardem i niektóre niezbyt "markowe" komputery nie pracują pod OS/2 prawidłowo; zdolność do pracy z OS/2 można uważać za istotny test kompatybilności sprzętu. Za to cena podstawowego pakietu tylko niewiele przewyższa cenę DOS-a.

Rozwijając OS/2, firma IBM realizuje jedną ze swych "fabrycznych" zasad, która mówi, że system operacyjny powinien w maksymalnym stopniu wykorzystywać możliwości procesora. Szkoda jednak, że pojawianie się kolejnych wersji systemu było zwykle mocno opóźnione w stosunku do nowości sprzętowych i nie towarzyszyła im stosowna do rangi zagadnienia akcja marketingowa. W rezultacie DOS, o którym dawno powinniśmy zapomnieć, nadal stanowi dominującą platformę systemową PC, zaś MS Windows (znakomicie propagowane przez producenta) stopniowo przejmuje kolejne cechy OS/2, bo lepszej drogi po prostu nie ma.


TOP 200