Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 25: Ewolucja systemów operacyjnych

W 1972 r. system operacyjny UNIX został na nowo napisany w języku C, co sprawiło, że mógł być przenoszony na inne komputery, jeśli tylko wcześniej zainstalowało się na nich translator języka C.

Publikacja: 09.06.2022 21:00

Ken Thompson i Dennis Ritchie przy PDP-11, ok. 1970 r.

Ken Thompson i Dennis Ritchie przy PDP-11, ok. 1970 r.

Foto: Peter Hamer

W poprzednim odcinku tego cyklu opisywałem, jak doszło do stworzenia pierwszych programów zarządzających pracą całego komputera, mogących uruchamiać i zatrzymywać inne programy, odbierających i wykonujących polecenia użytkowników – czyli tzw. systemów operacyjnych. Dzisiaj opowiem o ich dalszej ewolucji.

Pokolenie olbrzymów

W felietonie zatytułowanym „Historia systemów operacyjnych” („Rzecz o Historii”, 27 maja 2022 r.) doprowadziłem ową historię do momentu, kiedy firma IBM wprowadziła na rynek system OS/360 (i jego ograniczoną wersję DOS/360), wyznaczając po raz kolejny pewien standard, do którego inni starali się dostosować. IBM był zdecydowanym liderem na tym rynku, ale pojawili się także inni twórcy systemów operacyjnych dla dużych komputerów (klasy mainframe, którą zdefiniowałem we wcześniejszych felietonach). Z przyjemnością wspomnę tu opracowany w latach 60. XX wieku w firmie CDC (Control Data Corporation) system SCOPE (Supervisory Control of Program Execution), z którego korzystałem, pracując na zainstalowanym w Krakowie komputerze CDC Cyber 72. Ten jeden komputer był tak potężny, że umieszczony w centrum obliczeniowym Cyfronet zaspokajał ówczesne potrzeby obliczeniowe wszystkich szkół wyższych Krakowa i wszystkich zlokalizowanych w tym mieście instytutów naukowych (a było ich dużo). System SCOPE, który wtedy dobrze poznałem, był naprawdę mądrym i wygodnym w użytkowaniu programem. Gdy później (w latach 80., po wmuszeniu nam komputera Riad naśladującego IBM/360) korzystałem z systemu OS/360 – naprawdę wydawał mi się on znacznie prymitywniejszy i gorszy. Ale to tylko mój subiektywny osąd prostego użytkownika – być może zdania ekspertów są na ten temat inne.

Pozostawiając na uboczu dyskusję o tym, który system był lepszy, a który gorszy, trzeba stwierdzić, że oba systemy były ogromne i obsługiwały ogromne maszyny, zdolne równocześnie wykonywać obliczenia dla wielu użytkowników. Do tej grupy gigantów dołączył w 1967 r. system TOPS-10 (Total Operating System-10) firmy DEC (Digital Equipment Corporation). TOPS był przeznaczony dla wielkich komputerów PDP-10 produkowanych od 1966 r. i znajdujących na trudnym rynku komputerów mainframe licznych chętnych nabywców (sprzedano 1500 egzemplarzy). Warto może wspomnieć, że gdy tworzono zalążki dzisiejszego internetu w postaci sieci ARPANET (głównie do zastosowań wojskowych), to system TOPS-10 był wykorzystywany do obsługi pierwszych komputerów wchodzących w skład tej supersieci.

Nieoczekiwane pojawienie się nowej gwiazdy

Rywalizację systemów operacyjnych dla bardzo wielkich komputerów przerwał dość nieoczekiwanie jeden z uczestników tej gry – wspomniana wyżej firma DEC. Pomimo sukcesów na rynku komputerów klasy mainframe założyciel i dyrektor firmy DEC Ken Olsen jako pierwszy wyczuł, że przyszła pora na coś absolutnie nowego – i w 1970 r. wypuścił na rynek rewelacyjny minikomputer PDP-11. Nie była to taka wielka niespodzianka, bo już w 1963 r. firma DEC zaczęła sprzedawać minikomputer DEC-5 (sprzedano 1000 sztuk) i minikomputer PDP-8, którego sprzedano 60 tys. sztuk. Ale to, co nastąpiło po wypuszczeniu PDP-11, nie da się porównać z niczym, co miało miejsce wcześniej. Ten minikomputer miał znakomite właściwości: był łatwy w programowaniu, nadawał się do sterowania procesów przemysłowych, a ponadto tak go zaprojektowano, że mogli go produkować nisko kwalifikowani robotnicy, dzięki czemu był stosunkowo tani. Sprzedano łącznie 600 tys. tych maszyn, co w tamtych czasach (lata 70. XX wieku) było liczbą zawrotną.

