Temat 8 Systemy operacyjne rodziny UNIX Historia Budowa warstwy systemu procesy systemy plików Interfejs użytkownika powłoki graficzny interfejs użytkownika (GUI) Aplikacje 8.1 Cechy systemu UNIX wielodostęp z podziałem czasu wieloprogramowoś ć proste interfejsy użytkownika napisany w dużej częś ci w języku wysokiego poziomu (C) systemy plików o wielopoziomowej strukturze drzewiastej dostęp do urządzeń zewnętrznych poprzez system plików (proc) pierwotnie dla systemów z komputerem głównym i końcówkami terminali obecnie także dla stacji roboczych, komputerów PC (Linux) wiele wariantów i wersji różnych producentów coraz większa standaryzacja 8.2 1
Początki systemu UNIX r.1969 AT&T Bell Laboratories, autorzy: Ken Thompson, Denis Ritchie, pierwowzór: system Multics 1973 pierwsza wersja napisana w języku C (specjalnie do tego celu stworzonym) 1974 oficjalna prezentacja na ACM Symposium on Operating Systems system udostępniony nieodpłatnie uniwersytetom 1979 wersja 7 pierwowzór wielu dalszych wersji, AT&T wprowadza opłaty licencyjne Univ.Kalifornijski w Berkeley opracowuje własną wersję: BSD (Berkeley Software Distribution) 1985 AT&T system V standard interfejsu programowego dwie główne linie rozwojowe: BSD i system V 8.3 Wersje komercyjne, próby standaryzacji nazwa UNIX zastrzeżona dla AT&T producenci (systemy na bazie systemu V): AT&T AT&T Unix Sun Microsystems Sun OS IBM AIX DEC - Ultrix Hewlett-Packard HP-UX Microsoft Xenix próby standaryzacji: system V (AT&T) r. 1990 system V wydanie 4 połączenie dwóch głównych linii rozwojowych (system V i BSD) oraz cech systemów innych producentów IEEE standard POSIX dla uniksopodobnych systemów operacyjnych (też NT, Linux) X/Open Consortium (początkowo głównie producenci Unix-a) cel: opracowanie jednolitego interfejsu programisty i użytkownika dla wszystkich wersji systemu 8.4 2
System LINUX twórca: Linus Torvalds, fiński student tworzony i rozwijany przez tysiące ludzi na całym świecie połączonych interenetem pierwsza wersja (0.0.1) maj 1991, brak obsługi sieci, jeden system plików (Minix), niewiele sterowników urządzeń marzec 1994 wersja 1.0, sieć, urządzenia SCSI, nowy system plików ext2, lepszy podsystem pamięci wirtualnej, komuniakacja międzyprocesowa (IPC) marzec 1995 wersja 1.2, dalsze ulepszenia, emulacja DOS czerwiec 1996 wersja 2.0, m.in. warianty dla różnych procesorów (m.in. Alpha, Motorola 68000), możliwość pracy wieloprocesorowej, poprawa zarządzania plikami i pamięcią obecnie (2002r.) wersja 2.4 system niezwykle uniwersalny (wiele platform sprzętowych, urządzeń zewnętrznych, protokołów sieciowych, interfejsów użytkownika, systemów plików) źródła ogólnodostępne (licencja GNU) dystrybucje Linux-a: system gotowy do instalacji, prekompilowane moduły, programy uzytkowe itp.: dystrybucje niekomercyjne (Slackware, Debian) dystrybucje komercyjne (RedHat, Caldera, SuSe) 8.5 Cechy systemu Linux w pełni 32-bitowy wielodostępny i wielozadaniowy system z rodziny Unix, duża wydajność zgodny ze standardami Posix możliwość wykorzystania oprogramowania napisanego dla innych systemów uniksowych obsługa sieci (sterowniki większości kart sieciowych, dostępne protokoły sieciowe) graficzny interfejs użytkownika (system X11R6) wydanie 6 systemu X Window, dostępny także interfejs OSF/Motif (standardowy w systemach komercyjnych) rozwój systemu i aplikacji w ramach GNU kompletne środowisko programistyczne możliwość tworzenia programów dostępnych także w innych systemach uniksowych (wielość kompilatorów, edytorów i innych programów pomocniczych) coraz większa liczba aplikacji użytkowych (np.. oprogramowania biurowego, graficznego) dostępny za darmo! 8.6 3
Warstwy systemu UNIX najniższa warstwa: sprzęt jądro: zarządzanie pamięcią programy obsługi urządzeń (sterowniki) procesy jądra (m.in. proces szeregujący) biblioteki (dostęp do procedur bibiliotecznych), w tym biblioteki współdzielone (shared libraries) procedury wykorzystywane przez wiele programów (oszczędność pamięci) procesy użytkowników interpretery poleceń i graficzne interfejsy użytkowników 8.7 Wielodostęp w systemach UNIX pierwotnie: komputer centralny (mainframe) i końcówki terminali praca wielu użytkowników na jednym komputerze obecnie możliwość uruchamiania na pojedynczym komputerze terminali wirtualnych; w systemach z graficznym interfejsem użytkownika: możliwość uruchomienia wielu okien terminali jednocześnie podstawa wielodostępu: identyfikatory użytkowników (user ID) i ich hasła, procedura logowania (rejestrowania się), system praw dostępu i uprawnień, grupy użytkowników zawsze jeden użytkownik uprzywilejowany: administrator (nadzorca systemu, superuser), ID: root, nieograniczone prawa dostępu, pełen dostęp do plików, możliwość tworzenia, usuwania użytkowników, pełna kontrola nad systemem 8.8 4
Wielozadaniowość systemu Unix możliwość uruchamiania wielu procesów procesy w systemie pracujące równolegle : uruchomione programy użytkowników, programy zawsze działające w tle (demony) IPC interprocess communication komunikacja międzyprocesowa synchronizacja i wymiana danych między procesami priorytety procesów poziomy uprzejmości, nice levels; procesy o wyższych priorytetach mają częstszy dostęp do procesora zarządzanie procesami w dostępie do procesora planista, program szeregujący. scheduler początki UNIX-a bardziej istotny wielodostęp; obecnie (zwłaszcza na pojedynczych komputerach) wielozadaniowość 8.9 Moduły jądra (Linux) fragmenty systemu ładowane i usuwane na żądanie odzwierciedlenie tendencji do minimalizacji jądra wiele istotnych funkcji s.o. może być umieszczane w modułach: programy obsługi urządzeń, system plików, programy obsługi formatów plików wykonywanych zalety: oszczędność pamięci odporność na błędy (błąd modułu nie powoduje zawieszenia systemu, jedynie usunięcie modułu z pamięci) 8.10 5
Procesy procesy: zarządzane przez proces szeregujący procesy jądra: pełen dostęp do wszystkich zasobów komputera pracują w trybie jądra m.in. proces szeregujący procesy uzytkowników: zarządzane przez program szeregujący (planistę) mogą być przerwane przez system w dowolnym momencie mają wydzielone obszary pamięci próba dostępu do niedostępnego obszaru pamięci błąd segmentacji (segmentation fault) 8.11 Systemy plików struktura hierarchiczna (drzewiasta, grafowa) podstawowa struktura: i-węzeł atrybuty i dane pliku wiele systemów plików dla różnych wersji systemu wirtualny system plików (Linux) - możliwość dostępu do wielu różnych systemów plików (ffs, fat, minix, ext, ext2, proc) każdy użytkownik: katalog domowy dostęp do plików: ścieżki dostępu (bezwzględne i względne) jeden logiczny system plików (brak woluminów) fizyczne systemy plików są dołączane: montowane (dotyczy też napędów dyskietek, dysków optycznych itp.) system praw dostępu do plików dowiązania twarde (wpis katalogowy) i symboliczne (ścieżka dostępu) 8.12 6
Odwzorowywanie systemu plików na dyski Główny system plików (root) jest zawsze dostępny Inne systemy plików mogą być montowane (mounted) integrowane ze struktura katalogową systemu głównego Struktura katalogowa jest podzielona na systemy plików odwzorowywane następnie na urządzenia logiczne partycje urządzenia fizycznego Na zamontowanie wskazuje bit w i-węź le. Jeśli jest ustawiony przeszukiwana jest tablica montaży 8.13 Podstawowe katalogi systemu UNIX bin - podstawowe pliki wykonywalne dev - pliki specjalne (dostęp do urządzeń zewnętrznych) etc - pliki konfiguracyjne systemu lib - bibilioteki mnt - montowane systemy plików proc - pliki specjalne (system plików proc) tmp - pliki tymczasowe usr - aplikacje var - programy systemowe, pliki tymczasowe kernel pliki jądra systemu (Linux -> vmlinuz) sbin - programy systemowe boot - pliki konfiguracyjne do uruchamiania systemu home katalogi użytkowników 8.14 7
Urządzenia zewnętrzne dostęp przez system plików pliki specjalne w katalogu dev, m.in.: dev/console - konsola systemu dev/hda - pierwszy dysk IDE (Linux) dev/hda1 - pierwsza partycja pierwszego dysku dev/sda - dysk SCSI dev/lp0 - drukarka dev/null - urządzenie puste (wyjście znika) dev/tty1 - konsola zaleta: np. wydruk wymaga skierowania wyjścia do pliku specjalnego /dev/lp1 dwa rodzaje urządzeń: znakowe (np. terminale) i blokowe (np. dyski) urządzenia identyfikowane przez główny (typ) i drugorzędny numer urządzenia (jeśli więcej urządzeń danego typu) 8.15 Demony programy pracujące w tle wykonują istotne zadania w systemie, czę ś ci systemu działające jako niezależne programy -> niewielki rozmiar jądra wykonywane współbieżnie przykładowe demony: demon drukowania (lpd) w regularnych odstępach czasu sprawdza katalog /var/spool, szukając nowych plików do wydrukowania (lpr), kierująca je do właściwych drukarek demon cron uruchamianie programów o zadanym czasie demon syslog demon protokołujacy zarządzanie danymi wyjściowymi i komunikatami błędów innych demonów 8.16 8
Komunikacja z użytkownikiem Interfejs użytkownika Powłoki pierwotny sposób komunikacji użytkownika z systemem tryb pracy z interpreterem komend różne rodzaje powłok służą do wywoływania poleceń zewnętrznych Graficzne interfejsy użytkownika GUI graphical user interface rozwinęły się wraz z rozpowszechnieniem się wydajnych graficznych stacji roboczych ważne wsparcie dla wieloprogramowości system X-Window 8.17 Powłoki powłoka sh (shell Bourne a) powłoka pierwszy interpreter poleceń systemu UNIX niski komfort pracy plik startowy.bashrc powłoka ksh (shell Korna) rozszerzenie powłoki sh spotykany w komercyjnych wersjach systemu powłoka csh (shell C) prosta funkcja historii aliasy poleceń składnia zbliżona do języka C plik startowe w katalogu domowym.login (podczas logowania) i.csrh (przy starcie powłoki) powłoki rozszerzone wygodniejsze wersje powłok standartowych bash (Bourne Again Shell) tcsh - rozszerzenie powłoki C 8.18 9
Polecenia trybu wiersza poleceń polecenia zewnętrzne odrębne programy, niezależne od rodzaju powłoki polecenia ls - wyświetla zawartość katalogu cp, mv, rm - kopiowanie, przesuwanie, usuwanie plików mkdir, rmdir tworzenie, usuwanie katalogów man wyświetlenie dokumentacji cat łączenie plików, wyświetlanie passwd zmiana hasła ps wyswietlenie procesów kill usuwanie procesów grep - wyszukiwanie echo - komunikat na ekranie znaki globalne: * - dowolna liczba znaków? - dowolny pojedynczy znak [abc ] jeden z wymienionych znaków [a-z] - zakres znaków [!abc..] znaki inne niż wymienione 8.19 Praca interakcyjna polecenia powłoki zewnętrzne, programu umieszczone w katalogach /bin i /usr/bin środowisko: przechowywanie istotnych parametrów poprzez zmienne (set): ścieżek dostępu, znaku zachęty, identyfikatorów urządzeń, itp.; plik.profile przeadresowywanie we i wy: kanały we/wy standartowo wejście (stdin) klawiatura, wyjscie (stdout) monitor kanał błędów stderr (miejsce wyprowadzania informacji o błędach) przeadresowanie we operator < ; wy operator > przetwarzanie potokowe kieruje wyjście z programu na wejście innego operator np. ls wc - zlicza wiersze i znaki (liczba plików w bieżącym kat.) tworzenie aliasów zastępują dłuższe komendy, definiowane przez uzytkownika np. alias k= ls l instrukcje sterujące: if, case, for, while wyszukiwanie instrukcja grep wzorce wyszukiwania, metaznaki:. * +? ^ $ [ ] \ ( ) 8.20 10
System X-window okienkowy interfejs użytkownika systemy UNIX początki projekt Athena w MIT X consortium rozwój i standaryzacja GUI dla systemu UNIX 1987 wersja X11 standard standard otwarty, niezależny od polityk producentów architektura klient-serwer: Xserwer - zarządzanie sprzętem lokalnym: monitor, klawiatura, mysz; interfejs miedzy użytkownikami, a programami użytkowymi (klientami); jeden serwer na stacji roboczej Xklient programy użytkowe X kilient i X serwer mogą działać na jednej maszynie lub na róznych (np. serwer stacja graficzna, klient silny mainframe) X protokół jedyne połączenie między klientem a serwerem (przezroczystoś ć sieciowa) podstawa biblioteka graficzna xlib Linux XFree86 8.21 Podstawowe aplikacje edytory: vi joe emacs xedit poczta elektroniczna: mail pine WWW netscape archiwizowanie: gzip tar 8.22 11