Unix

background image

HISTORIA ROZWOJU I OGÓLNA CHARAKTERYSTYKA SYSTEMU UNIX

System operacyjny Unix w swojej najwcześniejszej wersji powstał w 1969 roku w

Bell Telephone

Laboratories - jednostce badawczej, której firmą macierzystą była

telekomunikacyjna firma AT&T.

Na jego powstanie miały wpływ prace nad projektem systemu operacyjnego

Multics prowadzone od

1965 roku wspólnie przez Bell Laboratories, General Electric Company i

Massachusetts Institute of

Technology (Bell Labs odstąpiły od tego projektu w 1969 roku). Multics z założenia

miał być systemem

wieloprocesowym i wielodostępnym, oferującym swoim użytkownikom dużą moc

obliczeniową i dużą

pojemność pamięci, jak również łatwość współdzielenia danych.

Najwcześniejsza wersja Uniksa była napisana przez K. Thompsona dla maszyny

PDP-7. Do pracy nad

systemem przyłączyli się D. Ritchie (biorący uprzednio udział w projektowaniu

systemu Multics), nieco

później B. Kernighan i inni pracownicy Bell Labs. Thompson i Ritchie opracowali

pierwotny system

plików Uniksa i nieduży zbiór prostych funkcji systemowych.

Pomysłodawcą nazwy Unix był B. Kernighan. Nazwa ta przez długie lata była

zastrzeżonym znakiem

towarowym firmy AT&T, nabytym dopiero w latach 90-tych przez firmę Novell.

background image

Istotnym momentem w rozwoju systemu Unix było opracowanie przez D.
Ritchi’ego języka C (pod

wpływem opracowanego przez K. Thompsona języka B) i napisanie w 1973 roku
na nowo całego

jądra systemu w tym języku. Spowodowało to, że konstrukcja systemu stała się
przejrzysta i łatwo

przenośna na wszystkie komputery, dla których opracowano kompilator języka
C oraz sterowniki

urządzeń zewnętrznych udostępniające wirtualny obraz sprzętu oczekiwany
przez jądro systemu

Unix (tak zwaną maszynę wirtualną Uniksa). Od 1973 roku Unix stał się
nierozerwalnie związany

z językiem C - kompilator C jest dostępny w każdej wersji Uniksa i wszystkie
uniksowe biblioteki

systemowe mają interfejsy programisty w języku C.

Na początku lat 70-tych firma AT&T, nie mając prawa handlowania produktami
komputerowymi,

przekazała licencje systemu Unix innym firmom komercyjnym i uniwersytetom
amerykańskim.

Spowodowało to ogromną popularyzację systemów uniksowych i rozwój prac
nad ich ulepszaniem

w wielu ośrodkach uniwersyteckich. Największy wpływ na dalszy rozwój Uniksa
miały prace

prowadzone na Uniwersytecie Kalifornijskim w Berkeley - głównie prace
związane z pamięcią

wirtualną i mechanizmem stronicowania. Spowodowały one zainteresowanie
rządu amerykańskiego

projektem i wybranie Uniksa jako standardowego systemu operacyjnego dla
potrzeb rządowych.

background image

Prace nad systemem Unix w Berkeley były finansowane przez rządową agencję

DARPA (Defense

Advanced Research Projects Agency)

, w dużym stopniu w związku z

zapotrzebowaniem rządu na

opracowanie i implementację protokołów sieci Internet pozwalających na
komunikację pomiędzy

lokalnymi sieciami komputerowymi opartymi na różnym sprzęcie i różnych
protokołach warstwy

łącza. Spowodowało to szybki rozwój systemów uniksowych jako sieciowych
systemów operacyjnych
,

jak również rozwój samego Internetu, pełniącego początkowo rolę sieci służącej do
celów militarnych

i akademickich w Stanach Zjednoczonych.

Wersje źródłowe systemu Unix były udostępniane przez AT&T bez żadnego
oprogramowania użytko-

