Zbigniew S. Szewczak Podstawy Systemów Operacyjnych Wykład 1 Ewolucja systemów operacyjnych. Toruń, 2004
O czym będzie? Wstęp System komputerowy System operacyjny Systemy wsadowe Systemy z podziałem czasu Systemy operacyjne na PC Systemy równoległe Systemy rozproszone Systemy czasu rzeczywistego Przykłady systemów operacyjnych
Literatura A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych, wyd. III, WNT, 2000 (tł. 5th ed.) http://www.bell-labs.com/topic/books/os-book W. Stallings, Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajność, PWN, Warszawa, 2000 (tł. 4th ed.) http://william.stallings.com/
Literatura dodatkowa Per Brinch Hansen, Podstawy systemów operacyjnych, PWN, 1979 (klasyka) M. Bach, Budowa systemu operacyjnego Unix, WNT, 1995 A. Tannenbaum, Rozproszone systemy operacyjne, PWN, 1997 M. Beck,H. Bohme,M. Dziadzka,U. Kunitz,R. Magnus, D. Verworver, Linux Kernel. Jądro Linuxa, Mikom, 1999
Literatura dodatkowa U. Vahalia, Jądro systemu UNIX, WNT, Warszawa, 2001 D. P. Bovet & M. Cesati, Linux Kernel, Wydawnictwo RM, Warszawa, 2001 A. Tannenbaum, Modern Operating Systems, 2nd ed., Prentice Hall, 2001 http://www.cs.vu.nl/~ast/books/mos2/
Strony WWW http://www.computerhope.com/os.htm http://www.linux.org/ http://linuxvm.org/ http://www.pl.freebsd.org/ http://www.osweb.net/ http://tunes.org/review/oses.html http://www.freeos.com http://compnetworking.about.com/cs/networknos/ http://www.cs.arizona.edu/people/bridges/oses.htm http://www.serpentine.com/~bos/os-faq/
Inne zasoby grupy dyskusyjne (Usenet) comp.os.system comp.os.linux.development.system pl.comp.os.linux prezentacje https://plas.mat.uni.torun.pl/moodle
System komputerowy Sprzęt (ang. hardware) - zasoby o specyficznej architekturze oraz organizacji zarządzane przez system operacyjny System operacyjny - program, który nadzoruje i koordynuje dostęp programów do zasobów Programy użytkowe - realizują potrzeby użytkowników systemu komputerowego (kompilatory, bazy danych, gry,...) Użytkownicy - ludzie, maszyny, komputery..
Sieciowy system komputerowy Sieciowy system komputerowy jest częścią systemu komputerowego odpowiedzialną za komunikowanie się komputerów przez łącza sprzęt - medium transmisji danych, karta sieciowa, modem system operacyjny - implementacja protokołu (TCP/IP, NetBEUI, IPX/SPX ) w jądrze sieciowy podsystem operacyjny : NFS, SMB, NCP programy użytkowe - mount,przeglądarka WWW, telnet, ftp użytkownicy: zdalny komputer, osoba używająca ftp, itp.
Model systemu (13 warstwy) Model hierarchiczny (R. Brown &..., Computer, 1984) Warstwy dzielone (procesy, systemy zdalne..) 13: Powłoka (ang. shell) 12: Procesy użytkownika 11: Katalogi 10: Urządzenia zewnętrzne (drukarki) 9: System plików (pliki) 8: Komunikacja (potoki)
Model systemu (c.d.) Warstwy procesora (niepodzielne) 7: Pamięć wirtualna (segmenty, strony) 6: Lokalna pamięć zewnętrzna (bloki danych) 5: Procesy (kolejki procesów gotowych) Warstwy sprzętowe 4: Przerwania (programy obsługi przerwań) 3: Procedury 2: Instrukcje maszynowe (mikroprogramy) 1: Obwody elekroniczne (rejestry, szyny)
Co to jest system operacyjny? System jest pewnym zbiorem obiektów oraz realcji między tymi obiektami i między ich własnościami (Hall, Fagen) System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym Nie mam dobrej definicji systemu operacyjnego To nie to, że czegoś nie wiemy, gnębi nas, lecz to, że wiemy, iż coś nie jest tak (W. Rogers)
Zadania systemu operacyjnego Zdania systemu operacyjnego tworzenie środowiska do wykonywania programów powodowanie aby system komputerowy był wygodny w użyciu System operacyjny nadzoruje i koordynuje posługiwanie się sprzętem
System operacyjny - definicje Dystrybutor zasobów (ang. resource allocator) - przydziela zasoby poszczególnym zamawiającym (programom) Program sterujący (ang. control program) - nadzoruje wykonanie programów użytkowych oraz operacji wejścia/wyjścia, kontrola błędów Jądro systemu (ang. kernel, ang. nucleus) - program działający w komputerze nieustannie, często jest synonimem systemu operacyjnego
Wczesne systemy - Goła maszyna ( lata 50-te) Struktura wielkie maszyny obsługiwane z konsoli programista/użytkownik jako operator maszyny wejście z taśmy papierowej lub karty perforowanej cel systemu operacyjnego (monitora) : automatyczne przekazywanie sterowania następnemu zadaniu Wczesne oprogramowanie asemblery, kompilatory, programy ładujące i łączące, biblioteki modułów ładowalnych Bezpieczne Nieefektywne wykorzystanie drogich zasobów
Proste systemy wsadowe Wynajęty operator (bardzo ważna osoba!) do wczytywania zadań tzw. wsadu (ang. batch) Dodany czytnik kart perforowanych Redukcja czasu wykonania przez wsad o podobnych parametrach Automatyczne kolejkowanie zadań Rezydentny monitor (system) inicjowanie zadań, komendy operatorskie przekazywanie kontroli wykonywanym zadaniom (ang. job) przejęcie kontroli po zakończeniu zadania
Wygląd pamięci operacyjnej - prosty system wsadowy Monitor (system operacyjny) Obszar programów użytkownika
Język opisu zadań - JCL Problemy skąd monitor ma czerpać wiedzę o naturze zadania (np. asembler, Fortran) lub jaki program wykonać jak monitor ma rozróżniać zadania dane od programów Rozwiązanie język opisu zadań (Job Control Language)
Język opisu zadań - JCL (c.d.) Karty sterujące określają jak monitor ma funkcjonować //MYJOB JOB MSGLEVEL=(1,1), CLASS=A //STEP1 EXEC PGM=EDIT //OUT DD DSNAME=MYSET,DISP=OLD, // DCB=(LRECL=80, RECFM=FB) //SYSIN DD *...dane... /* //STEP2 EXEC SORTC
Język opisu zadań - JCL (c.d.) Składniki rezydentnego monitora interpreter JCL program inicjujący/kończący zadania obsługa we/wy, komendy operatora Problem: mała wydajność - we/wy i procesor nie mogą działać jednocześnie; powolny czytnik kart Rozwiązanie: praca pośrednia (ang. off-line operation) - wczytywanie zadań z taśmy i drukowanie off-line
Spooling Simultaneous Pheripheral Operation On-Line - umożliwia wykonywanie zadań w czasie operacji we/wy innych zadań wczytanie zadania z czytnika kart na dysk do kolejki zadań (ang. job queue) wyprowadzenie wydruku zakończonego zadania do kolejki na dysku (ang. print queue) a potem drukarkę Pula zadań (ang. job pool ) - zadania na dysku są wybierane do wykonania w taki sposób aby zwiększyć wykorzystanie procesora
Wieloprogramowane systemy wsadowe Wiele zadań jest przechowywanych w pamięci operacyjnej a procesor, w czasie oczekiwania jednego zadania na jakąś usługę np. operację wejścia/wyjścia lub zamontowanie taśmy jest przydzielany innemu zadaniu pierwszy przypadek gdy monitor decyduje za użytkowników a w zasadzie za operatora systemu (stąd możliwe wytłumaczenie nazwy system operacyjny) początek końca wszechwładzy operatora systemu komputerowego
Wielozadaniowość - wymagania systemu Wieloprogramowanie daje wielozadaniowość (ang. multitasking) Obsługa we/wy przez system Zarządzanie przydziałem pamięci (ang. memory management) Planowanie przydziału procesora (ang. CPU scheduling) - wybór zadania do wykonania Przydział urządzeń zewnętrznych (dyski, taśmy) (ang. I/O management)
Systemy z podziałem czasu - ang. Time-Sharing Systems Rozszerzenie wieloprogramowości (ang. multiprogramming) Procesor jest przydzielony jedynie zadaniom w pamięci operacyjnej i wykonuje na przemian wiele zadań, przy czym przełączenia następują tak często, że użytkownicy mogą współdziałać z programem podczas jego wykonania Jedno z zadań w pamięci: dialog z użytkownikiem (sesja)
Systemy z podziałem czasu - (c.d) Zadania usuwane z pamięci są zapisywane na dysk do zbioru wymiany (ang. swap) Bezpośrednia komunikacja użytkownika z systemem (ang. on-line) dzięki wielozadaniowości zadanie = sesja (ang. session) lub proces (ang. process) IBM OS/360 MVT/TSO - system interakcyjny Phoenix modyfikacja TSO realizowana w UMK
Wymiana - ang. swapping Problem: we/wy jest wolniejsze od procesora więc nawet wieloprogramowany system może powodować przestoje w pracy procesora Inne rozwiązania: zwiększenie pamięci drogie wzrasta apetyt wymiana
Co to jest wymiana? Zadanie zamiast przebywać bezczynnie w pamięci (z powodu niespełnialności żądań) jest zapamiętane (ang. swapped out) na dysku w zbiorze wymiany Zadanie (inne) zostaje wczytane (ang. swapped in ) ze zbioru wymiany do pamięci komputera i wykonywane Zadanie kończy się i jest usuwane z pamięci
Systemy operacyjne na PC Zmniejszenie cen sprzętu Komputer osobisty (ang. personal computer) - przeznaczony dla jednego użytkownika Urządzenia we/wy : klawiatura, myszka, monitory, małe drukarki Przenoszenie technologii wcześniej rozwiniętej dla dużych komputerów ( ang. mainframe) na stacje robocze (ang. workstations) systemy jednoprogramowane, jednostanowiskowe (MS- DOS, Macintosh)
Systemy równoległe Systemy równoległe (ang. parallel systems) - systemy z wieloma współpracującymi procesorami (ang. multiprocessor systems) Systemy ściśle powiązane (ang. tightly coupled) - procesory dzielą zegar, pamięć; komunikacja zwykle poprzez pamięć dzieloną Korzyści: zwiększona przepustowość (ang. throughput) zdolność do kontynuowania usług na poziomie proporcjonalnym do ilości ocalałych zasobów łagodna degradacja (ang. graceful degradation) systemy tolerujące awarie (ang. fault-tolerant)
Systemy równoległe (c.d.) Wieloprzetwarzanie symetryczne (ang. Symmetric MultiProcessing - SMP) każdy z procesorów wykonuje identyczną kopie systemu Wieloprzetwarzanie asymetryczne (ang. asymmetric multiprocessing) każdy procesor ma przypisane inne zadanie; procesor główny planuje i przydziela prace procesorom podporządkowanym procesor: IBM 4381 (VM SP/6) i procesor czołowy (ang. front-end ): IBM 3705 - węzeł sieci EARN/BITNET (PLTUMK1) w UMK, 1991
Wieloprzetwarzanie symetryczne CPU CPU CPU CPU Pamięć
Systemy rozproszone Rozproszone przetwarzanie za pomocą wielu procesorów zwanych węzłami (ang. nodes) Systemy luźno powiązane (ang. loosely coupled) lub rozproszone (ang. distributed systems) - każdy procesor ma własną pamięć lokalną; procesory komunikują się szybkim łaczem Powody: podział zasobów: zdalne drukowanie plików przyspieszenie obliczeń, dzielenie obciążeń (ang.load sharing) niezawodność, komunikacja: poczta (ang. e-mail)
Systemy rozproszone (c.d.) Sieciowe systemy operacyjne dzielenie plików (NFS, Samba, NetWare) protokół komunikacyjny (TCP/IP, NetBEUI, NCP) przetwarzanie niezależne od innych komputerów w sieci, duża autonomia Rozproszone systemy operacyjne mniejsza autonomia systemów (System Andrew) powstaje wrażenie jednego dużego systemu operacyjnego kontrolowanego poprzez sieć rozległą
Systemy czasu rzeczywistego Ang. Real-Time Systems - stosowane często do sterowania urządzeniami dedykowanymi do konkretnych zastosowań (proces produkcji) Ściśle zdefiniowane, stałe ograniczenia czasowe Rygorystyczny system czasu rzeczywistego (ang. hard real-time) tylko pamięć o krótkim czasie dostępu Łagodny system czasu rzeczywistego (ang. soft real-time) krytyczne zadanie do obsługi w czasie rzeczywistym ma najwyższy priorytet
Minisystemy systemy podręczne (ang. handheld systems) PDA (ang. personal digital assistants) palmtopy (PalmOS, Windows CE) telefony komórkowe (interpreter Javy) technologia bezprzewodowa (podczerwień, BlueTooth) 512KB-8MB pamięci, mały display, wolny procesor Inne sprzęt domowy (mikrofalówki, pralki,...) sprzęt elektroniczny (aparaty, odtwarzacze, TV,...)
Przykłady: System Atlas Uniwerystet w Manchester (Anglia) - koniec lat 50-tych/początek lat 60-tych System wsadowy Główna część systemu: moduły sterujące wejściem/wyjściem Planowanie zadań - spooling Pamięć rdzeniowa jako pamięć podręczna Nowatorski, wiele jego cech przetrwało w systemach operacyjnych do dziś
Przykłady: System CTSS Compatible Time-Sharing System System na komputer IBM 7090 zrealizowany w MIT (Massachusetts Institute of Technology), 1962 System z podziałem czasu Umożliwiał konwersację 32 użytkownikom Wielkość systemu: 32,000 słów 36-bitowych Wielki sukces, w użyciu do 1972
Przykłady: System MULTICS MULTiplexed Information and Computing Service Naturalne rozszerzenie CTSS napisane w języku PL/I na maszyny o mocy IBM PC 386 Wspólne przedsięwzięcie MIT (m.in. Dennis Ritchie), General Electric i Bell Laboratory (AT&T), 1965 Protoplasta systemów:ibm OS/360(1966),Unix(1970) Wielkość: 20M instrukcji maszynowych (1975) 1969, Bell Labs rezygnuje z projektu : Unics modyfikacja Multicsa na PDP-7 (Ken Thompson, Dennis Ritchie) cross-assembler Honeywell 635->gra Space Travel na PDP-7
Przykłady: System OS/360 System z podziałem czasu jednolity dla wszystkich komputerów od małych maszyn biurowych po wielkie komputery obliczeniowe Wszystko dla wszystkich Skomplikowany i zbyt wielki: >1,000,000 instrukcji maszynowych Błędne założenie: moc obliczeniowa ma być uzyskiwana zdalnie z wielkiego komputera OS/MFT, OS/MVT+TSO; poźniej IBM 370: OS/MVS+CMS Polska : System RIAD 32 (przełom 80/90)
Przykłady: Systemy operacyjne na IBM PC CP/M (Gary Kildall, 1974) na 8080,2MHz,8b i floppy IBM PC, 8086,5MHz,16b (1981): MS DOS 1.0-8KB interpreter BASICa +DOS, wielkość: 4000 linii kodu IBM PC XT, 10MHz, 16b (1983): MS DOS 2.0-24KB 1MB RAM, HDD: jeden katalog, 64 pliki IBM PC AT,80286,12MHz (1984): MS DOS 3.0-36KB 16MB RAM, sieć (v. 3.1) Microsoft Windows 1.0 - GUI (ang. Graphical User Interface) IBM PC 386,33MHz,32b (1987): MS DOS 3.3-46KB Microsoft Windows 3.0,3.1, Linux (1991) IBM PC 486,50MHz(1990):MS DOS + Win3.1, Linux
Przykłady: Systemy operacyjne firmy Microsoft Windows NT 3.1 (1993) 6M linii kodu, aplikacje MS DOS, OS/2, Windows 3.1 Windows 95, Pentium,300MHz (1995): fragmenty 16b kodu, system plików FAT-32 Windows NT 4.0 (1996) kompatybilność z W95/98, 16M linii kodu, system plików -NTFS Windows 98 (1998) - 32-bitowy fragmenty 16k kodu assemblerowego, błędy Windows ME (2000) - poprawiony W98 Windows 2000 (2000) = Windows NT 5.0
Współczesne systemy operacyjne Cechy wspólne architektura mikrojądra- zawiera jedynie niezbędne funkcje architektura monolityczna wielowątkowość proces (zadanie) składa się z wątków SMP (pod)system sieciowy systemy grafiki (GUI) i wydruku Windows: 2K/XP Unix: Solaris 2.x, 4.4BSD, Linux Maszyny wirtualne: JavaVM, VMware
Współczesna architektura - Centrino Procesor Pentium-M (L1 64kB, L2 1MB) Magistrale FSB - 400 MHz AGP 4x PCI Express 16x Chipset i855gm/pm: CPU, RAM, Bridge (mostek) ICH4-M PCI, USB, ATA, Ethernet 10Gb, WLAN DVD - Blue-ray: do 50GB, transfer danych 4,5MBps Przeznaczenie: notebooki
System operacyjny Windows 2000 wielozadaniowy system operacyjny z wywłaszczaniem na procesory 32-bitowe 4 wersje zależne od ilości pamięci i procesorów Professional, Server, Advanced Server, Datacenter Server realizuje standard POSIX (IEEE Std. 1003.1) architektura mikrojąder kod napisany w C i C++ 29M linii kodu źródłowego wydzielony kod zależny od procesora HAL (Hardware Abstraction Layer)
Windows 2000 Professional - wymagania Procesor: Intel Pentium, 133(200)MHz lub nowszy Pamięć: 64(128)MB RAM lub więcej Dysk twardy: 2000MB lub więcej 650MB wolnego miejsca Monitor: VGA (SVGA) lub o większej rozdzielczości Stacja CDROM 4(12)x lub DVD Stacja dyskietek 3,5 Mysz Microsoftowa, klawiatura,...
System operacyjny Linux System Linux jest bezpłatnie rozpowszechnianą wersją systemu operacyjnego UNIX System Linux stworzył student Uniwersystetu w Helsinkach (Finlandia) - Linus Torvalds, 1991 Monolityczny system operacyjny, którego centralną część stanowi jądro (Linux Kernel) Wielodostępny, wielozadaniowy system operacyjny z wywłaszczaniem zgodny ze standardem POSIX System Linux zawiera sieciowe systemy operacyjne:ncp(mars),smb(samba),tcp/ip(nfs)
System operacyjny Linux - (c.d.) System operacyjny Linux może działać na różnych architekturach: Intel x86, SPARC, DEC Alpha, PowerPC, MIPS, m68k System Linux może współistnieć na jednym komputerze z innymi systemami operacyjnymi: Windows 98, Windows NT, Windows 2000, Solaris, FreeBSD, OS/2,... System operacyjny Linux może symulować inne systemy operacyjne np. MS-DOS, Windows,... http://www.vmware.com v2.2-1m linii kodu źródłowego
Wymagania sprzętowe Procesor Pentium II taktowany zegarem 233MHz Pamięć RAM - 64 MB Karta graficzna 4MB Dysk twardy 2GB Czytnik CD-ROMów (opcjonalnie) Dostęp do sieci Internet (opcjonalnie)
Prawo Haeckla Haeckel Ernst (1834-1919), profesor anatomii w Jenie (1862-1909), ewolucjonista Ontogeneza jest rekapitulacją filogenezy Rozwój osobniczy (ontogeneza) jest skróconym i szybkim powtórzeniem (rekapitulacją) rozwoju rodowego (filogenezy) Komputery główne, minikomputery, mikrokomputery, komputery sieciowe, komputery osobiste, itd. w swoim rozwoju przechodzą etapy podobne jak ich poprzednicy
Podsumowanie Co to jest system operacyjny? nie ma dobrej definicji (i nigdy nie będzie) wygodnie jest przyjąć, że jest to program rezydentny (tzw. jądro systemu) pośredniczący między sprzętem a człowiekiem lub maszyną zadania: sterowanie programami, rozdzielanie zasobów, szeregowanie, sterowanie we/wy, zarządzanie danymi Co to jest system komputerowy? sprzęt system operacyjny oprogramowanie użytkowe (np. komenda who) ludzie lub maszyny
Podsumowanie (c.d.) Jakie cele wpłynęły na rozwój systemów operacyjnych w ciągu ostatnich 40 lat? efektywne działanie systemu komputerowego a zwłaszcza wykorzystanie procesora (jednostki centralnej) wygodne środowisko do opracowywania i wykonywania programów lokalnie i zdalnie W jaki sposób osiągnięto te cele? wsad, spooling wieloprogramowanie, podział czasu, swapping komputery osobiste, wieloprocesorowość sieci komputerowe fundamentalny wkład IBM
Ciąg dalszy O czym będzie mowa dalej? zarządzanie programami (procesami) zarządzanie pamięcią zarządzanie wejściem/wyjściem zarządzanie tym wszystkim razem (zdalnie) Model: komputer<->system<->użytkownik architektura komputera ( czyt. rozwój technologii) decyduje o systemie operacyjnym potrzeby użytkownika (np. multimedialne) wymuszają rozwój technologii ważne: architektura i organizacja komputera