Systemy operacyjne część 1 Artur Gramacki Instytut Informatyki i Elektroniki Zalecana literatura 1. Abraham Silberschatz, Peter B. Galvin, Greg Gagne, Podstawy systemów operacyjnych, WNT Warszawa, 2005, ISBN 83-204- 2961-7 2. Kurt Wall, Linux programowanie w przykładach, MIKOM, 2000, ISBN 83-7279-082-5 3. W. Richard Stevens, Programowanie w środowisku systemu UNIC, WNT Warszawa, 2002, ISBN 83-204-2669-3 (seria: Klasyka informatyki) 4. Neil Matthew, Richard Stones, Linux programowanie, Wydawnictwo RM Warszawa, 1999, ISBN 83-7243-020-9 (pliki źródłowe: http://www.wrox.com) 5. Mark Mitchell, Jeffrey Oldham, Linux. Programowanie dla zaawansowanych, Wydawnictwo Rm Warszawa, 2002, ISBN 83-7243-217-1 6. dokumentacja systemowa man oraz info 7. no i oczywiście internet! 2 1
Plan wykładów Zalecana literatura Własne środowisko UNIX-owe Problem standaryzacji systemów z rodziny UNIX Struktura i klasyfikacja systemów operacyjnych Wywołania systemowe Obsługa terminala Niskopoziomowa praca z plikami i katalogami Procesy, Sygnały, Demony Komunikacja między procesami: potoki i kolejki FIFO Pamięć dzielona Semafory, kolejki komunikatów Programowanie gniazd i TCP/IP 3 Własne środowisko UNIX-owe Niezależna instalacja środowiska UNIX (najbezpieczniej najpierw zainstalować Windows, a potem dopiero UNIX mniejsze prawdopodobieństwo pogryzienia się systemów) LINUX FreeBSD inne UNIX boot-owalny z płyty CD/DVD KNOPPIX LiveCD inne Wirtualne środowisko komputera PC Virtual PC (http://www.microsoft.com/windows/virtualpc/default.mspx) MSDN Academic Alliance (http://www.weit.uz.zgora.pl/elms/index.php) VMware Player (http://www.vmware.com/) 4 2
Problem standaryzacji systemów UNIX ANSI American National Standards Institute instytucja niekomercyjna (nonprofit) ustalająca normy techniczne obowiązujące w USA ISO International Standard of Standardization sieć krajowych organizacji normalizacyjnych, obecnie należy do niej ok. 150 państw w Polsce: Polski Komitet Normalizacyjny w USA: ANSI wszyscy członkowie ISO są równi, w głosowaniu każdy dysponuje tylko jednym głosem Standardy języka C ANSI C Standard X3 159-1898 pewną modyfikacją tego pierwszego jest: ISO 9899:1990 język zgodny z normą ISO, określany jest nieformalnie C89 najnowsza wersja nosi nazwę ISO 9899:1999 nieformalna nazwa to C99 5 Problem standaryzacji systemów UNIX, c.d. ANSI C ma zapewnić przenośność programów w C między różnymi platformami operacyjnymi (nie tylko w ramach systemów UNIX) Definiuje składnię i semantyke języka oraz opisuje bibliotekę standardową Przykłady plików nagłówkowych C zdefiniowanych w normie: <ctype.h> - typy znakowe <stdio.h> - standardowa biblioteka wej-wyj <errno.h> - kody błędów <float.h> - stałe dotyczące liczb zmiennopozycyjnych <signal.h> - sygnały <stdlib.h> - różne funkcje pomocnicze <time.h> - data i czas <math.h> - stałe matematyczne <pwd.h> - plik haseł /etc/passwd... zwykle zlokalizowane w /usr/include 6 3
Problem standaryzacji systemów UNIX, c.d. Fragment z pliku <pwd.h> /* The passwd structure. */ struct passwd { char *pw_name; /* Username. */ char *pw_passwd; /* Password. */ uid_t pw_uid; /* User ID. */ gid_t pw_gid; /* Group ID. */ char *pw_gecos; /* Real name. */ char *pw_dir; /* Home directory. */ char *pw_shell; /* Shell program. */ }; Fragment z pliku <math.h> /* Some useful constants. */ # define M_E 2.7182818284590452354 /* e */ # define M_LOG2E 1.4426950408889634074 /* log_2 e */ # define M_LOG10E 0.43429448190325182765 /* log_10 e */ # define M_LN2 0.69314718055994530942 /* log_e 2 */ # define M_LN10 2.30258509299404568402 /* log_e 10 */ # define M_PI 3.14159265358979323846 /* pi */ Fragment z pliku <limits.h> # define CHAR_BIT 8 # define LONG_MAX 2147483647L # define UCHAR_MAX 255 7 Problem standaryzacji systemów UNIX, c.d. POSIX Portable Operating System Interface (przenośny interfejs do systemu operacyjnego) rozwijany przez organizację IEEE próba standaryzacji różnych odmian systemu UNIX w praktyce definiuje całą rodzinę standardów, np.: POSIX 1003.1 definiuje interfejs programistyczny (API) definiuje interfejs a nie jego implementację, nie czyni więc podziału na funkcje systemowe i biblioteczne POSIX 1003.2 definiuje właściwości powłoki (ang. shell) i jeszcze kilkanaście innych choć wywodzi się z systemów UNIX nie jest tylko do nich ograniczony (np. środowisko Cygwin dla Microsoft Windows umożliwia w tym systemie korzystanie z POSIX-owego interfejsu programistycznego) przykłady systemów zgodnych (lub prawie zgodnych) z POSIXem: QNX, Linux, FreeBSD normę trzeba kupić i nie jest ona podobno tania! 8 4
Elementy systemu komputerowego System operacyjny pośredniczy pomiędzy użytkownikiem a sprzętem, dostarczając wygodnego środowiska do wykonywania programów. Odseparowuje niejako użytkownika od sprzętu Dwa pojęcia systemu operacyjnego: funkcjonalny oraz marketingowy użytkownik 1 użytkownik 2 użytkownik 3 użytkownik n gcc asm vi mysql Programy systemowe i użytkowe System operacyjny Sprzęt komputerowy 9 Struktura systemu operacyjnego Programy systemowe oraz interpreter nie są formalnie częścią jądra, ale są bardzo z nim zintegrowane Interpreter może być częścią jądra albo stanowić jeden z programów systemowych (np. tak jest w UNIX-ach) Interpreter poleceń Programy systemowe System operacyjny Sprzęt komputerowy 10 5
Struktura systemów operacyjnych, c.d. Definicja System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób wygodny i wydajny [1] Zadania oraz składowe systemu operacyjnego zarządzanie procesami zarządzanie pamięcią operacyjną zarządzanie plikami zarządzanie systemem wejścia wyjścia zarządzanie pamięcią pomocnicza system ochrony, obsługa błędów interpreter poleceń 11 Zarządzanie procesami Definicja procesu: egzemplarz programu w trakcie wykonywania System operacyjny w ramach zarządzania procesami wykonuje następujące czynności: tworzy i usuwa procesy wstrzymuje i wznawia procesy dostarcza mechanizmów synchronizacji procesów dostarcza mechanizmów komunikacji procesów dostarcza mechanizmów obsługi zakleszczeń 12 6
Zarządzanie pamięcią operacyjną Aby możliwe było wykonanie programu należy go umieścić w pamięci operacyjnej. Nowoczesne systemy przechowują w pamięci wiele programów/procesów, w związku z tym wykonują następujące czynności: przydzielają i zwalniają bloki pamięci przechowują informacji o zajętych blokach pamięci oraz komu zostały przydzielone decydują o tym, jaki proces ma wykorzystać wolną przestrzeń 13 Zarządzanie plikami System operacyjny definiuje jednolity logiczny model przechowywanych informacji niezależny od fizycznych własności nośników danych i urządzeń Informacje są dzielone na logiczne bloki nazywane plikami, które zazwyczaj zorganizowane są w katalogach W ramach zarządzania plikami można wyróżnić: tworzenie i usuwanie plików i katalogów wykonywanie podstawowych operacji na plikach i katalogach (np. nadawanie atrybutów, czytanie, zapisywanie) odwzorowanie bloków pamięci pomocniczej w postaci plików składowanie plików na trwałych nośnikach 14 7
Zarządzanie systemem wejście wyjście Podsystem wejścia wyjścia składa się z: części zarządzającej pamięcią wykonującej buforowanie przechowywanie podręczne i spooling ogólnego interfejsu do modułów sterujących urządzeń modułów sterujących (programów obsługi, sterowników urządzenia) poszczególnych urządzeń 15 Zarządzanie pamięcią pomocniczą System komputerowy musi posiadać pamięć pomocniczą: pamięć operacyjna zazwyczaj nie jest w stanie pomieścić wszystkich danych i programów zawartość pamięci operacyjnej jest tracona przy zaniku zasilania W ramach zarządzania pamięcią pomocniczą (dyskową) system operacyjny wykonuje następujące czynności: zarządza wolną przestrzenią przydziela i zwalniania bloki pamięci planuje dostęp do dysku 16 8
System ochrony, obsługa błędów Jeżeli system komputerowy ma wielu użytkowników i umożliwia wykonywanie współbieżnie wielu procesów, to poszczególne procesy należy chroniąc przed wzajemnym oddziaływaniem System operacyjny powinien zagwarantować, że pliki, bloki pamięci, procesor oraz inne zasoby są użytkowane przez uprawnione do tego procesy Sytacje awaryjne (krytyczne) muszą być prawidłowo obsłużone przez system operacyjny 17 Interpreter poleceń Interpreter poleceń (ang. command interpreter) jest interfejsem miedzy użytkownikiem a systemem operacyjnym. Jego zadaniem jest pobieranie i wykonywanie poleceń użytkownika. Systemy operacyjne oferują różne powłoki Powłoki tekstowe Bourne shell (sh), Bourne-Again shell (bash), C shell (csh) w systemach Unixowych command.com w systemie DOS cmd w systemach Windows Powłoki graficzne KDE (Konqueror), GNOME (Nautilus) w systemach Unixowych Windows Explorer, Program Manager w Windows Macintosh Finder w Mac OS X 18 9
Klasyfikacja systemów operacyjnych Systemy wsadowe (ang. batch systems) komputer wykonuje w danym momencie jedną i tylko jedną czynność tak działały bardzo wczesne komputery (tzw. mainframe) Systemy z podziałem czasu (wielozadaniowe) Systemy dla jednego użytkownika (np. DOS) Systemy wielodostępne (np. Windows, UNIX) Systemy czasu rzeczywistego (ang. real-time) np. RTLinux Systemy sieciowe i rozproszone Systemy kieszonkowe (kompaktowe, ) np. do telefonów komórkowych (np. Synbian) duże ograniczenia na ilość dostępnych zasobów 19 10