wego. Wiele firm produkowało swoje własne oprogramowanie dla systemów
uniksowych i sprzedawało

swoje produkty pod rozmaitymi nazwami kojarzącymi się z nazwą Unix, na
przykład Ultrix, Xenix itp.

Nawet duże firmy prowadzące własne prace badawcze, takie jak Hewlett-Packard,
DEC czy IBM

decydowały się na implementacje systemów zgodnych z systemem Unix.

Na przełomie lat 70-tych i 80-tych firma AT&T zdecydowała się na
wyprodukowanie własnej komer-

cyjnej wersji Uniksa - pierwsza taka wersja pojawiła się w 1982 roku pod nazwą
Unix System III.

background image

Różne wersje Uniksów rozpowszechniane przez różne firmy i uczelnie były ze sobą
zgodne z punktu

widzenia zwykłego użytkownika, ale nie było pełnej zgodności pomiędzy ich
interfejsami programisty

(nie oferowały jednakowych zbiorów funkcji systemowych). Przy porównywaniu ich
własności

typowymi „punktami odniesienia” były najbardziej rozpowszechnione wersje
systemów z AT&T

(System III, a od roku 1983 System V) oraz z Berkeley

(BSD - Berkeley Software

Distribution)

.

Pierwszą szeroko rozpowszechnioną wersją Uniksa z Berkeley była wersja 4.2
BSD.

Ostatnią wersją utworzoną w Bell Labs była SVR4

(System V Release 4)

, zaś na

Uniwersytecie

w Berkeley - 4.4 BSD. Spośród innych wersji Uniksa najszerzej
rozpowszechnionych na świecie

należy wymienić system Solaris firmy SUN Microsystems. Istnieją również
systemy operacyjne,

które oferują nie-uniksowy interfejs użytkownika, ale są w dużym stopniu zgodne z
Uniksem pod

względem wewnętrznej konstrukcji - typowym przykładem jest system Windows
NT firmy Microsoft.

Różnorodność i rozpowszechnienie systemów uniksowych spowodowały podjęcie
prac nad międzynaro-

dową standaryzacją Uniksa. Standard taki został opracowany przez organizację
IEEE pod nazwą

POSIX

(Portable Operating Systems Interface)

. Standaryzacji uległ także język C

(ANSI C).

background image

Rodziną systemów operacyjnych zgodnych z systemem Unix są też
rozpowszechniane (w niektórych

wersjach nieodpłatnie) systemy Linux. Najwcześniejsza wersja Linuksa została
napisana w 1991 roku

przez Linusa Torvaldsa (studenta z Finlandii) i udostępniona w Internecie. Była
przeznaczona dla

procesora Intel 80386. Prace nad Linuksem spontanicznie podjęła
międzynarodowa społeczność

informatyków w celu utworzenia pełnowartościowego, dostępnego dla wielu
różnych rodzajów sprzętu

i niezależnego od firm komercyjnych systemu operacyjnego zgodnego z normą
POSIX. Obecnie Linux

jest rozpowszechniany zgodnie z regułami GPL

(General Public Licence)

określonymi przez międzyna-

rodową organizację FSF

(Free Software Foundation)

. Reguły te pozwalają

kopiować i rozpowszechniać

programy podlegające licencji GPL i nakazują udostępnianie kodu źródłowego (nie
tylko kodu

binarnego) każdego takiego programu.

Obecnie istnieje wiele różnych odmian systemu Linux, przy czym każda z nich
pojawia się w wielu

coraz to nowszych wersjach. Najczęściej spotykane odmiany to Red Hat, Debian i
Slackware.

Uwaga

Z Linuksem może również współpracować oprogramowanie komercyjne (nie
podlegające licencji GPL).

background image

Ogólne założenia projektowe systemów uniksowych:

