Jądro - Wojciech Bieniecki

Download Report

Transcript Jądro - Wojciech Bieniecki

Środowisko pracy informatyka
zima 2014
Wykład 3
Budowa systemu Unix / Linux
dr inż. Wojciech Bieniecki
Instytut Nauk Ekonomicznych
i Informatyki
http://wbieniec.kis.p.lodz.pl/pwsz
1
Architektura systemu operacyjnego
2
Architektura systemu operacyjnego
Jądro systemu operacyjnego kontroluje bezpośrednio podległy sprzęt.
Zapewnia sterowniki niskopoziomowe urządzeń, funkcje zarządzania
pamięcią i procesorem (np. obsługę przerwań sprzętowych, podział
procesora pomiędzy wiele programów, alokację pamięci dla programów
itp.)
Podstawowe niezależne od sprzętu usługi jądra są dostępne dla
programów wyższego poziomu poprzez bibliotekę wywołań systemowych
(np. usługi tworzenia pliku, rozpoczęcie wykonywania programu, otwarcie
logicznego połączenia sieciowego).
Aplikacje (np. edytory tekstu, arkusze kalkulacyjne) oraz narzędzia
systemowe (proste programy dostarczane wraz z systemem operacyjnym,
np. program wyszukujący łańcuch tekstowy) korzystają z wywołań
systemowych. Są uruchamiane poprzez powłokę (linię poleceń) lub
graficzny interfejs użytkownika.
3
Początki UNIXa
1965 MULTICS (MIT+ AT&T Bell Labs + GE)
MULTiplexed Information and Computing Service
1969 AT&T Bell Labs wycofuje się z projektu;
Ken Thompson i Dennis Ritchie (Bell Labs)
pracując na własną rękę, tworzą w oparciu o idee MULTICSa nowy system UNICS,
(UNiplexed Information and Computing Service),
który implementują na PDP-7
4
Początki UNIXa, cd
1971 AT&T UNIX First Edition (11/3/1971)
pierwsza oficjalna wersja systemu, zawierająca
procesor tekstu, zaimplementowana na PDP-11
1973 3-th Edition UNIX (3/73)
pojawiły się potoki (pipes) i filtry oraz
kompilator języka C.
Jądro systemu napisane w asemblerze.
1973 4-th Edition UNIX (11/73)
jądro systemu napisane w C.
1975 6-th Edition UNIX (V6 UNIX)
pierwsza wersja systemu powszechnie
dostępna poza Bell Labs.
5
BSD UNIX
Na skutek problemów prawnych AT&T nie mogło zarabiać na
sprzedaży UNIXa – postanowiło więc udostępnić go uniwersytetom,
gdzie system był dalej rozwijany.
1977 Bill Joy z Uniwersytetu Kalifornijskiego w Berkeley wydaje
pierwszą wersję Berkeley Software Distribution, znaną jako 1BSD.
1980 W następstwie otrzymania kontraktu DARPA (Defense
Advanced Research Projects Agency) Bill Joy tworzy w Berkeley
kolejną dystrybucję: 4.1BSD.
1984 Powstaje 4.2BSD zawierająca TCP/IP. Rok wcześniej Bill Joy
odchodzi, by stworzyć Sun Microsystems.
1986 Powstaje poprawiona wersja 4.3BSD.
1994 Powstaje ostatnia wersja z Berkeley: 4.4BSD.
6
AT&T UNIX
1982 UNIX System Group (AT&T) wypuszcza System III UNIX.
1983 UNIX System Development Labs (AT&T) wypuszcza System V UNIX Release 1 (SVR1).
1984 Powstaje System V UNIX Release 2 (SVR2).
1985 Pojawia się SVR3 zawierająca m.in. NFS (Network File System).
1992 UNIX System Labs (AT&T) wypuszcza SVR4.2.
1993 Novell kupuje USL od (AT&T) i wypuszcza SVR4.2MP.
1995 SCO (Santa Cruz Operation) kupuje Uniksa od Novella.
2001 Caldera (dystrybutor Linuxa) kupuje Uniksa od SCO.
7
Historia UNIXa
8
Ważniejsze gałęzie drzewa rodziny UNIX
9
Systemy z rodziny UNIX
AIX
http://www.ibm.com/aix/
FreeBSD
http://www.freebsd.org/
HP-UX
http://www.hp.com/go/hpux/
Linux
http://www.kernel.org/
Mac OS X
http://www.apple.com/macosx/
Minix
http://www.minix3.org/
NetBSD
http://www.netbsd.org/
OpenBSD
http://www.openbsd.org/
SCO OpenServer http://www.sco.com/products/openserver6/
OpenSolaris http://www.opensolaris.com/,
http://www.opensolaris.org/
Android
http://www.android.com/
10
Odmiany UNIXa – przykłady
Odmiany oparte o SYSV są bardziej konserwatywne, lecz mają lepsze wsparcie niż
te oparte o BSD.
Ostatnie wersje SYSV (SVR4) i BSD Unix są bardzo podobne – różnią się strukturą
systemu plików, nazwami narzędzi systemowych i opcji oraz bibliotekami wywołań
systemowych.
Różnice pomiędzy SYSV a BSD
Przykład
nazwa jądra
skrypty rozruchowe
zamontowane systemy plików
domyślna powłoka
rozmiar bloku systemu plików
podsystem druku
polecenie echo (bez nowego wiersza)
polecenie ‘ps’
wywołanie wielokrotnego oczekiwania
wywołanie dostępu do pamięci
Typowy SYSV
/unix
katalogi /etc/rc.d
/etc/mnttab
sh, ksh
512B – 2kB
lp, lpstat, cancel
echo "\c"
ps –fae
poll
memset, memcpy
Typowy BSD
/vmunix
pliki /etc/rc.*
/etc/mtab
csh, tcsh
4kB – 8kB
lpr, lpq, lprm
echo -n
ps -aux
select
bzero, bcopy
11
Architektura warstwowa UNIXa
12
Warstwy Unixa z punktu widzenia użytkownika
Aplikacje – tysiące programów, obsługiwanych bądź z linii poleceń , bądź przez
środowisko graficzne.
Menedżery okien i środowiska graficzne – oprogramowanie korzystające z
systemu X odpowiedzialne za wygląd interfejsu, mogące być również kompletnymi
środowiskami pracy (np. GNOME, KDE);
X Window – system graficzny udostepniający obsługę okien, menu, ikon, myszy i
innych elementów typowych dla graficznego interfejsu użytkownika
Powłoka – tekstowy interfejs użytkownika, pozwalający wpisywać polecenia,
wykonywać je i wyświetlać wyniki;
Narzędzia i biblioteki udostępniające programom użytkownika funkcje jądra
Jądro systemu – system operacyjny niskiego poziomu, służący do
komunikacji ze sprzętem zainstalowanym w komputerze;
13
Jądro monolityczne UNIXa
Jądro monolityczne jest jednym programem, podzielonym na podprogramy, które
wzajemnie są ze sobą powiązane. Brak w nich wyraźnej struktury, lub jest ona dosyć luźna.
Przykłady oprócz Unixa to:
MS-DOS, MS-Windows 95, 98, ME.
Użytkownicy
Programy użytkowników, shell, biblioteki
systemowe
Interfejs pomiędzy wywołaniami systemowymi
a resztą jądra
JĄDRO
Interfejs pomiędzy jądrem a sprzętem
Oryginalne jądro systemu Unix było
zaprojektowane dla sprzętu nieposiadającego
żadnego mechanizmu ochrony.
terminale
Pamięć
masowa
Pamięć
operacyjna
procesor
Mimo to twórcy systemu postanowili dokładnie odseparować procesy użytkownika od
sprzętu.
14
Czym jest Linux
Akronim rekursywny: Linux Is Not UniX
Linux jest to bezpłatna wersja systemu operacyjnego UNIX o
otwartym źródle.
praktycznie: nazwę „Linux” odnosimy do całego systemu
operacyjnego: jądra wraz z aplikacjami.
technicznie: Linux jest to jądro systemu;
Pozostałe elementy systemu (narzędzia, aplikacje itp.) można
dobrać na wiele sposobów – skorzystać z tysięcy rozwijanych
niezależnie projektów.
Dobór tych elementów systemu i ewentualne uzupełnienie
Linus Torvalds,
własnym oprogramowaniem przez konkretną osobę,
twórca Linuxa
organizację lub firmę nosi nazwę dystrybucji.
Dystrybucji Linuxa nadających się do zastosowania na danym stanowisku może być bardzo
wiele.
Często użytkownicy kierują się dostępnością dystrybucji dla danej architektury,
dotychczasowym doświadczeniem, poradami środowiska, oferowanym (także odpłatnie)
15
wsparciem oraz własnym gustem.
Dystrybucje Linuxa – wskazówki
Czym kierować się w wyborze dystrybucji
Instalacja systemu – jak pracuje się z instalatorem dystrybucji?
Konfiguracja systemu – jak łatwo/wygodnie konfiguruje się do
działania urządzenia, usługi i środowiska do wymagań użytkownika?
Instalacja i aktualizacja oprogramowania – jak łatwo/wygodnie
instaluje się opcjonalne składniki systemu (biblioteki, aplikacje itp.) i
jak często są one aktualizowane do najnowszych wersji?
Dokumentacja i wsparcie – czy system jest dobrze
udokumentowany, czy zależy nam na firmowym wsparciu (zazwyczaj
odpłatnie) i jak szerokie jest wsparcie społeczności użytkowników?
16
Dystrybucje Linuxa – lista
CentOS
Debian
Fedora
Gentoo
Knoppix
Mandriva
openSUSE
RedHat
Slackware
Ubuntu
Xandros
http://www.centos.org/
http://www.debian.org/index.pl.html
http://fedoraproject.org/pl/
http://www.gentoo.org/
http://www.knopper.net/knoppix/index-en.html
http://www.mandriva.com/pl/
http://pl.opensuse.org/
http://www.redhat.com/
http://www.slackware.com/
http://www.ubuntu.com/
http://www.xandros.com/
17
Dystrybucje Linuxa – skąd pobrać
sklepy detaliczne – ze względu na częste zmiany wersji niewiele dystrybucji jest
rozprowadzanych w ten sposób;
sklepy internetowe – znacznie częstsza forma sprzedaży dystrybucji, zazwyczaj
dystrybucję można nabyć również bezpośrednio ze strony producenta;
serwery udostępniające oprogramowanie – główne źródło pozyskiwania
dystrybucji rozprowadzanych nieodpłatnie (również ze stron twórców i
producentów);
materiały dołączane do czasopism, czasami z dołączonym oprogramowaniem
dodatkowym (własnościowym) lub promocje dystrybucji komercyjnych (wersje
demonstracyjne lub bez wsparcia).
Uwaga: większość dystrybucji Linuxa jest bezpłatnych, jednak
aby legalnie posługiwać się systemem operacyjnym należy
zakupić legalny nośnik (płytę CD lub DVD)
18
Jądro systemu Linux
Jądro zawiera wsparcie dla sterowników sprzętowych dla wielu urządzeń PC (kart
graficznych, sieciowych, dysków twardych itp.), zaawansowane funkcje zarządzania
procesorem i pamięcią oraz wsparcie dla wielu różnych rodzajów systemów plików (łącznie
z dyskietkami DOS, pendrive’ami i standardem ISO9660 dla CD-ROM i DVD-ROM).
Jądro implementuje większość wywołań systemowych BSD i SYSV, jak również wywołania
systemowe opisane w specyfikacji POSIX.1.
Jądro Linuxa jest przykładem jądra monolitycznego z modułami – możliwość ładowanie w
trakcie działania jądra pewnych jego fragmentów (np.: sterowników urządzeń) do pamięci,
na podobnej zasadzie, jak programy użytkowników ładują biblioteki współdzielone.
Jądro takie jest wyposażone w dodatkowe elementy: tablicę symboli, mechanizm
ładowania modułu i mechanizm śledzenia zależności między modułami.
Jądro w surowej postaci binarnej (ładowane bezpośrednio do pamięci w czasie
uruchamiania) typowo znajduje się w pliku /boot/vmlinuz, podczas gdy źródła zazwyczaj
można znaleźć w /usr/src/linux.
Najnowszą wersję jądra Linuxa można pobrać z http://www.kernel.org.
19
Powłoka i GUI Linuksa
Dostępne dwie formy wprowadzania poleceń:
tekstowa powłoka linii poleceń, podobna do spotykanej
w większości systemów UNIX
‘sh’ – powłoka Bourne’a,
‘bash’ – „Bourne again shell”
‘csh’ – powłoka języka C);
interfejs graficzny (GUI) – menedżery okien KDE lub GNOME.
20
Narzędzia systemowe Linuksa
Każde narzędzie systemowe, którego można się spodziewać w standardowych
implementacjach UNIX’a (włączając narzędzia systemowe opisane w specyfikacji
POSIX.2) jest przeniesione do Linuksa.
Narzędzia systemowe zaprojektowano tak, aby wykonywać efektywnie
pojedyncze zadania.
Użytkownik może często rozwiązywać problem łącząc te narzędzia zamiast
budować jednolitą aplikację.
Narzędzia systemowe Linuksa zawierają również programy zwane demonami,
które zapewniają zdalne usługi sieciowe i administracyjne.
Demon (łac. dæmon lub ang. Disk And Executing MONitor) zazwyczaj jest
uruchamiany automatycznie podczas startu systemu i przez większość czasu
oczekuje na pojawienie się zdarzenia.
21
Przykłady demonów w Linuksie
atd and crond: Task scheduler daemons
bootparmd and dhcpd: Dynamic Host Configuration Protocol and Internet Bootstrap Protocol servers
fingerd: Finger protocol server
ftpd: File Transfer Protocol (FTP) server
httpd: Hypertext Transfer Protocol (HTTP) daemon (web server)
identd: Provides the identity of a user of a particular TCP connection
inetd and xinetd: Internet Superserver Daemon
amed: A Domain Name System (DNS) server daemon
nfsd: Network File System (NFS) daemon
ntpd: Network Time Protocol (NTP) service daemon
portmap, rpcbind: SunRPC port mapper
mysqld, postgresql: Database server daemons
routed, gated: Manages routing tables
nfsd, mountd, statd: Part of typical Network File System implementation
rwhod: Maintains the database used by the rwho and ruptime tools
sendmail, postfix: mail transfer agent daemons
snmpd: Simple Network Management Protocol Daemon
syslogd: Syslog daemon
telnetd and sshd: Telnet and Secure Shell server daemons
ypbind: A bind server for Network Information Service ("Yellow Pages")
22
Programy aplikacji w Linuksie
Dystrybucja Linuksa typowo zawiera wiele użytecznych aplikacji, takich jak np.
edytor tekstu ‘emacs’,
przeglądarka obrazów ‘xv’,
kompilator C ‘gcc’,
kompilator C++ ‘g++’,
program rysujący ‘xfig’,
język składu tekstu ‘latex’,
pakiet biurowy OpenOffice.org ‘ooffice’.
Redhat Linux i inne dystrybucje zawierają również Redhat Program Manager
‘rpm’, który czyni łatwym instalację i deinstalację programów aplikacji.
23
Podstawowe polecenia Linuksa
Polecenia wejścia i wyjścia
Polecenie we/wy
Opis
shutdown -r now / reboot
restart systemu (tylko superuser lub root)
shutdown -h now / halt
wyłączenie komputera (j/w.)
su użytkownik
zamiana użytkownika (ang. switch user)
login
zalogowanie się do nowej sesji
exit / logout
zakończenie zalogowanej sesji (jeśli to jedyna sesja powoduje opuszczenie środowiska pracy i wywołanie
okna logowania)
startx
rozpoczęcie pracy w środowisku graficznym X Window
kdm, gdm, xdm
dla managera logowania w trybie graficznym,
odpowiednio KDE, GNOME i XFree86 (wywołanie
managera nie oznacza wyboru środowiska graficznego)
24
Podstawowe polecenia Linuksa
Operacje na plikach i katalogach
Polecenie
Opis
cd nazwa_katalogu
przejście do katalogu. Wpisanie samego cd powoduje przeniesienie do
katalogu domowego /home/uzytkownik (ang. Come in Directory).
mkdir nazwa_katalogu
tworzy katalog o podanej nazwie (ang. Make Directory)
rmdir nazwa_katalogu
usuwa katalog (ang. Remove Directory)
pwd
podaje ścieżkę obecnego katalogu
ls
pokazuje listę plików znajdujących się w danym katalogu (ang. List)
25
Podstawowe polecenia Linuksa
Operacje na plikach i katalogach
Polecenie
ls
cp plik katalog
mv plik katalog
rm plik
touch nazwa_pliku
ln -s /.../katalog/plik
nazwa
whereis nazwa_pliku
Opis
pokazuje listę plików znajdujących się w danym katalogu (ang. List)
kopiuje plik do podanego katalogu (ang. Copy). Aby skopiować cały katalog
musimy użyć opcji -r, czyli cp -r katalog inny_katalog
przenosi plik do podanego katalogu (ang. Move) lub zmienia nazwę pliku. Aby
zmienić nazwę pliku należy wpisać mv nazwa_pliku nowa_nazwa.
usuwa plik o podanej nazwie (ang. Remove), aby usunąć katalog wraz z
zawartością należy użyć opcji -r
tworzy plik o podanej nazwie (lub dla ambitnych - zmienia czas pliku). Plik
można edytować dowolnym edytorem i nadać mu odpowiednie prawa i
atrybuty
wykonuje dowiązanie symboliczne (ang. Link), od tej pory plik będzie można
wykonywać (wywoływać) poleceniem ./nazwa, przydatne gdy instalujemy
program ze źródeł i chcemy zrobić do niego skrót
poszukuje plików źródłowych, binarnych lub stron podręcznika (ang. manual),
z ang. Where is? - dosł. Gdzie jest?
26
Podstawowe polecenia Linuksa
Operacje na procesach
Polecenie
ps
ps -x
kill nr_pid
Opis
wyświetla stan procesów
wyświetla aktualne procesy użytkownika
kończy proces, nr_pid jest wyświetlany w pierwszej
kolumnie po wywołaniu polecenia ps
27
Podstawowe polecenia Linuksa
Uzyskiwanie pomocy lub informacji
Polecenie
Opis
man nazwa_polecenia
wyświetla stronę podręcznika programu (o ile taka istnieje)
uname -a
wyświetla informacje: nazwa jądra systemu, sieciowa nazwa systemu,
numer kernela, wersja jądra, architektura i nazwa systemu
who
finger
wyświetla informacje o użytkowniku (z ang. kto)
rozbudowane who, (z ang. palec, dotykać palcem)
who am I
wyświetla informacje o aktualnym użytkowniku w danej sesji
file plik
wyświetla informacje o pliku (tj. kodowanie, rodzaj pliku)
df
informacje o stanie dysku twardego (zużycie miejsca), jednostki można
określić np. -m - Megabajty, -k - kilobajty
du
wielkość pliku lub katalogu (określenia j/w.)
28
Podstawowe polecenia Linuksa
Instalacja i deinstalacja aplikacji
Polecenie
tar -xvf nazwa.tar
Opis
rozpakowuje plik tar
tar -xvzf nazwa.tar.gz
rozpakowuje plik skompresowany w postaci tar.gz
tar -xvjf nazwa.tar.bz2
rozpakowuje plik skompresowany w postaci bzip2
rpm -ivh nazwa.rpm
instalacja pakietu rpm (RedHat, Fedora itp.)
rpm -e nazwa.rpm
odinstalowanie pakietu rpm (j/w.)
dpkg -opcja nazwa.deb
operacje na paczkach debiana, opcje:
-i - instalacja,
-r - usunięcie
sh plik_binarny
uruchomienie aplikacji binarnej (plik może mieć rozszerzenie *.run)
apt-get install nazwa_pakietu
Instalacja pakietu *.deb w Debianie
apt-cache search fragm_nazwy
Odnajdowanie zainstalowanego pakietu w Debianie
29