System operacyjny to program, który pośredniczy między użytkownikiem a sprzętem komputerowym
Zadania systemu operacyjnego:
Ukrywa szczegóły sprzętowe systemu komputerowego poprzez tworzenie abstrakcji (maszyn wirtualnych).
Przykłady:
Zarządza zasobami:
Dostarcza przyjazny interfejs: wygoda użycia (ustawianie przełączników, karty perforowane, taśmy perforowane, terminale graficzne z myszką i klawiaturą)
Rysunek: Warstwy systemu komputerowego (źródło: Stallings, Operating Systems)
Powstał w 1969; autorzy: Ken Thompson, Denis Ritchie z Bell Laboratories, maszyna: PDP-7; posiadał wiele cech innego systemu operacyjnego (MULTICS)
1973: przepisano UNIX w C (język zaprojektowany specjalnie do tego celu)
1974: przedstawiony na ACM Symposium on Operating Systems oraz w CACM, szybko zyskuje popularność
1979: powstaje UNIX Version 7, od którego pochodzą główne współczesne wersje (SVR4, AIX, SunOS, Solaris, Ultrix, Mach, OSF1, 4.4BSD)
Rysunek: Historia systemu UNIX - skrócona (źródło: Stallings, Operating Systems)
Linus Torvalds, Finlandia; społeczność internetowa; ogólnodostępne źródła (licencja GNU, Free Software Foundation); numeracja wersji jądra: eksperymentalne - 1.1, 1.3, ...; stabilne - 1.2, 2.0, 2.0.36, 2.2, ...
Maj 1991, wersja 0.01: brak wsparcia dla sieci, ograniczona liczba programów obsługi urządzeń, jeden system plików (Minix), procesy z chronionymi przestrzeniami adresowymi
Marzec 1994, wersja 1.0: wsparcie dla sieci (protokoły TCP/IP, gniazda), programy obsługi urządzeń dla dysków SCSI, nowy lepszy system plików, lepszy podsystem pamięci wirtualnej (stronicowanie na pliki wymiany, pliki odwzorowane do pamięci - tylko do czytania), IPC (semafory, kolejki komunikatów, pamięć dzielona), proste wsparcie dla dynamicznie ładowanych modułów jądra
Marzec 1995, wersja 1.2: szersze wsparcie dla sprzętu (m.in. dla szyny PCI), możliwość emulacji DOSu, wsparcie dla protokołu IPX, IP ze ścianami ognia, częściowe wsparcie dla innych procesorów
Czerwiec 1996, wersja 2.0: wsparcie dla wielu architektur (m.in. 64 bitowa wersja dla procesora Alpha, Motorola 68000, Sparc), wsparcie dla wieloprocesorowości, lepsze zarządzanie pamięcią i plikami, lepsza implementacja stosu TCP/IP, nowe protokoły sieciowe, wewnętrzne wątki jądra, moduły jądra ładowane na żądanie, klasa procesów czasu rzeczywistego (zgodność ze standardem POSIX)
1999, wersja 2.2
Styczeń 2001, wersja 2.4.0
Grudzień 2003, wersja 2.6.0 (ostatnia stabilna wersja 2.6.26, my będziemy używać 2.6.17)
System wielodostępny (z podziałem czasu) i wielozadaniowy
System wieloprocesowy, dostępne proste mechanizmy do tworzenia hierarchii procesów
Dostępny na wiele architektur
Posiada prosty standardowy interfejs użytkownika, który można łatwo podmieniać (shell -> interpretator poleceń)
Udostępnia systemy (!) plików o wielopoziomowej strukturze drzewiastej
Pliki są widziane jako ciągi bajtów (łatwość pisania filtrów)
Napisany prawie w całości w języku wysokiego poziomu
Ładowanie programów na żądanie (fork z kopiowaniem przy zapisie)
Pamięć wirtualna ze stronicowaniem (w starszych wersjach UNIX-a - wymiana)
Dynamiczna pamięć podręczna dla dysku twardego
Współdzielone biblioteki, ładowane do pamięci dynamicznie (jeden kod używany równocześnie przez wiele procesów)
Zgodność z normą POSIX 1003.1
Różne formaty plików wykonywalnych
Zbiór gotowych do instalacji, prekompilowanych pakietów; narzędzia do instalacji i deinstalacji pakietów (RPM: Red Hat Package Manager); jądro, ale także wiele programów usługowych; narzędzia do zarządzania systemami plików, tworzenia i obsługi kont użytkowników, zarządzania siecią itp.
W rozwoju SO dominuje tendencja do minimalizacji jądra. W przypadku Linuksa wyrazem tej tendencji są moduły - osobno kompilowane, ładowane do pamięci na żądanie i usuwane, gdy przestają być potrzebne
Co może być modułem: program obsługi urządzeń, system plików, program obsługi formatu plików wykonywalnych
Zalety modułów: oszczędność pamięci (zajmuje pamięć tylko wtedy, gdy jest potrzebny), błąd w module nie powoduje zawieszenia systemu, a jedynie usunięcie modułu z pamięci (ułatwia to testowanie nowych rozwiązań), można używać kolidujących ze sobą sterowników bez potrzeby restartowania systemu itd.
Janina Mincer-Daszkiewicz |