- jak największa prostota, przejrzystość i hierarchizacja konstrukcji (nawet
kosztem optymalizacji

czasowej i pamięciowej);

- prosty i spójny logicznie interfejs użytkownika dostarczający wszystkich
podstawowych usług;

- dostarczenie narzędzi ułatwiających tworzenie bardziej złożonych programów
na bazie prostszych

programów;

- korzystanie z hierarchicznego systemu plików, w którym logicznym obrazem
zarówno plików, jak

i urządzeń zewnętrznych są niesformatowane strumienie bajtów;

- wielodostęp i wieloprocesowość (przy czym każdy użytkownik może
współbieżnie wykonywać

wiele procesów);

- ochrona plików i procesów poszczególnych użytkowników;

- ukrycie przed użytkownikami szczegółów sprzętu komputerowego, na którym
funkcjonuje system,

co umożliwia tworzenie oprogramowania łatwo przenośnego do innych
systemów uniksowych.

background image

Ogólny diagram jądra systemu Unix ( według [M. Bach] ):

Programy użytkowników

Poziom użytkownika

Biblioteki

Poziom jądra

Interfejs funkcji systemowych

Podsystem Komunikacja

plików międzyprocesowa

Podsystem Przydział

Pamięć sterowania procesora

buforowa procesami Zarządzanie

pamięcią

Znakowe Blokowe

Programy obsługi urzadzeń

Sterowniki sprzętu

Poziom jądra

Poziom sprzętu

Sprzęt

background image

Z punktu widzenia użytkownika system umożliwia mu komunikację poprzez
urządzenie zewnętrzne

zwane terminalem. Unix powstawał w czasach, gdy podstawowym rodzajem
terminala był dalekopis -

urządzenie elektryczne posiadające klawiaturę i umożliwiające drukowanie linii
tekstu na wysuwającej

się wstędze papieru. Urządzenie takie posiadało bardzo ubogie możliwości korekty
napisanego tekstu

i nie umożliwiało żadnego innego trybu pracy nad tekstem, niż kolejnymi
wierszami. Klasyczny

terminal uniksowy (w obecnych czasach traktowany jako abstrakcyjne urządzenie
symulowane przez

zestaw złożony z klawiatury i monitora ekranowego wyświetlającego tekst)
oznaczony jest symbolem

vt100.

W miarę ulepszania sprzętu komputerowego komplikacji ulegał również logiczny
obraz terminali

użytkowników. Terminal tekstowy vt102 obsługuje klawiaturę o większej liczbie
przycisków

funkcyjnych i umożliwia bardziej zaawansowaną edycję tekstu. Obecnie
dostępnych jest wiele rodzajów

terminali, z których prawdopodobnie najpopularniejszym i udostępniającym
najbardziej typowe funkcje

trybu tekstowego współczesnego sprzętu (przesuwanie kursora we wszystkich
kierunkach, różne kolory

znaków i tła, rozszerzony kod ASCII itp.) jest terminal ansi.

background image

Unix dość wcześnie (w latach 80-tych) został wyposażony w możliwość obsługi
terminali graficznych

(X terminal)

udostępniających graficzny interfejs użytkownika

(Graphical User

Interface - GUI)

.

X terminal składa się z klawiatury, wskaźnika (myszy) i monitora ekranowego
wyświetlającego

informację w graficznym trybie okienkowym. Pierwszy uniksowy interfejs graficzny
został

opracowany w MIT przy wspólpracy z firmą DEC.

W klasycznych systemach uniksowych terminal tekstowy był terminalem
nieinteligentnym
, czyli

urządzeniem obsługującym jedynie prosty protokół komunikacji z komputerem

(mainframe)

i nie

umożliwiającym żadnego lokalnego przetwarzania. Obecnie zazwyczaj
bezpośrednio z komputerem

połączona jest jedynie konsola operatorska

(console)

, a użytkownicy

współpracują z systemem

przy pomocy graficznych stacji roboczych, będących samodzielnymi
komputerami połączonymi

