SOE - Systemy Operacyjne Wykład 2 Przegląd współczesnych systemów operacyjnych dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW
Wstęp Cechy współczesnych systemów operacyjnych wielodostęp wielozadaniowość wielowątkowość wieloprzetwarzanie symetryczne SMP uruchamianie zadań w łagodnym czasie rzeczywistym pamięć wirtualna wirtualny system plików VFS obsługa różnych typów rzeczywistych systemów plików obsługa różnych protokołów sieciowych implementacje na różne platformy sprzętowe 32-bitowe i 64-bitowe budowa modularna jądra
System UNIX Jeden z najstarszych systemów operacyjnych Implementacje dla wielu platform sprzętowych komputery 16-, 32- i 64-bitowe komputery osobiste, stacje robocze, serwery wieloprocesorowe, superkomputery
Rys historyczny Początki w AT&T UNIX na PDP-7 (1969) Ken Thompson i Dennis Ritchie, Bell Laboratories, AT&T UNIX na PDP-11 (1970) UNIX Edycja 1 (1971) UNIX Edycja 3 (1973) napisany od nowa w języku C UNIX Edycja 6 (1976) komputer Interdata UNIX Edycja 7 (1978) PDP-11 i Interdata 8/32 UNIX 32V (1978) pierwsza implementacja na komputer 32-bitowy VAX-11
UNIX System V Dystrybucje wewnętrzne w AT&T UNIX Edycja 1 - Edycja 10 Dystrybucje zewnętrzne w AT&T UNIX System III (1982) UNIX System V (1983) UNIX System V Wersja 2 -SVR2 (1984) UNIX System V Wersja 3 -SVR3 (1987) UNIX System V Wersja 4 -SVR4 (1989) UNIX System V Wersja 4.2/ES/MP -SVR 4.2/ES/MP
UNIX BSD UNIX udostępniony uniwersytetom Uniwersytet Kalifornijski w Berkeley wsparcie finansowe DARPA (Defense Advanced Research Projects Agency) UNIX BSD (Berkeley Software Distribution) 1 BSD (1978) -oparta na UNIX Wersja 6 2 BSD (1978) 3 BSD (1979) 4 BSD (1980) 4.x BSD 4.4 BSD (1993) -oparta na UNIX 32V
UNIX BSD c.d. Wkład w rozwój systemu UNIX pamięć wirtualna protokoły TCP/IP system plików FFS (Fast File System) gniazda BSD interpreter poleceń C-shell
Standardy SVID (System V Interface Definition) 4.x BSD POSIX (Portable Operating System Interface) IEEE, ISO IEEE Std 1003.1, POSIX 1003.1, POSIX.1 interfejsy programowania i narzędzi systemowych dla systemu UNIX POSIX.1-1988, POSIX.1-1990, POSIX.1-1996, POSIX.1-2001, POSIX.1-2008 XPG (X/Open Portability Guide) X/Open XPG3, XPG4 SUS (Single UNIX Specification) Open Group SUS1, SUS2, SUS3 (POSIX.1-2001), SUS4 (POSIX.1-2008)
Wersje komercyjne Solaris (Sun OS) AIX HP-UX ULTRIX, OSF/1, Digital UNIX A/UX, MacOS X SCO UNIX, UnixWare UNICOS -Sun Microsystems -IBM -Hewlett-Packard -DEC -Apple -SCO -Cray
Struktura systemu UNIX Procesy Interfejs funkcji systemowych Jądro Sprzęt
Tradycyjne jądro monolityczne Zarządzanie pamięcią Podręczna pamięć buforowa Zarządzanie plikami Sprzęt Zarządzanie procesami Programy obsługi urządzeń Zarządzanie urządzeniami we-wy
Nowoczesne jądro modularne moduł pamięci wirtualnej pliki wykonywalne obsługa urządzeń mechanizmy wspólne moduł szeregowania strumienie (STREAMS) interfejs VFS
Działanie systemu Realizacja funkcji systemowych wywołanych przez procesy jądro realizuje w imieniu procesu wywołującego Obsługa przerwań sprzętowych od urządzeń jądro obsługuje jako zdarzenia globalne, niezwiązane z żadnym procesem Obsługa pułapek (wyjątków) jądro obsługuje w imieniu procesu generującego Wykonywanie zadań dotyczących całego systemu, bezpośrednio przez jądro (szeregowanie procesów) przez procesy systemowe (proces wymiany, demon stronicowania)
System Linux Darmowy system operacyjny pierwszą wersję stworzył Linus Torvalds (1991) licencja GPL (General Public License) dzieło setek programistów z całego świata Związki z systemem UNIX kod jądra niezależny od kodu UNIX-a interfejs programowania i narzędzi systemowych zgodny ze standardem POSIX 1003.1 ściśle związany z projektem GNU Implementacje dla kilku platform sprzętowych Intel i AMD, Sun Sparc, DEC Alpha, Motorola, PowerPC, MIPS
Jądro systemu Linux Struktura jądra jądro podstawowe przechowywane stale w pamięci operacyjnej moduły jądra ładowane i dołączane dynamicznie w pamięci
Konwencja numeracji kolejnych wersji jądra x.y.z x y z -numer wersji -numer podwersji (stabilne -parzyste, eksperymentalne -nieparzyste) -numer zbioru poprawek wprowadzonej do danej podwersji 0.02 -pierwsza wersja Linusa Torvaldsa (1991) 1.0 -Linus Torvalds (1994) 2.6.39, 3.0.4 -ostatnie stabilne wersje jądra
Dystrybucje systemu Linux Dystrybucja zawiera jądro systemu zestaw bibliotek zestaw programów systemowych program instalacyjny dokumentację w formie elektronicznej Popularne dystrybucje Red Hat Fedora CentOS Debian Slackware Caldera LinuxWare Mandrake/Mandriva Knoppix
System Mac OS 1984 - pierwsza wersja systemu Mac OS komputery Macintosh firmy Apple system jednostanowiskowy pierwszy graficzny interfejs użytkownika Mac OS 1.x - Mac OS 9.x Mac OS X oparty na jądrze systemu UNIX wielodostęp, wielozadaniowość, wieloprzetwarzanie symetryczne
Struktura systemu Mac OS X
Jądro systemu Mac OS X Darwin otwarta licencja (Open Source) pełny kod jądra środowisko BSD
Składowe jądra Jądro systemu Mach 3.0 wywłaszczające szeregowanie procesów wielowątkowość pamięć wirtualna przetwarzanie w czasie rzeczywistym Jądro systemu BSD 5 model procesu polityka ochrony wielowątkowość (wątki POSIX) komunikacja sieciowa (gniazda BSD) Programy obsługi urządzeń Wirtualny system plików Protokoły sieciowe
Środowiska programowe (API) Classic -oryginalne środowisko starszej wersji systemu Mac OS Carbon -adaptacja środowiska Mac OS 9 zoptymalizowana dla Mac OS X Cocoa Java BSD AppleScript -nowe, zorientowane obiektowo środowisko systemu Mac OS X - środowisko programów w języku Java - środowisko systemu BSD z tekstowym interpreterem poleceń oraz X11 - środowisko do tworzenia skryptów WebObjects - środowisko do tworzenia aplikacji sieciowych
System Windows MS-DOS DOS 1.0 (1981) DOS 2.0 (1983) -dla IBM PC XT DOS 3.0 (1984) -dla IBM PC AT Windows (1985) Windows 3.x -3.0 (1990), 3.1 (1993) Windows 95 Windows 98 Windows Me
System Windows Windows NT (1993) Windows NT 3.1 (interfejs graficzny Windows 3.1) Windows NT 4.0 (interfejs graficzny Windows 95) Windows 2000 (Windows NT 5.0) Windows XP (Windows NT 5.1) Windows Server 2003 (Windows NT 5.2) Windows XP Professional x64 Windows Vista (Windows NT 6.0) Windows Server 2008 (Windows NT 6.0) Windows 7 (Windows NT 6.1) Windows Server 2008 R2 (Windows NT 6.1)
Struktura systemu Windows XP podsystem bezpieczeństwa aplikacje OS/2 aplikacje Win16 aplikacje Win32 aplikacje MSDOS aplikacje POSIX podsystem bezpieczeństwa podsystem OS/2 podsystem Win16 podsystem MSDOS podsystem POSIX tryb użytkownika podsystem Win32 tryb jądra zarządca wejścia-wyjścia system plików pamięć podręczna sterowniki urządzeń zarządca obiektów monitor bezpieczeństwa odwołań Egzekutor zarządca procesów mikrojądro zarządca plug and play warstwa abstrakcji sprzętu HAL wywołania procedur lokalnych zarządca pamięci wirtualnej zarządca okien sterowniki urządzeń graficznych sprzęt
Mikrojądro Zadania szeregowanie wątków obsługa przerwań i wyjątków niskopoziomowa synchronizacja Jądro zorientowane obiektowo - 2 zbiory obiektów obiekty ekspedytora - zdarzenia, mutexy, semafory, wątki, czasomierze (sterują szeregowaniem i synchronizacją) obiekty sterujące - przerwania, asynchroniczne wywołania procedur, procesy, profile