UNIX
Kurs początkowy
Dr inż. Lucjan Miękina
upel.agh.edu.pl/wimir/login/
Katedra Robotyki i Mechatroniki
October 15, 2012
1/12
System operacyjny UNIX
Pierwsza wersja UNIX-a została zbudowana w 1969 przez Kena Thompsona z
Research Group w Bell Laboratories dla minikomputera PDP-7. Do
Thompsona wkrótce dołączył Dennis Ritchie i obaj, wspólnie z innymi
członkami Research Group, opracowali wczesne wersje UNIX-a.
UNIX będący początkowo osobistym projektem dwóch pracowników Bell
Laboratories, stał się systemem operacyjnym będącym przedmiotem
zainteresowania międzynarodowych komitetów standaryzacyjnych.
Równocześnie jest on przedmiotem studiów akademickich i ważnym elementem
teorii i praktyki systemów operacyjnych.
System jest napisany głównie w języku C, który został specjalnie stworzony do
prac nad UNIX-em, ponieważ ani Thompson ani Ritchie nie byli entuzjastami
programowania w języku assemblera. Porzucenie asemblera było konieczne z
powodu niepewności, na jakich platformach sprzętowych ma UNIX działać.
Ułatwiło to znacznie przenoszenie systemu na inne/nowe platformy.
2/12
System operacyjny UNIX
Drzewo genealogiczne
1969
Unics
1969
Open Source
UnixTSS
1971 to 1973
1 to 4
1971 to 1973
Mixed/Shared Source
1974 to 1975 UnixTSS
PWB/Unix
5 to 6 1974 to 1975
Closed Source
1978
1978
BSD
1.0 to 2.0 UnixTSS
1979
7
1979
Unix 32v
1980
1980
BSD
3.0 to 4.1 Xenix
1981 System III
1.0 to 2.3
1981
1982
Xenix 1982
BSD 4.2 3.0
1983
Sun OS
System V 1983
1 to 1.1
R1 to R2
1984 SCO Xenix
1984
UnixTSS
1985
8 SCO Xenix
1985
AIX W286 System V
BSD 4.3
1986 1.0 R3 HP/UX
1986
Sun OS 1.0 to 1.2
SCO Xenix
1.2 to 3.0
1987 UnixTSS V386
1987
(Time Sharing
HP/UX
System V
1988 System) BSD 4.3
2.0 to 3.0
1988
R4
9 to 10 Tahoe
SCO Xenix
1989
W386 1989
BSD 4.3
1990
Reno
1990
BSD NET/2
1991
Linux 0.0.1
1991
Sun OS
Minix 4
NEXTSTEP/ 386BSD
1.x
1992
OPENSTEP
1992 HP/UX
1.0 to 4.0
6 to 11
NetBSD
Linux 0.8 to 1.0
1993
BSD
0.95 to 1.2.x SCO Unix
1993
4.4 to Unixware
3.2.4
1994
FreeBSD 4.4 lite2 1.x to 2.x
1994
1.0 to
2.2.x NetBSD
1995 OpenBSD 1995
1.1 to 1.2 OpenServer
1.0 to 2.2 Solaris
5.0 to 5.04
1996 AIX
2.1 to 10 1996
3.x to 6.x
1997 1997
NetBSD 1.3
FreeBSD
1998 1998
3.0 to 3.2
Minix OpenServer Unixware
1999 Mac OS X
2.x 5.0.5 to 5.0.7 7.x
Linux
Server
1999
2000
2.0 to 2.6.x
OpenBSD
2000
2.3 to 4.x
NetBSD
FreeBSD
2001 to 2004 1.3 to 5.x 2001 to 2004
3.3 to 8.0 HP/UX
Mac OS X
11i to 11i v3
2005 10.0 to 10.7
2005
Minix OpenServer OpenSolaris
(Darwin)
3.x 6.x 2008.05 and
2006 to 2010 2006 to 2010
later
3/12
System operacyjny UNIX
Założenia projektowe
1
UNIX zaprojektowano jako system wielodostępny z podziałem czasu.
2
Standardowy interfejs użytkownika (powłoka, shell) jest prostym procesem i
może być zastąpiony przez inny.
3
System plików ma postać wielopoziomowego drzewa, pozwalając użytkownikom
tworzyć własne podkatalogi. Pliki są ciągami bajtów.
4
Pliki dyskowe i urządzenia wejścia/wyjścia są traktowane (obsługiwane) możliwie
identycznie.
5
UNIX równocześnie obsługuje wiele procesów. Proces może łatwo utworzyć nowe
procesy (potomne).
6
Przydział czasu procesora do zadań jest oparty o priorytety.
7
Wymiana (disk swapping) jest stosowana jeśli system nie może zapewnić obsługi
pamięci w trybie stronicowania.
8
UNIX był zaprojektowany przez programistów dla programistów. Jest wysoce
interaktywny, a narzędzia rozwoju oprogramowania miały i mają wysoki priorytet,
n.p:
program make, który jest używany do kontroli, które z plików zródłowych
programu wymagają kompilacji i do wykonania jej
system kontroli wersji, który jest używany do zarządzania kolejnymi wersjami
plików zródłowych, bez konieczności przechowywania całych plików.
4/12
System operacyjny UNIX
Interfejs programisty i użytkownika
Jak większość systemów operacyjnych, UNIX składa się z dwu oddzielnych części:
1
jądra (kernel), które dostarcza usług: systemu plików, przydziału procesora do
zadań, zarządzania pamięcią i innych, za pośrednictwem eksportowanych funkcji
systemowych (system calls).
2
programów systemowych, które używają funkcji systemowych udostępnianych
przez jądro w celu realizacji funkcji użytkowych, jak np. kompilacja czy operacje
plikowe.
Funkcje systemowe tworzą tzw. interfejs programisty UNIX-a; natomiast zbiór
programów (poleceń) systemowych tworzy interfejs użytkownika.
Funkcje systemowe UNIX-a można ogólnie podzielić na 3 kategorie:
1
operacje plikowe, zawierające też operacje na urządzeniach, jako że urządzenia w
UNIX-ie są traktowane jako (specjalne) pliki, i te same funkcje systemowe
obsługują pliki i urządzenia
2
sterowanie procesami
3
manipulacja informacjami systemowymi (czas, nazwa hosta, identyfikator
procesu, itp.)
Większość programów systemowych jest napisana w języku C, a podręcznik
programisty (UNIX Programmer s Manual) przedstawia funkcje systemowe jako
funkcje języka C.
5/12
System operacyjny UNIX
Powłoki
Użytkownicy komunikują się z systemem za pomocą programu interpretera poleceń
nazywanego powłoką systemu (shell). W użyciu są następujące powłoki:
sh Bourne shell, mająca znak $ jako domyślny znak zachęty (prompt)
csh (C shell) mająca składnię i konstrukcje podobne do języka programowania C.
Prompt kończy się zwykle znakiem procentu (%)
ksh powłoka Korn a
tcsh TC jest powłoką C wzbogaconą o podpowiadanie nazw plików (file name
completion) i edycję linii poleceń (domyślny prompt: >)
bash powłoka GNU Bourne-Again jest oparta o powłokę Bourne a z dodatkiem
podpowiadania nazw plików i edycji linii poleceń (domyślny prompt kończy $).
dash powłoka Debian Almquist Shell jest zgodna ze standardem POSIX, pochodzi od
ash. Ponieważ wykonuje skrypty szybciej niż bash i ma mniej zależności od
bibliotek, jest domyślną powłoką dystrybucji Debian Linux.
zsh powłoka zsh najbardziej przypomina ksh, ale dostarcza największej liczby
rozszerzeń. Zsh posiada edycję linii poleceń, wbudowaną korekcję poprawności,
programowalne wspomaganie poleceń, funkcje powłoki (z automatycznym
ładowaniem), obsługę historii poleceń, itd.
Poza przetwarzaniem pojedynczych poleceń użytkownika, powłoki UNIX-a posiadają
własną składnię i struktury sterujące. Dzięki temu można znacznie zwiększyć
efektywność, a nawet automatyzować powtarzalne operacje. Można nawet zapisać
ciągi poleceń powłoki w pliku, nazywanym skryptem powłoki (shell script), a potem
wykonywać go jak normalny program.
6/12
System operacyjny UNIX
System plików
Pliki plik w UNIX-ie jest ciągiem bajtów. Poszczególne programy często traktują pliki
jak zapis pewnych struktur danych, ale jądro nie interpretuje tego w ogóle.
Na przykład, istnieje konwencja dot. plików tekstowych, mówiąca, że składają sie one z linii
znaków ASCII, oddzielonych przez pojedynczy znak końca linii newline (który jest znakiem
LF w kodzie ASCII), ale jądro nic nie "wie" o tej konwencji.
Katalogi pliki są zorganizowane w drzewiaste struktury katalogów. Katalogi są plikami
zawierającymi informacje o lokalizacji innych plików.
Ścieżka (lub nazwa ścieżkowa) do pliku jest to łańcuch znaków, który identyfikuje plik,
podając drogę przez strukturę katalogów do pliku. Syntaktycznie, ścieżka składa
się z indywidualnych nazw katalogów i nazwy pliku, oddzielonych znakiem /
(slash).
Na przykład, w ścieżce /usr/local/font, pierwszy slash oznacza katalog główny (root).
Następny element, usr, jest podkatalogiem root, local jest podkatalogiem usr, a font jest
plikiem lub podkatalogiem w katalogu local. To czy font jest zwykłym plikiem czy
katalogiem nie może być odczytane ze ścieżki.
Ścieżki UNIX ma zarówno absolutne jak i względne nazwy ścieżkowe.
Ścieżki absolutne zaczynają się od katalogu głównego i w związku z tym pierwszy znak to
/ , np. /usr/local/font.
Ścieżki względne zaczynają się od katalogu bieżącego, który jest parametrem procesu
używającego dostępu do pliku lub katalogu. Więc local/font oznacza plik lub katalog font w
katalogu local w bieżącym katalogu, którym może (lub nie) być katalog /usr.
7/12
System operacyjny UNIX
System plików
Linki Plik może być znany pod więcej niż jedną nazwą w katalogu/ach. Takie
wielokrotne referencje nazywamy dowiązaniami (links), przy czym wszystkie
dowiązania są traktowane jednakowo przez system operacyjny. UNIX ma też
dowiązania symboliczne (symbolic links), które są plikami zawierającymi nazwę
innego pliku. Te dwa rodzaje dowiązań są nazywane inaczej twardymi i miękkimi.
Dowiązania miękkie (symboliczne), w odróżnieniu od twardych, mogą wskazywać
na katalogi i mogą przekraczać granice systemu plików.
"." Nazwa pliku . w danym katalogu jest twardym dowiązaniem do tego katalogu.
".." Nazwa pliku .. jest twardym dowiązaniem do katalogu nadrzędnego. Tak więc,
jeśli bieżącym katalogiem jest /home/lm/programy, to ../bin/wdf odnosi się do
/home/lm/bin/wdf.
Urządzenia Fizyczne urządzenia mają swoje nazwy w systemie plików. Te tzw. pliki specjalne
są traktowane przez jądro jako interfejsy urządzeń, tym niemniej są udostępniane
użytkownikom za pomocą tych samych funkcji systemowych jakie dotyczą
zwykłych plików. Katalog /dev typowo zawiera pliki specjalne urządzeń, takie
jak /dev/console, /dev/lp0, /dev/mt0, itd.
8/12
System operacyjny UNIX
Zwyczajowy układ katalogów UNIX/Linux
9/12
System operacyjny UNIX
Zwyczajowy układ katalogów
Typowa instalacja system UNIX/Linux posiada m.in. następujące katalogi:
/ katalog główny (root). Tu zaczyna się drzewo katalogów, które zwykle zawiera małą liczbę
podkatalogów.
/bin zawiera pliki binarne głównych programów systemowych, wymaganych do startu systemu i
poleceń (komend) UNIX-a.
/kernel binarny ładowalny obraz systemu operacyjnego UNIX
/boot zawiera jądro Linux-a, początkowy obraz dysku RAM (sterowniki wymagane w czasie startu
systemu) i program ładujący (boot loader). Ważne pliki:
/boot/grub/grub.conf lub menu.lst, używane do konfiguracji programu
ładującego
/boot/vmlinuz - jądro Linux-a
/dev zawiera pliki specjalne urządzeń, takie jak /dev/console, /dev/lp0, /dev/mt0, /dev/null,
/dev/sda, itd. W tym katalogu jądro przechowuje listę znanych sobie i obsługiwanych
urządzeń.
/etc zawiera pliki i programy administracyjne i konfiguracyjne, plik haseł. Ponadto zawiera zbiór
skryptów powłoki, które uruchamiają usługi systemowe w czasie startu systemu. Całą
zawartość tego katalogu ma postać plików tekstowych. Ważne pliki:
/etc/crontab - definiuje kiedy mają się uruchamiać zadania automatycznie
realizowane.
/etc/fstab - tabela urządzeń przechowujących dane (dysków) i ich punktów
montowania.
/etc/passwd - lista kont użytkowników.
/home Normalnie każdy użytkownik posiada swój katalog domowy w katalogu /home. Zwykli
użytkownicy mogą zapisywać pliki jedynie w swoim katalogu domowym. To ograniczenie
zabezpiecza system przed utratą danych i zapewnia ich bezpieczeństwo.
10/12
System operacyjny UNIX
Zwyczajowy układ katalogów
/lib zawiera pliki biblioteczne współdzielone przez główne programy systemowe, podobnie jak
pliki DLL w systemie Windows. Są to biblioteki funkcji języka C, Pascal, FORTRAN, itd.;
mogą one też wystąpić w /usr/lib lub /usr/local/lib.
/usr/local zawiera programy nie wchodzące w skład dystrybucji, ale używane przez różnych
użytkowników. Programy kompilowane ze zródeł są normalnie instalowane w /usr/local/bin.
W nowo zainstalowanym systemie ten katalog jest pusty, aż do momentu instalacji
oprogramowania przez administratora
/usr/sbin zawiera pozostałe programy do administrowania systemem.
/usr/share zawiera wszystkie dane współdzielone przez programy zainstalowane w /usr/bin. Obejmują
one domyślne pliki konfiguracyjne, ikony, tła ekranu, dzwięki, itd. jako że większość
zainstalowanych programów posiada swoją dokumentację, katalog /usr/share/doc
przechowuje pliki dokumentacji podzielone według programów.
/var z wyjątkiem /tmp i /home, katalogi omawiane dotąd były względnie statyczne, tzn., ich
zawartość zmieniałasię rzadko. Katalog /var jest przeznaczony na dane podlegające częstym
zmianom, np. pliki baz danych, poczty elektronicznej, przeglądarek internetowych, itp.
/var/log zawiera pliki logów systemowych, rejestrujących różne działania i zdarzenia występujące w
systemie. Są one ważne i powinny być okresowo sprawdzane. Najbardziej istotnym jest
/var/log/messages, gdzie zapisywane są rekordy dotyczące zdarzeń na poziomie systemu (np.
awarii). Ze względów bezpieczeństwa, niektóre systemy wymagają uprawnień administratora
dla uzyskania dostępu do tych zasobów.
Wszystkie konwencje dotyczące lokalizacji plików i katalogów były zdefiniowane
przez programistów i programy; jądro wymaga tylko istnienia /etc/init do
inicjalizacji procesu terminala potrzebnego do udostępnienia użytkownikowi
systemu.
11/12
System operacyjny UNIX
Polecenia UNIX-a
UNIX posiada rozbudowany zestaw poleceń, umożliwiających nie tylko manipulację
plikami i danymi, ale i środowiskiem użytkownika. Polecenie składa się z nazwy i
argumentów (opcji, nazw plików i/lub innych wyrażeń), a kończy się naciśnięciem
klawisza ENTER (lub RETURN). W działaniu polecenie UNIX-a są podobne do
czasowników języka angielskiego, przeważnie w formie skróconej, cp oznacza copy.
Opcje działają jako przysłówki (adverbs), modyfikując działanie polecenia, a nazwy
plików i wyrażenia są obiektami podlegającymi działaniu.
Ogólna postać polecenia UNIX-a:
nazwa [-flagi] [opcje] nazwapliku/wyrażenie
Nawiasy kwadratowe obejmujące flagi i opcje oznaczają, że są one opcjonalne
(występują jeśli chcemy użyć konkretnej flagi/opcji). Flagi nie muszą być podane
oddzielnie (każda z poprzedzającym znakiem -). Można je podać kolejno wszystkie za
jednym znakiem -.
Wydając polecenia UNIX, należy stosować się do reguł:
polecenia rozróżniają wielkość liter, choć większość używa małych liter
polecenia mogą być wprowadzone tylko z linii poleceń
linia polecenia kończy się naciśnięciem klawisza RETURN
opcje poleceń występują po znaku - (minus)
wiele poleceń akceptuje wiele (nie raz bardzo) opcji.
12/12
Wyszukiwarka
Podobne podstrony:
Wyklad PI 1 cz 2Wyklad PI 2 cz 1Wyklad PI 5Wyklad#$ ?le cz 1WYKŁAD 6, 7 lipidy cz 1 i 2 (SKRYPT)Wyklad PIWykład 11 cz 1Wyklad PI 9Wykład 12 cz 1Wykład Kartografia cz 1materialy wyklad pp cz 3 (2)TECHNIKI MEMBRANOWE WYKŁAD Prochaska cz 2więcej podobnych podstron