z systemem uniksowym poprzez sieć lokalną i komunikującymi się z nim przy
użyciu protokołu

graficznego

(X protocol)

.

Uwaga

Graficzny tryb pracy umożliwia otwieranie wielu okien tekstowych
(pseudoterminali) jednocześnie

na ekranie jednego terminala graficznego.

background image

Jednym z najważniejszych programów systemowych jest interpreter poleceń,
przyjmujący i wyko-

nujący polecenia użytkownika w trybie tekstowym. Uniksowe interpretery poleceń
znane są pod nazwą

powłok

(shell)

. Istnieje kilka rodzajów powłok, wzajemnie zgodnych między sobą

w zakresie podsta-

wowych poleceń:

- shell Bourne’a (sh) - najstarszy, uważany za klasyczny, o najuboższych
możliwościach;

- C shell (csh) - powstał w Berkeley, w większym stopniu przypomina język
programowania C;

- shell Korna (ksh) - shell początkowo najczęściej używany w komercyjnych
wersjach Uniksa.

W związku z opracowaniem systemu Linux, w ramach projektu GNU powstała
nowa wersja shella

Bourne’a o nazwie bash

(Bourne Again Shell)

. Wersja ta zaadaptowała większość

najkorzystniejszych

cech wcześniej istniejących powłok i obecnie jest prawdopodobnie najbardziej
rozpowszechniona na

świecie.

Poszczególne powłoki posiadają swoje charakterystyczne znaki zgłoszenia

(prompt)

, po których łatwo

jest je rozpoznać. Znakiem zgłoszenia bash’a jest znak $ .

background image

Zbiór poleceń dowolnej powłoki może nie tylko służyć do interaktywnej pracy z
systemem, ale

również służyć jako interpretowany język programowania. Oznacza to, że
użytkownik ma możliwość

tworzenia plików tekstowych zwanych skryptami

(script)

, które zawierają ciągi

poleceń powłoki

wykonywane po uruchomieniu skryptu jako kolejne instrukcje programu. Skrypty
nie podlegają

kompilacji (tak jak na przykład programy w C), ale kolejne polecenia są z nich
wybierane i oddzielnie

interpretowane przez system.

Polecenia wydawane przez użytkownika mogą być poleceniami wewnętrznymi
shella, czyli polecenia-

mi realizowanymi przez sam program powłoki, lub poleceniami zewnętrznymi,
czyli oddzielnymi

programami wykonywalnymi, których wykonanie interpreter jedynie inicjuje.
Jednym z założeń

projektowych Uniksa jest zatarcie różnicy (z punktu widzenia użytkownika)
pomiędzy wywołaniami

poleceń wewnętrznych, wywołaniami programów skompilowanych (binarnych) i
wywołaniami

skryptów, co ułatwia szybkie konstruowanie większych programów z pewnej liczby
mniejszych.

Użytkownik ma możliwość zmiany powłoki w trakcie pracy na inną, wywołując jej
nazwę (na przykład

ksh). Zakończenie pracy z daną powłoką i powrót do poprzedniej uzyskujemy
podając polecenie exit.

W przypadku skryptu również istnieje możliwość określenia, która powłoka
powinna go wykonać.

background image

Jednym z rodzajów obiektów abstrakcyjnych, na których operują systemy
uniksowe, są użytkownicy

(user)

. Użytkownicy są zarejestrowani w systemie, mając przyporządkowane

nazwy

(login name)

i hasła

(password)

. Wśród użytkowników wyróżniony jest użytkownik

uprzywilejowany, którego

nazwą zawsze jest root. Użytkownik uprzywilejowany ma szczególne prawa - ma
dostęp do wszystkich

zasobów systemowych, w szczególności do plików innych użytkowników i do
przestrzeni adresowych

uruchamianych przez nich procesów. Użytkownik ten pełni rolę administratora
systemu
.

