UNIX

Unix – pochodzenie i podstawy

CHARAKTERYSTYKA SYSTEMU UNIX

Twórcami systemu operacyjnego UNIX są Ken Thompson i Dennis Ritchie, którzy w latach 1969-1970 opracowali w Bell Laboratories pierwszą wersję systemu. Ich zamiarem było stworzenie wygodnego systemu do wytwarzania oprogramowania, z prostym, ale dającym duże możliwości językiem poleceń oraz niezależnym od urządzeń systemem plików. Następnym etapem w rozwoju systemu było opracowanie języka C, który od tej pory jest nieodłącznie związany z systemem.

Charakterystyczne cechy systemu UNIX:

  • wielodostępność,
  • wielozadaniowość (jednostkami aktywnymi w systemie są procesy pracujące współbieżnie, przy wykorzystaniu różnych mechanizmów synchronizacji i komunikacji),
  • hierarchiczny system plików, z jednolitym potraktowaniem plików zwykłych, katalogów i plików opisujących urządzenia zewnętrzne,
  • wykonywanie operacji wejścia/wyjścia niezależnie od typu urządzeń zewnętrznych,
  • duża liczba programów narzędziowych, tj. kompilatorów języków programowania wraz z otoczeniem wspomagajaąym uruchamianie programów,
  • duża liczba programów usługowych,
  • przenośność oprogramowania systemowego dzięki zapisowi w języku C.

UNIX to pewna filozofia współpracy użytkownika z systemem.

Charakterystyczną cechą nowoczesnych systemów operacyjnych jest ich struktura warstwowa.

+-------------+
| Użytkownicy |
+-------------+---------------------------+  
  Złącze z użytkownikiem
| Programy użytkowe (powłoki, edytory...) |
+-----------------------------------------+---+
| Funkcje systemowe (open, close, fork...)    |
+---------------------------------------------+-------+     
  Złącze funkcji
| Jądro (zarządzanie pamięcią, procesami, plikami...) |     systemowych
+-----------------------------------------------------+---+
| Sprzęt (procesory, pamięć, dyski, terminale...)         |
+---------------------------------------------------------+

Warstwa wewnętrzna to jądro systemu. Pozostała część systemu to warstwa zewnętrzna. Jądro jest łącznikiem systemu ze sprzętem. Zadania jądra:

  • obsługa przerwań
  • przydział procesora
  • operacje wejścia/wyjścia
  • realizowanie procesów
  • zarządzanie pamięcią operacyjną i zewnętrzną.

Każdej akcji wykonywanej poza jądrem odpowiada pewien proces. Wśród procesów specjalną rolę odgrywa powłoka (shell). Jest to proces odpowiedzialny za konwersację z użytkownikiem, tzn. interpretujący polecenia wprowadzane z klawiatury terminalu.

W ramach funkcji systemowych można wyróżnic dwie kategorie:

  1. funkcje dotyczące procesów,
  2. funkcje dotyczące systemu plików.

Procesy mogą generować procesy potomne (child processes). Z procesami związane są sygnały (signals).

Pod tym linkiem poznacie więcej faktów z historii systemu UNIX

Wybrane wersje systemu UNIX

BSD = Berkeley Software Distribution

Berkeley UNIX (BSD 4.3)
AT&T System V Release 4
SunOS/Solaris (firma Sun)
XENIX
HPUX (Hewlett Packard)
SCO Unixware (Santa Cruz Operation)
GNU/Linux (darmowy)
FreeBSD (darmowy)

Historia sytemu UNIX – co wydarzyło się przed powstaniem systemu Linux

Aby odkopać korzenie Linuksa, musimy cofnąć się do roku 1966, kiedy to rozpoczęły się prace nad systemem Multics. Został on zaprojektowany przy współpracy pracowników z Massachusetts Institute of Technology, firmy General Electric oraz Bell Laboratories. Jest to system z podziałem czasu, który niemal w całości napisano w języku PL/I. Z założenia miał być naturalnym rozszerzeniem systemu CTSS (Compatible Time-Sharing System), jednak szybko zyskał ogromne powodzenie, zresztą tak jak inne systemy operacyjne z podziałem czasu, co spowodowało zapotrzebowanie na szybkie przejście do większych i lepszych opracowań tego rodzaju1.

Kilka lat później, w 1969 roku powstał system UNIX. Jego główni twórcy Dennis Ritchie i Ken Thompson wzorowali się właśnie na wspomnianym wyżej systemie Multics. Początkowo system nazywał się Unics, jednak po dodaniu możliwości pracy wielu użytkowników w jednym czasie zmieniono ją na UNIX. Pełna nazwa to Unix Time-Sharing System. Z kolei samo słowo Unix [Unisc] (Uniplexed Information and Computing Service) jest kalamburem określenia Multics (Multiplexed Information and Computing Service)2.

