Spis treści Spis treści 1 Sprawy organizacyjne 1 2 Wprowadzenie 2 2.1 Co to jest System Operacyjny..................................... 2 2.2 Przykłady systemów operacyjnych.................................... 2 3 Historia Systemów Operacyjnych 4 3.1 Historia mechanizacji obliczeń...................................... 4 3.2 Historia Uniksa.............................................. 6 3.3 Linux................................................... 10 4 Systemy operacyjne 11 4.1 Cele i funkcje systemów opracyjnych.................................. 11 4.2 Typy systemów operacyjnych....................................... 12 1 Sprawy organizacyjne Prowadzacy i zasady zaliczenia Prowadzący: mgr inż. Wojciech Penar Kontakt: wojciech.penar@gmail.com Zaliczenie: Laboratorium laboratorium: aktywność + obecność + kolokwium? wykład: zaliczenie laboratorium + egzamin Instalacja systemu Linux Podstawy pracy w środowisku Unix/Linux Powłoka systemowa (sh) Oprogramowanie narzędziowe: find grep awk... Podstawy pisania programów współbieżnych: fork() semafory... 1
Rysunek 1: System operacyjny a system komputerowy 2 Wprowadzenie 2.1 Co to jest System Operacyjny Motto Wszystko, co można wynaleźć już wynaleziono 1899 Urząd Patentowy USA Potrzeby światowego rynku są nie większe niż 5 komputerów. 1943 Thomas Watson, założyciel IBM Definicja systemu operacyjnego 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 wygodny i wydajny sposób. Lokalizacja w systemie komputerowym (A. Silberschatz) 2.2 Przykłady systemów operacyjnych Rodzina systemów MS Windows Początkowo nakładka na MS DOS (do wersji 3.11) Linia systemów domowych (Windows) 2
Windows 95 Windows 98, Windows 98 OSR2 Windows ME Linia systemów profesjonalnych (Windows NT) Windows NT Windows 2000 Windows XP Windows 2003 Server Windows Vista Windows 2008 Server Windows 7 Rodzina systemów UNIX i pochodnych Unix i pochodne - ponad 200 GNU Unix Solaris HP-UX *BSD FreeBSD OpenBSD NetBSD Xenix GNU/Linux GNU/Hurd Rysunek 2: Logotypy systemów operacyjnych: Demon BSD, GNU, Pingwin - maskotka Linuksa 3
Inne MacOS QNX DOS BeOS CP/M Flex OS/2 3 Historia Systemów Operacyjnych 3.1 Historia mechanizacji obliczeń Liczydła Gdy palców brakło... 2000 p.n.e. Abak 500 p.n.e. Liczydło 1617 Pałeczki Nepera (Rysunek 3) 1632 Suwak Logarytmiczny (William Oughtred) (Rysunek 4) Rysunek 3: Pałeczki Nepera Maszyny mechaniczne A jednak się kręci... Mechanizacja obliczeń: 1623 Zegar Liczacy Wilhelma Schickarda (Rys. 5) 1641 Pascalina Blaise Pascala (Rys. 6) 1822 Charles Thomas de Colmar masowa produkcja 4
Rysunek 4: Suwak logarytmiczny 1840 Maszyna Analityczna Charles Babbage 1938 Bomba kryptologiczna Automatyzacja? Pozytywka, kurant 1725 Maszyna tkacka Basile Bouchona 1800 Maszyna tkacka Josepha-Marie Jacquarda Rysunek 5: Rekonstrukcja Zegara liczącego W. Schickarda Maszyny elektryczne Przekaźniki w służbie informatyki... 1937 Alan Turing Maszyna TuringaPodstawa koncepcji współczesnych komputerów 1936 Konrad Zuse pomysł adresowania pamięci i pamiętania programu 1938-1941 Konrad Zuse - Komputery elektromechaniczne V1, V2, V3 (przemianowane na Z1, Z2 i Z3 Rys. 7) 22 bitowe liczby zmiennoprzecinkowe 2600 przekaźników 5
Rysunek 6: Pascalina Komputery I generacji 1904 J. Fleming - Dioda 1906 Lee de Forest - Trioda 1918 Eccles, Jordan - przerzutnik 1939 John Athanasoff ABC pierwszy komputer elektroniczny 240 lamp Pamięć dynamiczna 1600 kondensatorów Częstotliwość pracy 60Hz 1943 Colossus II 2500lamp 1945 Eniac (Rys. 8, 9) 18800 lamp 30 ton wagi 140kW mocy 5000 dodawań na sekundę = 0,005 MIPS MTBF 0,5h(!) Generacje komputerów 3.2 Historia Uniksa Prehistoria Pierwsze maszyny liczące czysty sprzęt I Generacja 1951-1960 Lampy elektronowe II Generacja 1955-1965 Tranzystory III Generacja 1964-1975 Układy scalone IV Generacja 1974 -? Układy VLSI Do lat 50-tych rolę systemu operacyjnego pełni operator Jeden użytkownik Jeden program Program zadawany z użyciem kabli połączeniowych i przełączników 6
Rysunek 7: Zuse Z3 w Deutschen Museum w Monachium Starożytność 1966 Bell Labs (AT&T), MIT oraz GE rozpoczynają prace nad Multicsem (projekt porzucony w 1969r) 1969 Pierwsza wersja systemu Unix (AT&T) 1971 port Uniksa na nowy komputer PDP-11 1972 Unix Second Edition pojawia się potok (ang. pipe) PDP-11 Czasy nowożytne 1973 Unix Fourth Edition pierwszy system operacyjny napisany w C 1975 Unix Sixth Edition (Wersja Szósta) rozprowadzana nieodpłatnie w środowisku akademickim 1976 Lions Book najbardziej zakazana książka informatyczna pełny kod 6V z komentarzem 1977 1BSD pierwsze rozszerzenia Uniksa opublikowane przez Uniwersytet Kalifornijski (Berkley, UCB) 1979 Unix 7th Edition the last true Unix 1983 System V pierwsza wersja komercyjna Uniksa AT&T 1983 zamknięcie źródeł przez AT&T projekt GNU Narodziny Free Software Foundation Unix powoli przestaje być zabawką rozwijaną w ośrodkach akademickich, stając się produktem komercyjnym. Równolegle wokół projektu GNU zaczyna tworzyć się społeczność otwartego oprograwonia (Open Source). 7
Rysunek 8: Pokój operacyjny komputera ENIAC Czasy nowożytne różnorodność i standaryzacja 1980-1990 Każdy chce mieć swojego Uniksa: SCO Xenix, SGI IRIX, HP-UX, IBM AIX, NeXTStep, Sun OS... 1988-1989 Publikacja standardu POSIX.1 Powstaje konsorcjum Unix International i OSF SVR4 unifikacja System V, BSD i Xeniksa 1991 Linus Torvalds publikuje jądro systemu operacyjnego własnego autorstwa Linux 0.01 1993 Single Unix Specification Komercjalizacja Unixa wymusza pewną standaryzację, tak, by zapewnić przenośność oprogramowania (na poziomie kodu źródłowego) - zunifikowane API. System GNU ma wszystkie składniki poza jądrem. Rozwój jadra Linux pozwala na wykorzystanie go w tym systemie, co pociąga za sobą zintensyfikowanie rozwoju zarówno jądra ( Linuksa ) jak i systemu ( GNU ). Mimo to R. Stallman nie uznaje go za jądro systemu GNU jest nim Hurd. W sekcji 3.3 opisano rozróżnienie określeń Linux i GNU/Linux. Czasy nowożytne 1992 Novell wykupuje prawa do Uniksa od AT&T 1993-1994 Pierwsze poważne wstrząsy Wydanie 4.4BSD AT&T oraz Novell usiłują ukrócić darmowe udostępnianie kodu źródłowego BSD 8
Rysunek 9: Poszukiwanie spalonej lampy elektronowej wydane zostaje 4.4BSD-lite; UCB porzuca rozwój BSD powstaje NetBSD i FreeBSD Linux 1.0 powstają firmy RedHat i Caldera 1995 Novell sprzedaje SCO prawa do UnixWare Czasy współczesne 1996 The Open Group 1997 Single Unix Specification wersja 2 2000 Caldera przejmuje SCO 1997 Single Unix Specification wersja 3 2002 Udostępnienie rozwojowej gałęzi Uniksa przez SCO 2003 SCO wytacza proces firmie IBM, grozi dystrybutorom Linuksa... 2007 SCO ogłasza bankructwo... 9
Rysunek 10: Dennis Ritchie i Ken Thompson przy terminalach PDP-11 Dziś Istnieje ponad 200 różnych Uniksów Wiodące wersje otwarte - FreeBSD, NetBSD i OpenBSD Komercyjne: Solaris, HP-UX, AIX Linux klon Uniksa Wiele urządzeń wbudowanych opiera się na Uniksie lub Linuksie 3.3 Linux Historia 1991 Linus Torvalds publikuje zaczątek jądra 1993 Pierwsze dystrybucje Slackware i Debian 1994 Linux 1.0 RedHat 1995 Linux 1.2 1996 Linux 2.0 1999 Linux 2.2 2001 Linux 2.4 2003 Linux 2.6 2011 Linux 3.0 10
Garść pojęć Linux Jądro systemu operacyjnego GNU/Linux System operacyjny GNU z jądrem Linux GNU/Hurd System operacyjny GNU z jądrem Hurd Dystrybucja odmiana systemu GNU/Linux Debian Ubuntu Knoppix Slackware PLD Gentoo Red Hat Fedora CentOS Mandriva Suse Aurox Potoczne stwierdzenie Zainstalowałem sobie Linuksa oznacza, że zainstalowany został system GNU z jądrem Linux GNU/Linux. Jednocześnie Ubuntu, Debian i RedHat są różnymi dystrybucjami tego samego systemu. Równoległe wydania dystrybucji mogą się różnić doborem dostępnego oprogramowania i jego wersjami. Także inne systemy pozwalają na zmianę jądra np. wykorzystywane w przemyśle wersje Windows NT często mają zainstalowane jądro czasu rzeczywistego. 4 Systemy operacyjne 4.1 Cele i funkcje systemów opracyjnych Definicja systemu operacyjnego 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 wygodny i wydajny sposób. Definicja systemu operacyjnego (A. Silberschatz) System operacyjny jest zbiorem ręcznych i automatycznych procedur, które pozwalają grupie osób na efektywne współdzielenie urządzeń maszyny cyfrowej (Per Brinch Hansen) 11
Definicja systemu operacyjnego System operacyjny jest warstwą oprogramowania operującą bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania. Cele realizowane przez system operacyjny Zapewnienie wygody użytkowania uruchamianie programów użytkownika operacje na systemie plików Zapewnienie wydajnej eksploatacji systemu zarządzanie wykorzystaniem zasobów sterowanie wykonaniem programów użytkownika (Andrew Tanenbaum) Za chwilę przekonamy się, że w różnych systemach różnie rozkłada się akcent między wygodnie i wydajnie. Typowy system operacyjny do stosowania na komputerze w domu czy w biurze ma być przyjazny dla użytkownika i cieszyć oko (GUI, efekty pulpitu... ). Typowy system serwerowy będzie pozbawiony GUI (aczkolwiek mogą istnieć graficzne narzędzia do administracji nim), aby w pełni produktywnie wykorzystać zasoby pamięć oraz czas procesora. 4.2 Typy systemów operacyjnych Systematyka systemów operacyjnych Systemy komputerów głównych Systemy wsadowe Systemy wieloprogramowe Systemy z podziałem czasu Systemy biurkowe Systemy wieloprocesorowe Wieloprzetwarzanie symetryczne (SMP) Wieloprzetwarzanie asymetryczne Systemy rozproszone klient-serwer peer-to-peer Systemy zgrupowane (klastrowe) Systemy czasu rzeczywistego Systemy wbudowane (kieszonkowe) 12
Systemy komputerów głównych Komputery główne mainframe Pierwsze systemy komputerowe wykorzystywane komercyjnie składały się z szeregu szaf (ang. frame). Rama główna mieściła CPU. Dziś termin ten bywa odnoszony do systemów komputerowych charakteryzujących się stosunkowo niewielką mocą obliczeniową i bardzo dużymi przepustowościami. Pierwotnie programowane z użyciem kart lub taśm perforowanych Pierwotnie brak interakcji z użytkownikiem wyjście w postaci wydruku, kart lub taśm perforowanych. Systemy Wsadowe Historycznie najstarsze. Użytkownik dostarczał operatorowi program, po pewnym czasie odbierał wyniki. Operator grupował programy formując wsad, a następnie uruchamiał tak przygotowany zestaw zadań. Zadania były realizowane sekwencyjnie po zakończeniu jednego zadania, system automatycznie przechodził do następnego. Po wykonaniu zadań wyniki były udostępniane użytkownikom. Termin praca wsadowa przetrwał do dziś skrypty powoki, pliki *.bat, zautomatyzowane przetwarzanie danych. Systemy Wsadowe Z punktu widzenia użytkownika: 1. Przygotowanie programu (na papierze). 2. Przygotowanie kart perforowanych lub taśm papierowych (program, dane). 3. Dostarczenie kart z programem do ośrodka obliczeniowego. 4. Oczekiwanie na wyniki. 5. Jeśli programu nie udało się uruchomić poszukiwanie błędów. Systemy Wsadowe Istotne wady: Użytkownik był nieobecny w trakcie wykonywania programu: Brak możliwości interakcji z programem. Wynikiem był także raport o błędach. Ograniczone możliwości debugowania. W czasie trwania operacji we/wy jednostka centralna oczekiwała na ich zakończenie. Jednostki centralne wykonywały kilka tysięcy operacji na sekundę. Najszybsze czytniki kart perforowanych osiągały prędkość około 20 kart/sek. Marnowano czas drogiego urządzenia aspekt finansowy 13
Dygresja Debugowanie Słowa bug (ang. pluskwa, owad, robactwo) na określenie błędu/usterki pierwszy T. Edison już w 1878 roku. Do żargonu informatycznego weszło w 1947 roku, gdy przyczyną trudności w uruchomieniu komputera Harvard Mark II była ćma w jednym z przekaźników. Proces naprawy komputera został opisany jako debugging (ang. odrobaczanie, odpluskwianie) dziś termin ten oznacza poszukiwanie usterek w systemie informatycznym. Systemy Wieloprogramowe Podobnie jak w systemie wsadowym uruchamiana jest pula zadań. System operacyjny wczytuje pewien podzbiór zadań do pamięci operacyjnej i rozpoczyna realizację pierwszego z nich, aż do momentu zainicjowania operacji we/wy. W czasie trwania operacji we/wy system realizuje następne (gotowe do wykonania) zadanie z podzbioru. Po dotarciu do ostatniego zadania w podzbiorze system powraca do pierwszego (gotowego do dalszej realizacji). W miejsce zakończonych zadań ładowane są z pamięci masowej następne. Systemy Wieloprogramowe Rośnie złożoność systemu: wybór zadań do wykonania szeregowanie zadań wybór zadania do realizacji ochrona pamięci Pojawia się możliwość interakcji z użytkownikiem Nowy problem: dialog z użytkownikiem także jest operacją we/wy: Dobra maszynistka osiąga około 7 znaków/s w tym czasie system przechodzi do realizacji następnego zadania. Kiedy system podejmie zadanie przerwane zadanie? Kiedy w ogóle zadanie trafi do wykonania? Systemy Z Podziałem Czasu Udoskonalenie systemów wieloprogramowych: System automatycznie przełącza się między zadaniami na tyle szybko, by zapewnić sensowną interakcję z użytkownikami Jako akceptowalny uważa się czas reakcji rzędu 1s Wielozadaniowość Pojawia się pamięć wirtualna użytkownik (program) widzi pamięć jako spójny blok programista nie musi już zajmować się zarządzaniem pamięcią - robi to system operacyjny program może wykorzystywać więcej pamięci niż jest jej fizycznie w systemie (swap, przestrzeń wymiany) Dziś najpopularniejsza klasa systemów 14
Systemy Biurkowe Systemy operacyjne komputerów osobistych Pierwotnie pozbawione mechanizmów ochrony pamięci oraz ochrony systemu plików brak wielodostępności tylko jeden użytkownik brak wielozadaniowości uruchomiony jeden program mechanizmy ochrony były zbędne Pierwotnie tekstowy interfejs użytkownika Głównym zadaniem było załadowanie programu użytkownika Systemy Biurkowe Dziś Liczy się wygoda użytkowania: przyjazny interfejs użytkownika (GUI) szybki czas reakcji Wydajność nie jest priorytetem Dziś w większości systemy z podziałem czasu (wielozadaniowe) Często wielodostepne (Linux, niektóre wersje Windows) Coraz częściej wspierają architektury wieloprocesorowe Systemy Wieloprocesorowe Systemy ściśle powiązane wspólny zegar i szyna systemowa często wspólna pamięć i zasoby sprzętowe ścisła współpraca Zalety z posiadania większej ilości CPU: wzrost wydajności obniżenie kosztów skalowalność zwiększona niezawodność Powiązane z architekturą sprzętu wieloprzetwarzanie symetryczne wieloprzetwarzanie asymetryczne równoległe wykonywanie tych samych operacji 15
Wieloprzetwarzanie Symetryczne Wiele jednakowych procesorów Pierwotnie na każdym procesorze niezależna kopia systemu operacyjnego Dziś system operacyjny zarządza przydziałem zadań i dostępem do zasobów Najpopularniejsza grupa systemów wieloprocesorowych Dziś spotykane także w komputerach osobistych Wieloprzetwarzanie Asymetryczne Przesłanki dla przetwarzania asymetrycznego: architektura sprzętowa (procesory specjalizowane) architektura systemu operacyjnego Pierwotnie rozbudowane sterowniki urządzeń traktowano jako procesory specjalizowane Obecnie występowanie kontrolerów dysków twardych, klawiatury itp. nie jest uważane za wieloprzetwarzanie Obecnie rzadziej spotykane Ciekawostka SunOS 4 na komputerach Sun realizował przetwarzanie asymetryczne. SunOS 5 (Solaris 2) na tym samym sprzęcie był już symetryczny. Systemy Rozproszone Systemy luźno powiązane oddzielne komputery wymiana komunikacji poprzez sieć każdy uczestnik jest autonomiczny Architektura klient serwer serwer udostępnia usługi i pełni rolę nadrzędną klient zapewnia użytkownikowi interfejs do korzystania usług serwera np. serwery obliczeniowe, serwery plików Architektura peer-to-peer brak wyróżnionych węzłów środowiska obliczeniowe sieci P2P 16
Systemy Zgrupowane (Klastrowe) Systemy średnio powiązane oddzielne procesory, pamięć operacyjna, zegary współdzielone systemy plików Łączą zalety systemów wieloprocesorowych i rozproszonych odporność na awarię wysoka wydajność Wsparcie nadmiarowości (redundancji) Wymusiły rozwój nowych rozwiązań pamięci masowych SAN (Storage Area Networks) Systemy Czasu Rzeczywistego Ograniczenia na czas odpowiedzi lub wykonywania operacji twarde (rygorystyczne) czas nieprzekraczalny specjalizowane bardzo mocno uproszczone ściśle określone zależności czasowe ważny jest najgorszy możliwy przypadek głównie systemy przemysłowe np. sterownik ABS/ESP/silnika miękkie (łagodne) system stara się zdążyć ograniczenia na poziomie średnich czasów wykonania implementowane w większości popularnych SO np. systemy multimedialne Uwaga! Termin czas rzeczywisty nie oznacza natychmiastowości a jedynie determinizm! Systemy Wbudowane Najbardziej rozpowszechniona grupa telefony komórkowe PDA, tablety odtwarzacze DVD aktywne urządzenia sieciowe komputery sterujące pracą silnika, itp. Skromne zasoby mała pamięć operacyjna wolny procesor ograniczone możliwości komunikacyjne ograniczona pojemność baterii Silnie związane ze sprzętem W zastosowaniach przemysłowych często systemy czasu rzeczywistego 17