Użytkownicy, chcąc współpracować z systemem uniksowym, muszą otworzyć na
nim sesję pracy.

W tym celu muszą zgłosić się do systemu (zalogować), podając swoją nazwę i
hasło. System przepro-

wadza autoryzację użytkownika, sprawdzając odpowiednią pozycję w pliku
haseł
. W przypadku

pomyślnym przydziela zgłoszonemu użytkownikowi terminal i uruchamia związany
z danym termina-

lem proces interpretera komend (jest to tak zwany shell zgłoszony). Proces ten w
pierwszej kolejności

wykonuje swój skrypt startowy, ustalający różne szczegóły związane ze sposobem
współpracy

z użytkownikiem (na przykład tworzący ścieżki dostępu do częściej używanych
katalogów lub

rozbudowujący znak zgłoszenia).

Sesja pracy kończy się w przypadku podania przez użytkownika polecenia exit
shellowi zgłoszonemu.

background image

Klasycznym trybem otwierania sesji jest logowanie się w trybie tekstowym,
przebiegające według

wyżej opisanego scenariusza. Użytkownik ma prawo otwierania wielu sesji
jednocześnie (chyba, że

administrator systemu wprowadzi ograniczenie liczby sesji), przy czym może je
otwierać zarówno

z różnych terminali fizycznych, jak też (jeśli oprogramowanie lokalnego
komputera na to pozwala),

z jednego komputera - na przykład w wielu oknach tekstowych otwartych w
trybie graficznym, lub

w pełnoekranowym trybie tekstowym - wtedy do przełączania pomiędzy sesjami
służą odpowiednie

kombinacje kluczy.

Współczesne systemy uniksowe umożliwiają również otwieranie graficznej sesji
pracy
- w takim

przypadku oprogramowanie stacji roboczej użytkownika musi zawierać program
X serwera, który

komunikuje się z komputerem uniksowym przy użyciu X protokołu. Logowanie
odbywa się w trybie

graficznym, przy czym X serwer „zagarnia” na czas pracy cały ekran monitora
stacji roboczej

i przekształca ją w uniksowy terminal graficzny. Odpowiednikiem shella
zgłoszonego jest wtedy

zarządca sesji

(session manager)

.

Uwaga

Zazwyczaj możliwe jest również zalogowanie się do systemu uniksowego w trybie
tekstowym, a nas-

tępnie wykorzystywanie X serwera jedynie do odbioru wyjścia graficznego
programów uniksowych.

background image

Programy uniksowe generujące wyjście graficzne wyświetlają je na terminalu
graficznym wyspecy-

fikowanym przez zmienną środowiska DISPLAY (jeśli sam program nie definiuje
swojego terminala).

Zawartość tej zmiennej:

adres_sieciowy_komputera : numer_terminala

Adres sieciowy jest nazwą (adresem) w protokole IP lub innym protokole, na
którym oparty jest

protokół graficzny. Numer terminala jest zazwyczaj zerem (chyba, że komputer
obsługuje wiele

zestawów do pracy w grafice). Adres sieciowy może być pominięty w przypadku
pracy bezpośrednio

na konsoli komputera uniksowego.

W przypadku zalogowania się w trybie graficznym zmienna DISPLAY jest jest
ustawiana automatycz-

nie. W przypadku zalogowania się w trybie tekstowym może ona być ustawiona
przez skrypt startowy

lub „ręcznie”. Użytkownik ma możliwość przyporządkowania zmiennej DISPLAY
innego adresu

terminala graficznego, niż swój własny, a tym samym skierowania wyjścia
graficznego swojego

programu do innego komputera (jeśli użytkownik tamtego komputera wyrazi na to
zgodę odpowiednim

poleceniem).

background image

Ważną cechą wszystkich systemów uniksowych jest utrzymywanie informacji
wbudowanej

(manual)

zawierającej opisy wszystkich programów zainstalowanych w systemie oraz
wszystkich funkcji syste-