Na początku istniał język B a potem dla zbudowania UNIX stworzono język programowania C

Pierwotnie system UNIX napisany był w języku B, który stworzony został właśnie przez twórców Uniksa i opierał się na języku BCPL. Obecnie nie jest już rozwijany ani używany. W latach 1971-1972 B został rozwinięty do New B, aż wreszcie dzięki Dennisowi Ritchiemu ukazał się C, który do dziś jest podstawą do wielu innych języków programowania. Ponadto, jak czytamy w rankingu Tiobe, język C jest na drugim miejscu najpopularniejszych języków pod względem wyszukiwań. Niedługo po ukazaniu się C został na niego przepisany system Unix wbrew panującemu wówczas przekonaniu, że coś tak złożonego, jak system operacyjny, który musi radzić sobie z szybką obsługą krytycznych zdarzeń, powinno być tworzone wyłącznie w asemblerzeZaowocowało to przenośnością systemu i wzrostem jego zainteresowania.

Należałoby tutaj wspomnieć wcale nie prostą historię C. Wbrew intuicji dzisiejszy C znacznie różni się od swoich początkowych implementacji. Od wydania pierwszej wersji książki „The C Programming Language”, która przez wiele lat była uznawana za referencje do ustandaryzowania języka przez ANSI (American National Standards Institute), minęło aż 11 lat. Pierwsze wydanie książki opisuje tzw. K&R C, którego nazwa pochodzi od nazwisk autorów (Kerrigan and Ritchie). Drugie wydanie opisuje już ANSI C. Na temat tej książki oraz jej wpływu na pokolenia programistów można by napisać osobny artykuł.

Po pewnym czasie twórcy Uniksa przestali ze sobą współpracować, co przyczyniło się do powstania dwóch jego wersji. Pierwsza, BSD (Berkeley Software Distribution) rozwijana była na Uniwersytecie Kalifornijskim w Berkeley, druga wydana w 1983 nazwana „System V” stała się komercyjną wersją Uniksa, nad którą pracowano w AT&T6. W dalszych latach 80. Unix stał się bardzo popularny. Stąd wiele jego odmian i implementacji.

Stallman + GNU (GNU’s Not UNIX)

Koncepcja komercyjnego Uniksa nie spodobała się hakerowi i jednemu z twórców ruchu wolnego oprogramowania, Richardowi Stallmanowi. W 1983 roku wieku 30 lat Stallman ogłosił na grupach dyskusyjnych net.unix-wizards i net.usoft, że zamierza stworzyć kompletny i całkowicie wolny, uniksopodobny system operacyjny GNU (GNU’s Not UNIX). Jednak pracę nad nim rozpoczął dopiero po 5 stycznia 1984 roku, gdy zakończył współpracę z Massachusetts Institute of Technology. Haker chciał bowiem, aby uczelnia nie miała możliwości ingerencji w projekt i roszczenia do niego praw autorskich.

Nie nazywaliśmy naszego oprogramowania „wolnym oprogramowaniem”, bo taki termin wówczas nie istniał. Ale właśnie takie ono było. Kiedy pracownicy innego uniwersytetu albo firmy chcieli przenieść jakiś program na swój system i korzystać z niego, to z chęcią się zgadzaliśmy. Kiedy widziało się kogoś korzystającego z nieznanego, interesującego programu, to zawsze można było poprosić o jego kod źródłowy – żeby go przeczytać, zmienić lub użyć jego fragmentów do stworzenia nowego programu – powiedział Richard Stallman o projekcie GNU. Mężczyzna chciał zapewnić użytkownikom pełną swobodę. Zaczynając od możliwości analizowania kodu źródłowego, przez swobodę dzielenia się oprogramowaniem, zmiany jego zachowania, czy możliwość publikowania dokonanych zmian.

W związku z tym w 1985 roku w marcowym numerze magazynu Dr. Gobb’s Journal opublikowany został Manifest GNU. Był to tekst Stallmana napisany w celu pozyskania współpracowników i poparcia prac nad bezpłatnym, otwartym systemem operacyjnym posiadającym wszystkie cechy użytkowe i strukturę Uniksa. Publikacja ta posłużyła później do stworzenia Definicji Wolnego Oprogramowania. W październiku tego samego roku Stallman założył Fundację Wolnego Oprogramowania.

Mimo iż system GNU jest w użyciu od wielu lat, to jego jądro, GNU Hurd, oparte na architekturze mikrojądra, jest niekompletne, słabo wydajne i nie obsługuje SMP, czyli wieloprocesorowości symetrycznej w obecnej wersji (Mach 4). Dlatego też większość użytkowników GNU używa jądra Linuksa, o którym za chwilę.

About the author