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 (MSDOS, 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 Pamięć CPU 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