Niezbędnym elementem oprogramowania podstawowego każdego komputera jest system operacyjny. Jego zadaniem jest tworzenie środowiska operacyjnego, w którym użytkownik może wygodnie i bezpiecznie opracowywać, uruchamiać lub eksploatować programy. System operacyjny ukrywa przed użytkownikiem pewne cechy i funkcje sprzętowe, a dostarcza mu w zamian narzędzi wygodniejszych do rozwiązywania problemów. W szczególności system operacyjny umożliwia:
-przechowywanie informacji przez dłuższy czas w pamięci,
-wspólne wykorzystywanie urządzeń komputerowych przez grupę osób, jednoczesne wykonywanie różnych czynności przez system komputerowy,
-korzystanie z różnorodnych pakietów oprogramowania.
1.1 Filozofia systemu
UNIX od swojego powstania w 1969 roku zyskał znaczną popularność głównie dzięki temu, iż jest dostępny jest na komputerach różnej mocy — od mikrokomputerów po komputery klasy mainframe i zapewnia na nich jednakowe środowisko pracy. Mimo, iż system ten powstał ponad 30 lat temu, ciągle jest rozbudowywany.
Zasadniczo system ten składa się z dwóch części:
-programy i usługi - dzięki którym środowisko UNIX stało się takie popularne (shelle, programy pocztowe, kompilatory,...);
-system operacyjny wspierający te programy i usługi.
W połowie lat 70-tych system UNIX został udostępniony uniwersytetom i uzyskał dużą popularność w społeczności akademickiej, ponieważ:
-był mały — pierwsze systemy (na PDP-11) wymagały dysku o rozmiarach 512kB, wykorzystując l6kB na system, 8kB na programy użytkownika i 64kB na plik;
-był elastyczny — dostępny był kod źródłowy napisany w języku wysokiego poziomu, co ułatwia przenoszenie systemu operacyjnego na inne komputery;
-był tani — uniwersytety mogły uzyskać licencje systemu UNIX w cenie nośnika — taśmy, na której był nagrany.
Już pierwsze wersje systemu dawały duże możliwości, takie, jakie miały wówczas tylko systemy operacyjne pracujące na znacznie droższych maszynach.
Powyższe zalety przeważały nad ówczesnymi wadami systemu, takimi jak:
-System nie miał opieki informatycznej — AT&T przeznaczył tak znaczne środki na system MULTICS, że nie był już zainteresowany rozwijaniem systemu operacyjnego UNIX.
-Miał wiele błędów, a ponieważ nie było opieki informatycznej, nie było tez pewności, ze błędy te zostaną usunięte.
-Niewiele lub tez wcale nie było dokumentacji — jednakże zawsze można było sięgnąć do wersji źródłowej.
1.2 Własności systemu UNIX
System UNIX obejmuje system operacyjny pracujący z podziałem czasu (ang. time sharing operating system), zarządzający pracą oraz zasobami komputera, a także interakcyjne, elastyczne środowisko operacyjne. Został tak zaprojektowany, aby równolegle mogło pracować wiele procesów, oraz aby zapewnić obsługę wielu użytkowników, umożliwiając wspólne korzystanie z danych. Środowisko operacyjne zostało zaprojektowane w architekturze modułowej na wszystkich poziomach. Podczas procesu instalacji systemu UNIX można włączyć tylko wybrane elementy, odpowiednie do potrzeb użytkowników, pomijając pozostałe elementy. Dla przykładu, system UNIX zawiera duży zestaw programów użytkowych służących opracowywaniu oprogramowania. W przypadku, gdy użytkownicy nie będą opracowywać oprogramowania, wystarczy zainstalować kompilator w minimalnej konfiguracji, bez tych programów. Interfejs użytkownika jest również zgodny z filozofią modułową. Polecenia zupełnie niezależne od siebie mogą być w prosty sposób łączone przez potoki (ang. pipes), umożliwiając wykonanie złożonych operacji.
Właściwym systemem operacyjnym jest jądro (ang. kernel). Jest ono odpowiedzialne za zarządzanie zasobami i dostęp do elementów sprzętu komputerowego. Jądro zawiera odpowiednie moduły dla każdego elementu sprzętu komputerowego, z którym współpracuje. Moduły te umożliwiają oprogramowaniu dostęp do jednostki centralnej, pamięci, dysków, terminali, sieci komputerowej i innych. Przy instalacji nowych elementów sprzętu komputerowego nowe moduły mogą być włączone w skład jądra.
1.2.2 Środowisko operacyjne
Modułowa struktura środowiska systemu UNIX jest najbardziej widoczna w warstwie narzędzi aplikacji. Filozofia poleceń systemu jest następująca: każde pojedyncze polecenie wykonuje dobrze jedna czynność, natomiast zastaw poleceń tworzy pewien komplet narzędzi. W celu wykonania konkretnego zadania dobiera się odpowiednie narzędzie lub narzędzia, a złożone zadania mogą być wykonane przez odpowiednie złożenie narzędzi. Od samego początku zastaw „narzędzi” systemu UNIX zawierał znacznie więcej niż tylko proste polecenia, służące porozumiewaniu się z systemem. UNIX zapewnia również cały szereg programów użytkowych jak np. pocztę elektroniczna (mail, mailx), edycje plików (ed,ex,vi),przetwarzanie tekstów (sort, grep, wc, awk, sed), formatowanie tekstów (nroff), opracowywanie oprogramowania (cc, make, lint, lex), zarządzanie wersjami kodu źródłowego programów(SCCS, RCS), komunikacje miedzy systemami (uucp, ftp, telnet), monitorowanie stanu procesowi kont użytkowników (ps, du, acctom). Interakcyjna, programowalna, modułowa implementacja środowiska użytkownika systemu sprawia, ze nowe programy użytkowe mogą być łatwo przygotowane i dołączone do zestawu narzędzi użytkownika, a narzędzia które nie są niezbędne, mogą być pominięte bez zakłócenia pracy systemu.
Duża popularność systemu UNIX można głównie przypisać:
-kompletności i elastyczności systemu, pozwalającym dopasować go do wielu środowisk aplikacyjnych;
-licznym programom użytkowym, zawartym w środowisku operacyjnym, podnoszącym produktywność użytkowników;
-dostępności systemu na wielu platformach sprzętowych i jego przenaszalności.
Program Shell jest interakcyjnym interpretatorem poleceń. Polecenia wprowadzane są po znaku gotowości programu Shell i wykonywane bezpośrednio po ich wydaniu. Użytkownik komunikuje się z komputerem właśnie za pomocą programu Shell. Program Shell przyjmuje na wejściu to, co użytkownik wprowadzi z klawiatury i sprowadza polecanie użytkownika do takiej postaci, która może być zrozumiana przez jądro systemu. Wtedy system wykonuje polecenie. Należy zauważyć, ze program Shell jest nie zależny od jądra systemu. Jeśli użytkownikowi nie odpowiada interfejs dostarczonego programu Shell, program ten może być łatwo zastąpiony innym programem Shell. Obecnie dostępnych jest wiele programów Shell. Niektóre wykorzystują system poleceń, ale są również takie, które zapewniają interfejs w formie menu.
1.2.3 Hierarchiczny system plików
Informacja przechowywana jest na dysku w pojemnikach zwanych plikami (ang. files). Każdy plik ma przyporządkowaną nazwę. Użytkownik posługując się ta nazwą może uzyskać dostęp do określonego pliku. Pliki zawierają zwykle dane, teksty programów, itd. System zawiera setki plików. W związku z tym istnieje w nim także inny rodzaj pojemnika zwany katalogiem (ang.directory), który pozwala użytkownikom organizować ich pliki w logiczne grupy. W UNIX-sie katalog może być wykorzystany do grupowania plików lub innych katalogów. Struktura systemu plików jest bardzo elastyczna.
1.2.3 Wielozadaniowość(multi tasking)
W systemie UNIX kilka zadań może być wykonywanych w tym samym czasie. Jeden użytkownik z pojedynczego terminala może wykonać kilka programów i będzie to wyglądało tak, jakby programy te działały jednocześnie. Oznacza to na przykład, ze użytkownik może edytować pewien plik z tekstem, podczas gdy inny plik jest formatowany, a jeszcze inny drukowany. W rzeczywistości jednostka centralna może wykonywać tylko jedno zadanie w danej chwili, ale system operacyjny ma zdolność dzielenia czasu jednostki centralnej miedzy wiele procesów skierowanych do wykonania w tym samym czasie. Z punktu widzenia użytkownika wygląda to tak, jakby wszystkie programy były wykonywane równocześnie.
1.2.5 Wielodostępność(multi user)
Wielodostępność oznacza, ze więcej niż jeden użytkownik może rozpocząć prace i użytkować system w tym samym czasie. Wiele terminali lub x-terminali może być dołączonych do tego samego komputera. Jest to naturalne rozszerzenie wielozadaniowości. Jeśli system może wykonywać wiele programów równocześnie, to niektóre z tych programów mogą obsługiwać sesje innych użytkowników. Dodatkowo, jeden użytkownik może w tym samym systemie komputerowym rozpocząć prace wiele razy z różnych terminali. Dużą zaletą takiej architektury jest możliwość dostępu wielu członków grupy roboczej do tych samych danych w tym samym czasie.
1.3 Krótka historia UNIXa
W 1965 roku podjęto próby skonstruowania systemu operacyjnego MULTICS (MULTI-plexed lnformation and Computing System) przez: Bell Telephone Laboratories, General Electric Company oraz Massachusetts Institute of Technology.
Założenia tego systemu:
– równoczesny dostęp do komputera dużej ilości użytkowników;
– dostarczenie im znacznej mocy obliczeniowej i dużej pamięci operacyjnej;
– wygodne współdzielenie danych.
Pierwsza wersja systemu działała przed 1969 rokiem.
W 1969 r. zaprzestano prace nad Multicsem — implementacja nie spełniała oczekiwań. Ken Thomson i Denis Ritchie w Laboratoriach Bella naszkicowali zarys systemu wzorowanego na Multicsie. Chcąc stworzyć grę komputerową przenieśli swój projekt na popularny wówczas komputer DEC PDP-7. Ich współpracownik z laboratorium Brian Kernighan ochrzcił nowy system nazwa UNIX (później oznaczony jako wersja 1 ).
W 1971 r. zaimplementowano UNIX na bardzo popularnym wówczas DEC PDP-11. Była to pierwsza wersja, która opuściła laboratorium (start UNIXa, wg. funkcji dostarczanych przez system nastąpił 1 stycznia 1970 roku — patrz ctime(3)).
Rozmiar systemu:
– system: 16 KB;
– programy użytkowe: 8 KB;
– dysk twardy: 512 KB;
– pliki do 64 KB.
1972 Denis Ritchie stworzył język C.- używanych jest 10 systemów UNIX powstaje druga edycja systemu.
1973 Przepisano UNIXa z asemblera na C.- 25 instalacji UNIXa Czwarta edycja systemu. System jest po raz pierwszy, nieoficjalnie dystrybuowany na uniwersytetach.
1974 pierwsza poważna wzmianka o UNIXie w prasie fachowej (Communications of ACM- UNIX wersja 6).Piąta edycja — System jest oficjalnie dostępny dla uniwersytetów, ale tylko do celów edukacyjnych
1975 Szósta edycja — Licencje systemu są dostępne dla instytucji rządowych i komercyjnych.
1977 - ok. 500 instalacji UNIXa, w tym 125 na uniwersytetach. Pierwsza firma zaczyna handlować UNIXem.
1978 — Siódma edycja.
1982 w Bell Laboratories połączono kilka wersji UNIXa powstałego w AT&T w jeden system komercyjnie znany jako UNIX System III.
1983 Bell Labs. dodało do Systemu III kilka udogodnień - powstał UNIX System V (co się stało z Systemem IV?). AT&T oficjalnie zaczęło wspierać UNIX System V. Pracownicy Uniwersytetu Kalifornijskiego w Berkeley dodali ciekawe udogodnienia i zaimplementowali je na komputery VAX - powstał BSD (Berkeley Software Distribution) UNIX 4.3.
1984 ok. 100.000 instalacji od mikrokomputerów do dużych maszyn.
þ 1985 System V Interface Definition (SVID) — określa standardowe funkcje systemowe
(ang. system calls).
1989 System V Release 4 (SVR4) — system zgodny z POSIX.l.
1.4 Powody popularności
Główne powody popularności systemu UNIX to:
– system jest napisany w języku wysokiego poziomu, co ułatwia przenoszenie na nowe platformy sprzętowe;
– prosty interfejs użytkownika (zarówno tekstowy, jak i graficzny);
– wygodny system plików;
– dostępność wielu narzędzi;
– wielodostępność i wieloprocesowość;
– stabilność i bezpieczeństwo w użytkowaniu systemu.
1.5 System UNIX i standardy
System otwarty — modne jest ostatnio to hasło — najogólniej jest to system komputerowy pozostający w zgodzie z uznanymi międzynarodowymi standardami i współpracujący z innymi produktami spełniającymi wymagania tych standardów. W takim systemie pochodzące z różnych źródeł: sprzęt, oprogramowanie, oraz systemy operacyjne mogłyby ze sobą dowolnie współpracować na przykład w sieci komputerowej. Dzięki standaryzacji wszelkich połączeń miedzy nimi.
Otwarty system operacyjny — system prawdziwie przenośny i uniwersalny bez bliższych związków z jakakolwiek architekturą, czy konfiguracją o precyzyjnie zdefiniowanych i znormalizowanych regułach współpracy z oprogramowaniem użytkowym i użytkownikami. Proces rozwoju takiego systemu również powinien być otwarty, a więc jawny i oparty na współpracy wszystkich zainteresowanych. UNIX dzisiaj jest najbliższy pod tymi względami ideałowi.
Filozofia systemów otwartych, czy otwartych systemów operacyjnych nie jest czymś nowym. Użytkowników i programistów zawsze pociągały takie idee, nie miało to jednak większego wpływu na strategię rynkową producentów.
Możliwość łatwego przenoszenia aplikacji była jednym z celów rozwoju systemu UNIX od samych jego początków. Ponieważ większość systemu operacyjnego i programów użytkowych została napisana w języku C, a nie w asemblerze, system UNIX nie był ograniczony do jednego tylko procesora, czy tez jednej platformy sprzętowej. Z drugiej strony, ponieważ system UNIX jest napisany w języku wysokiego poziomu, łatwo go modyfikować. Świadczy o tym ponad 100 firm oferujących implementacje zbudowane na podstawie systemu UNIX, licencjonowane przez AT&T, oraz wiele implementacji naśladujących system UNIX, które nie wymagają licencji AT&T. Chociaż większość implementacji wywodzi się z systemu UNIX firmy AT&T, systemu UNIX BSD lub z ich kombinacji, każda implementacja może zawierać pewne szczególne rozszerzenia systemu operacyjnego, takie jak np. przetwarzanie w czasie rzeczywistym, które mogą zniweczyć zgodność różnych implementacji systemu. Obecnie system V zawiera już w sobie wiele popularnych własności systemu BSD.
W celu zapewnienia zgodności różnych implementacji, formułuje się standardy środowiska systemu operacyjnego UNIX. Celem tych standardów jest promowanie:
-Przenaszalności — możliwości łatwego przenoszenia aplikacji z jednej implementacji systemu na inną.
-Współpracy aplikacji — możliwości wymiany informacji miedzy aplikacjami pracującymi na różnych implementacjach systemu.
-Skalowalności — oferowania całej rodziny opcji sprzętowych, poczynając od małych do dużych systemów, po to, by użytkownik mógł wybrać z tej oferty opcje odpowiednia do jego potrzeb aplikacyjnych. Ponadto — możliwości elastycznej rozbudowy sprzętu i powiększania jego możliwości wraz z rozbudowa aplikacji.
1.5.1 Cele organizacji standaryzujących(normalizujących)
Standardy nie mają na celu zbudowanie zupełnie nowego interfejsu, ale określenie interfejsu na podstawie już istniejących implementacji systemu UNIX; takiego, który byłby dobrze zdefiniowany i przenaszalny. Istotne jest zrozumienie, ze standardy maja na celu określenie interfejsów środowiska systemu operacyjnego UNIX, a nie tego jak standard powinien być zaimplementowany. Standardy systemu UNIX nie wymagają, aby wszystkie komputery z systemem UNIX były swoimi kopiami, ale raczej, aby wszystkie zapewniły pewien wspólny zestaw funkcji. Konkretna implementacja powinna natomiast spełnić te funkcje. Dobrym przykładem jest samochód. Podstawowy interfejs określony przez „standard” samochodu jest następujący:
Jazda — naciśnij pedał gazu.
Stop — naciśnij pedał hamulca.
Zmiana kierunku — obróć kołem kierownicy.
Uruchomienie silnika — przekręć kluczyk stacyjki.
Samochody spełniające standard tego interfejsu, mogą być budowane na wiele różnych sposobów. Samochód może mieć, na przykład, silnik elektryczny albo silnik benzynowy, ale naciśniecie pedału gazu w obu przypadkach spowoduje jazdę samochodu. Zgodnie z powyższa filozofia również inne systemy operacyjne będą zgodne ze standardem, jeśli tylko spełnia warunki opisanego interfejsu.
Środowisko obliczeniowe ciągle się zmienia i rozwija. Standardy powinny być rozszerzalne. Powinny być możliwe do zachowania, mimo rozwoju technologii i rosnących wymagań użytkowników. Standardy są określane w sposób modułowy, tak ze pewne moduły mogą być dodane lub ewentualnie wymienione, gdy pojawia się potrzeba lepszego interfejsu.
Praca z systemem
Rozdział ten przedstawia w sposób systematyczny podstawowe wiadomości dotyczące koncepcji i pojęć systemu UNIX. Opisuje jak rozpocząć prace z systemem, oraz podstawowe, najczęściej używane polecenia systemu.
2.1 Sesja przy terminalu
Przed rozpoczęciem pierwszej sesji, należy udać się do lokalnego administratora UNIXa, aby założył konto dla nowego użytkownika w systemie.
2.1.1 Rozpoczęcie sesji
Sesja jest określeniem pracy z systemem, od chwili zgłoszenia się do niego (log in), do momentu jej zakończenia (log out). Komunikat ten nazywa się monitem systemowym (system login prompt). System oczekuje wówczas na wpisanie nazwy użytkownika. Tradycja nakazuje stosować małe litery, bez względu na rangę i powagę przezwanego w ten sposób użytkownika. Następnie pojawia się pytanie o hasło (password), wprowadzane hasło nie jest wyświetlane na ekranie. Po zaakceptowaniu „danych osobowych” system jest gotowy do pracy, co sygnalizuje znak zachęty (monit, prompt), oznaczony zwykle przez $ lub %, znak zachęty administratora systemu to tradycyjnie #. Bardzo często na początku sesji są wyświetlane komunikaty pochodzące od administracji systemu. Należy mieć na względzie, ze postać pojawiających się napisów, komunikatów, znaków zachęty, itp. nie jest ustalona raz na zawsze i może być modyfikowana przez administratorów, bądź w pewnym zakresie przez samego użytkownika.
2.1.2 Zakończenie pracy
W większości współczesnych instalacji sesje UNIXową kończy wykonanie komendy logout, lub exit. Tradycyjnie do zakończenia sesji można tez użyć kombinacji klawiszy Ctrl-D, choć niejednokrotnie instalacja zabrania tego, aby uniknąć przypadkowego wyjścia z systemu. Znak Ctrl-D jest w ogólności znakiem końca pliku, a więc łatwo o pomyłkę.
2.1.4 Klawiatura
Omawiając klawiaturę terminala należy pamiętać, ze UNIX rozróżnia małe i duże litery, generalnie preferowane są litery małe.
Należy pamiętać, ze klawiszy sterujących używa się poprzez wciśniecie klawisza Ctrl i przytrzymując go wciśnięcia wybranego klawisza. Odmiennie jest z klawiszami używanymi wraz z klawiszem Esc. Klawisze z tej grupy używa się wciskając i zwalniając klawisz Esc, a następnie wybrany klawisz.
2.2 Pliki i katalogi - operacje podstawowe
Rozdział ten wprowadza podstawowe koncepcje dotyczące plików. Podaje czym jest pełna i skrócona nazwa pliku, co rozumiane jest przez katalog domowy. Prezentowane są również komendy pozwalające manipulować plikami.
2.2.1Czym jest plik
Plik jest podstawowym elementem w systemie UNIX. Prawie wszystko traktowane jest jako plik, włączając:
-dokumenty – pliki zawierające tekst, takie jak listy, pliki ze źródłami programów lub wszystko inne co użytkownik może napisać;
-komendy – wiele komend jest plikami wykonywalnymi, tzn. plikami które można uruchamiać, np. pisząc komendę lynx można przeglądać tekstowo WWW, jest to plik wykonywalny;
-urządzenia – system operacyjny traktuje terminal, drukarkę, czy urządzenie dyskowe jako plik;
katalogi – katalogi są plikami zawierającymi inne pliki, w dalszej części niniejszej publikacji zostanie to dokładniej wyjaśnione.
2.2.2 System plików
System plików w UNIXie ma hierarchiczną strukturę drzewiastą. Korzeń tego drzewa (root ) oznaczony jest symbolem /. Węzłami drzewa są katalogi, mogące zawierać dalsze pliki i katalogi. Pełna nazwa pliku (absolute pathname) jest drogą prowadzącą do tego pliku od korzenia, czyli tzw. ścieżka dostępu. I tak dla pliku who ścieżka dostępu jest /bin/who. Jeżeli używane nazwy nie rozpoczynają się od symbolu /, są nazwami relatywnymi (relative pathname), używanymi w bieżącym katalogu.
2.2.3 Metaznaki – maskowanie nazw
Mówiąc o nazwach plików, warto wspomnieć o niektórych znakach specjalnych, zwanych metaznakami. Nazwy zapisane z użyciem metaznaków określa się mianem nazw uogólniających lub wzorców nazw. W UNIXie dostępne są następujące metaznaki:
...
mirekj4