mowych. Informacja ta jest precyzyjniejsza, niż w innych systemach operacyjnych,
ma bardziej

techniczny charakter i ściśle określony format. Jest zorganizowana w postaci kilku
tomów, przy czym

pierwszy z nich zawiera opisy standardowych poleceń systemowych (polecenia
wewnętrzne są często

zgrupowane w jednym opisie programu interpretera komend), a dalsze - opisy
funkcji systemowych

i programów niestandardowych.

Polecenie wyświetlenia informacji:

man program

W przypadku, gdy polecenie (program) i funkcja systemowa mają tę samą nazwę,
należy podać numer

tomu, na przykład

man read

wyświetli opis polecenia systemowego read, natomiast

man 2 read

wyświetli opis funkcji systemowej read.

background image

Opisy poleceń podają:

- nazwę polecenia;

- składnię jego wywołania, w tym wykaz możliwych opcji;

- liczbę i rodzaj argumentów;

- zwracaną wartość;

- opis działania;

- ewentualny wpływ na zmienne środowiska i zależność od zmiennych
środowiska.

Funkcje systemowe są opisane zgodnie z ich interfejsem w języku C. W opisie
podane są następujące

elementy:

- nazwa funkcji;

- nazwa pliku nagłówkowego biblioteki, w której jest umieszczona funkcja;

- typ wyniku;

- liczba, kolejność i typy argumentów funkcji;

- opis działania;

- wykaz możliwych sytuacji błędnych wraz z ewentualnymi wartościami zmiennej
globalnej errno.

background image

Do każdego systemu uniksowego dołączona jest pewna liczba standardowych
programów, których

nazwy i działanie (z punktu widzenia użytkownika) są takie same we wszystkich
wersjach uniksów.

Poza wspomnianymi wcześniej powłokami (wywoływanymi przez podane polecenia,
przykładowo csh)

i kompilatorem języka C (wywoływanym przez polecenie cc) w każdym systemie
uniksowym występuje

edytor tekstu vi (jego interfejs jest uznawany przez wielu użytkowników za
prymitywny i niewygodny,

ale posiada on zaskakująco szerokie możliwości edycji).

We współczesnych systemach uniksowych poza standardowymi programami
działającymi w trybie

tekstowym dostępnych jest zwykle bardzo dużo programów użytkowych o
interfejsie graficznym -

edytory tekstowe działające w trybie graficznym, edytory graficzne, przeglądarki
internetowe, gry

komputerowe, odtwarzacze muzyki i filmów itd. - nie są one jednak
zestandaryzowane, a ich obecność

w systemie zależy od decyzji administratora i posiadanych zasobów.


Document Outline


Wyszukiwarka

Podobne podstrony:
Powstanie systemu Unix
Outlook to Unix Mailbox
berkeley unix primer hidml5ueqvfbjuzasab6lkrtm7qe7fewekyfirq HIDML5UEQVFBJUZASAB6LKRTM7QE7FEWEKYFIRQ
konspekt dos win unix
unix bible D62JUZ2YT4Y3NJ2YMQB7LRFTMRCDVVSWKY4TVSI
Lecture 01 02 03 Computer Unix
System operacyjny UNIX dla poczatkujacych i zaawansowanych, podsumowanie
Egzamin, H. System Unix, H
Strzelecki - kolos-wejściówka -pytania i odp, WAT, semestr VI, systemy operacyjne UNIX
unix polecenia
UNIX
unix0309
Lab 01 Wprowadzenie do systemu UNIX
Pierwsza wersja systemu operacyjnego Unix powstała w Bell Labs firmy AT
materialy pomocnicze unix id 286339
berkeley unix summary BQSVQRTYD34PKHX5NRIBDWNRWQ2VOV3TOK5SD5Q
Programowanie w Unix p1 id 8273 Nieznany

więcej podobnych podstron