Dlaczego wspominam o tym minikomputerze w rozdziale poświęconym ewolucji systemów operacyjnych? Bo właśnie ten komputer spowodował całkowity przewrót w dziedzinie tych systemów. Ale opowiedzmy o tym po kolei.

Dwóch entuzjastów w firmie Bell Labs

W firmie Bell Labs pracowało dwóch bardzo utalentowanych informatyków: Dennis Ritchie i Ken Thompson. Mieli oni pomysł na nowy system operacyjny, ale nie bardzo mogli go zrealizować, bo ich firma Bell Labs jako część firmy AT&T (American Telephone and Telegraph Company) dostała zakaz wchodzenia na rynek komputerowy – zgodnie z wyrokiem sądu w postępowaniu antymonopolowym. Ritchie i Thompson skorzystali jednak z okazji, że firma DEC zamówiła w Bell Labs oprogramowanie do edycji tekstów dla mało popularnego minikomputera PDP-7. Ritchie i Thompson stworzyli taki program i przekazali go do firmy DEC, gdzie przez pewien czas wykorzystywano go do pisania zgłoszeń patentowych. Ale przy okazji w tym programie stworzyli także podwaliny dla innowacyjnego systemu, który mógł bardzo sprawnie zarządzać pracą całego komputera. W istocie był to więc system operacyjny! Ale firma DEC nie była tym zainteresowana, bo miała znakomity (wspomniany wyżej) system TOPS-10, a dla minikomputerów opracowała systemy RS-11 (do ogólnych zastosowań), RSTS-11 dla systemów z podziałem czasu (obsługujących równocześnie wielu użytkowników) i RSX-11 dla zastosowań w automatyce i sterowaniu procesów.

Jednak będąc otwarta na nowości, firma DEC dała się namówić i na rewelacyjnej maszynie PDP-11 udostępniany procesor tekstu miał już dodany (jako gratisowy suplement) ten nowy system, który jego twórcy nazwali UNIX.

Ta nazwa powstała w wyniku żartu kolegi Ritchiego i Thompsona, Briana Kernighama. Geneza tego żartu była następująca: zespół Bell Labs w latach 60. pracował przy projekcie systemu Multics (Multiplexing Information and Computer Services), mającego obsługiwać wielu użytkowników. System ten miał być zainstalowany na komputerach GE 645, ale współpraca z GE źle się układała i w 1969 r. prace porzucono. Kernigham, widząc kolegów pracujących przy systemie, który miał obsługiwać tylko jednego użytkownika, zaproponował dla niego nazwę Unics, która nawiązywała do Multiksa, ale oznaczała Un-multiplexed Information and Computing Service. Ritchie i Thompson mieli poczucie humoru, dlatego nazwę przyjęli, ale gdy w 1970 r. dodali do swojego systemu możliwość obsługi równocześnie wielu użytkowników – nazwę Unics zmienili na Unix. 3 listopada 1971 r. Ritchie i Thompson opublikowali książkę „Podręcznik programisty UNIX” i od tej pory ta nazwa zaczęła funkcjonować publicznie.

Genialne narzędzie do tworzenia genialnego systemu

Pierwsza wersja systemu UNIX była – jak wspomniałem wyżej – potraktowana jako „przybudówka” do procesora tekstu. Twórcy trochę na tym zarobili, bo DEC uczciwie zapłacił, ale firma Bell Labs nadal nie wspierała ich działań w najmniejszym stopniu, bo nie miała prawa działania na rynku komputerowym. Ritchie i Thompson mimo to zrobili coś niesłychanego.

Wszystkie systemy operacyjne w latach 70. (i wcześniej) były pisane w assemblerze, czyli języku bardzo bliskim kodom maszynowym, oczywiście w każdym komputerze innym. Uważano bowiem, że wysoką szybkość działania – konieczną przy pracy systemu operacyjnego, a zwłaszcza przy obsłudze tzw. zdarzeń krytycznych – może zapewnić tylko dbałość o najdrobniejsze szczegóły kodu. Pierwszą wersję UNIX-a oprogramowano więc w assemblerze komputer PDP 11/20.

Ale potem Ritchie wymyślił język programowania o krótkiej nazwie C. Ta krótka nazwa do dziś budzi szacunek, bo język C okazał się jednym z najlepszych języków programowania, jakie kiedykolwiek opracowano. Jest on do dziś masowo używany wprost albo w udoskonalonej wersji C++ lub C#. Jeśli uwzględnić, że ten język opracowano 50 lat temu, to przy ogromnej szybkości zmian, jakie zachodziły i zachodzą stale w informatyce, jest to efekt wprost niewiarygodny!

W 1972 r. system operacyjny UNIX został na nowo napisany w języku C, co sprawiło, że mógł być przenoszony na inne komputery, jeśli tylko wcześniej zainstalowało się na nich translator języka C (co było łatwe). W tymże roku w fachowym czasopiśmie „Communications of the ACM” ukazał się artykuł opisujący UNIX-a, co sprawiło, że narzędziem tym zainteresowały się środowiska naukowe.

Rozpowszechnianie UNIX-a 

Kupić UNIX-a nie można było, ale Ken Thompson po cichu zaczął rozsyłać kasety i paczki dyskietek z systemem do ważnych i opiniotwórczych ośrodków. Było to nielegalne, żeby więc upozorować, że chodzi o zwykłą towarzyską korespondencję, na każdej przesyłce umieszczał dopisek: „love, Ken”.

Na mocy wspomnianego wyżej wyroku antymonopolowego Bell Labs sprzedawać systemu nie mógł, ale miał obowiązek udostępniania informacji na jego temat wszystkim podmiotom, które się o to oficjalnie zwrócą. W efekcie agencja ARPA tworząca ARPANET (prototyp internetu) w maju 1975 r. wydała dokument RFC 681 zalecający używanie UNIX-a w węzłach tworzonej supersieci. W środowisku akademickim bardzo dobrą robotę wykonał prof. John Lions, który w 1977 r. wydał książkę „Lions’ Commentary on UNIX 6th Edition, with Source Code”. W 1978 r. firma DEC w swoim nowym systemie komputerów VAX, który zastąpił komputery PDP, zastosowała UNIX jako główny system operacyjny.

Po okresie darmowego rozdawania UNIX-a i cieszenia się z tego, że ktoś chciał go wziąć, nadeszła era komercjalizacji także tego produktu. W 1982 r. zakończył się trwający od 1974 r. proces antymonopolowy przeciwko firmie AT&T (której częścią było Bell Labs) i firma ta mogła zacząć UNIX sprzedawać. Opracowano więc komercyjną wersję UNIX System V. Nie obyło się bez awantur. Jeden z czołowych użytkowników starszych (darmowych) wersji UNIX-a, Uniwersytet Kalifornijski w Berkeley, wydał UNIX-a pod nazwą BSD (Berkeley Software Distribution). BSD pod wieloma względami górował nad Systemem V – zwłaszcza w kontekście rozległych sieci komputerowych, ewoluujących do przyszłego internetu. System V i BSD konkurowały na rynku, w efekcie UC Berkeley i AT&T często spotykały się w sądzie, co nie sprzyjało rozwojowi. W klimacie tych komercyjnych przepychanek powstał i rozwinął się potężny ruch społeczny tzw. wolnego oprogramowania i Open Source. Ale o tym opowiem już w następnym felietonie.

Autor jest profesorem AGH w Krakowie

W poprzednim odcinku tego cyklu opisywałem, jak doszło do stworzenia pierwszych programów zarządzających pracą całego komputera, mogących uruchamiać i zatrzymywać inne programy, odbierających i wykonujących polecenia użytkowników – czyli tzw. systemów operacyjnych. Dzisiaj opowiem o ich dalszej ewolucji.

Pokolenie olbrzymów

Pozostało 97% artykułu
2 / 3
artykułów
Czytaj dalej. Subskrybuj
Historia
Pomogliśmy im odejść z honorem. Powstanie w getcie warszawskim
Historia
Jan Karski: nietypowy polski bohater
Historia
Yasukuni: świątynia sprawców i ofiar
Historia
„Paszporty życia”. Dyplomatyczna szansa na przetrwanie Holokaustu
Historia
Naruszony spokój faraonów. Jak plądrowano grobowce w Egipcie