Systemy operacyjne Wykład 1 Wprowadzenie dr inż. Wojciech Bieniecki Instytut Matematyki i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz
Warunki zaliczenia WYKŁAD Kolokwium wykładowe w formie testu wielokrotnego wyboru i zadań otwartych o krótkiej odpowiedzi. LABORATORIUM Ćwiczenia laboratoryjne – ocena średnia Obecność obowiązkowa
Definicje systemu operacyjnego 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 System operacyjny (nadzorczy, nadrzędny, sterujący) jest to zorganizowany zespół programów, które pośredniczą miedzy sprzętem a użytkownikami, dostarczając użytkownikom zestawu środków ułatwiających projektowanie, kodowanie, uruchamianie i eksploatację programów oraz w tym samym czasie sterują przydziałem zasobów dla zapewnienia efektywnego działania Alan Shaw
Definicje systemu operacyjnego System operacyjny jest programem, który działa jako pośrednik miedzy użytkownikiem komputera a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób wygodny i wydajny. Abraham Silberschatz System operacyjny jest warstwa oprogramowania operująca bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania. Andrew Tannenbaum Wspólne elementy większości definicji: zarządzanie zasobami systemu komputerowego stworzenie środowiska wygodnego dla użytkownika
Składniki systemu komputerowego System komputerowy składa się z: Sprzęt (hardware): procesor, pamięć, urządzenia wejścia-wyjścia , są zasobami systemu komputerowego Programy użytkowe Programy użytkowe (aplikacje) określają sposób użycia zasobów do rozwiązania zadań stawianych przez użytkowników System operacyjny Sprzęt System operacyjny (S.O.) nadzoruje i koordynuje posługiwanie się sprzętem przez różne programy użytkowe, pracujące na zlecenie różnych użytkowników. system dostarcza środków do właściwego użycia zasobów podczas działania systemu komputerowego, tworząc środowisko, w którym inne programy mogą wykonywać swoje zadania
Perspektywa użytkownika systemu operacyjnego komputer osobisty system operacyjny dla jednego użytkownika S.O.: monopolizowanie zasobów, maksymalizowanie efektów pracy użytkownika, zaprojektowany pod katem wygody użycia, z pewnym uwzględnieniem wydajności i bez brania pod uwagę wykorzystania zasobów terminal podłączony do mainframe inni użytkownicy uzyskują dostęp za pomocą podobnych terminali; dzielą zasoby i mogą wymieniać się informacjami S.O.: maksymalizacja wykorzystania zasobów(zapewnienie, że czas procesora, pamięć i udostępnione urządzenia są wykorzystywane wydajnie, oraz że żaden użytkownik nie otrzymuje nic „ponad normę”
Użytkowanie systemu operacyjnego stacja robocza (workstation) podłączona do sieci innych stacji roboczych i serwerów użytkownicy mają zasoby wydzielone do swojej wyłącznej dyspozycji, ale również dzielą zasoby: osprzęt sieci i serwery plików, moc obliczeniowa i drukowanie S.O.: kompromis miedzy indywidualną użytecznością i wykorzystaniem zasobów komputery podręczne: PDA, smartfony, tablety system operacyjny dla jednego użytkownika S.O.: tak jak w komputerze osobistym, maksymalizacja wykorzystania zasobów, minimalizacja zużycia energii istnieją też komputery stanowiące część innych urządzeń, gdzie perspektywa użytkownika nie występuje S.O.: projektowane do działania bez interwencji użytkownika
Części systemu operacyjnego brak jest precyzyjnego określenia, jakie elementy wchodzą w skład systemu operacyjnego. zwykle przyjmuje sie, że jest to wszystko, co producent udostępnia w ramach oprogramowania nazywanego systemem operacyjnym często przyjmuje się, że system operacyjny to program który działa w komputerze nieustannie (nazywany zazwyczaj jądrem), a wszystko inne to programy użytkowe Jądro (ang. Kernel) – zbiór modułów, które ukrywają szczegóły sprzętowej realizacji systemu komputerowego, udostepniając pewien zestaw usług, wykorzystywanych m.in. do implementacji programów systemowych Dla użytkownika istotny jest także interpreter poleceń (powłoka, ang. Shell), który może być częścią jadra lub programem systemowym. Interpreter wykonuje pewne polecenia wewnętrzne; jeśli nie może wykonać wewnętrznie jakiegoś polecenia, uruchamia odpowiedni program zewnętrzny.
Cele systemu operacyjnego wygoda użytkownika wydajne działanie systemu komputerowego wygoda i wydajność są czasami ze sobą sprzeczne przykład: GUI (graficzny interfejs użytkownika) Zadania systemu operacyjnego definiowanie interfejsu użytkownika zarządzanie zasobami: udostępnianie systemu plików udostępnienie środowiska do wykonywania programów sterowanie urządzeniami wejścia/wyjścia obsługa podstawowych błędów
Rodzaje systemów komputerowych systemy komputerów głównych (mainframe computer systems) systemy biurkowe systemy wieloprocesorowe systemy rozproszone systemy zgrupowane (clustered systems) systemy czasu rzeczywistego systemy kieszonkowe
Systemy komputerów głównych systemy wsadowe (batch systems): użytkownik przygotowywał zadanie (np.. na kartach perforowanych), które składało sie z programu, danych i informacji sterujących system operacyjny był prosty, jego głównym zadaniem było przekazywanie sterowania od jednego zadania do następnego. System rezydował całkowicie w pamięci operacyjnej operatorzy grupowali razem zadania o podobnych cechach i wykonywali je w formie tzw. wsadu (batch) dla komputera częsta bezczynność CPU (za mała szybkość czytników kart) wprowadzenie dysków umożliwiło przetrzymywanie wszystkich zadań na dysku; system mógł zając się planowaniem zadań (job scheduling)
Systemy kart dziurkowanych Kodowanie informacji: Na prostokątnej, papierowej karcie kolejne pozycje są albo przedziurkowane albo pozostawione nienaruszone Każda pozycja na karcie reprezentuje pojedynczy bit informacji Każda kolumna reprezentuje jeden znak W kolumnie znajduje się 12 pozycji W formacie firmy IBM kolumn było 80, można zatem było zakodować na niej 80 znaków. Pojedyncza dziurka w kolumnie służyła do kodowania cyfr, dwie do kodowania liter alfabetu (wielkie litery), trzy do znaków specjalnych. Od 1964 r. dopuszczono stosowanie nawet 6 dziurek w kolumnie.
Taśmy dziurkowane Taśma 8-ścieżkowa kodowała kod 7-bitowy kod ASCII; ósma ścieżka służyła jako bit parzystości. Pasek mniejszych dziurek służył jako perforacja dla zębatego kółka mechanicznego czytnika lub perforatora, a dla czytnika fotoelektrycznego służyła jako wskaźnik poprzecznego rzędu bitów.
Spooling nowa technologia, pozwalająca na zwiększenie wydajność systemu: spooling (ang. Simultaneous peripherial operation online). Spooling polega na tym, że równocześnie odbywają się trzy rzeczy: nowe zadania są wczytywane przez czytnik(i) kart i zapisywane na dysku, procesor pobiera kolejne zadania z dysku, wykonuje je i zapisuje wyniki na dysku, wyniki zakończonych zadań są drukowane na drukarce(-kach). Dzięki spoolingowi operacje wejścia/wyjścia mogły odbywać się równocześnie z obliczeniami. Za cenę dysku magnetycznego i części pamięci operacyjnej można było tak efektywnie wykorzystać czas pracy procesora. Synchronizacja wczytywania zadań, wypisywania wyników oraz zarządzanie informacjami magazynowanymi na dysku stało się nowym zadaniem systemu operacyjnego.
Systemy komputerów głównych Systemy wieloprogramowe. wieloprogramowanie (multiprogramming) zwiększa wykorzystanie procesora wskutek takiej organizacji zadań, aby system miał zawsze jakieś z nich do wykonania system operacyjny przechowuje w pamięci kilka zadań (podzbiór puli zadań), wybiera jedno z nich do wykonania; gdy zadanie czeka na operacje I/O, procesor jest przełączany do innego zadania zadania wchodzące do systemu trafiają do puli zadań. Podejmowanie decyzji które zadanie wybrać, jeśli kilka z nich jest gotowych do wprowadzenia do pamięci – planowanie (szeregowanie) zadań wybranie zadania do wykonania, jeśli kilka z nich jest gotowych do wykonania w tym samym czasie – planowanie przydziału procesora wymagane też odpowiednie zarządzanie pamięcią i ograniczenie możliwości wzajemnego zaburzania się zadań
Systemy z podziałem czasu podział czasu (time sharing) lub wielozadaniowość (multitasking) – logiczne rozszerzenie wieloprogramowości. Procesor wykonuje na przemian wiele różnych zadań, przy czym przełączenia następują tak często, że użytkownicy mogą współdziałać z każdym programem w czasie jego wykonania. Systemy z podziałem czasu były pierwszymi, które pozwoliły na interaktywną pracę wielu użytkowników z komputerem.` Czytniki kart perforowanych zostały zastąpione terminalami, przy których mogli pracować użytkownicy. Czas reakcji to czas, jaki upływa od wykonania przez użytkownika jakiejś akcji (naciśnięcia klawisza, wprowadzenia polecenia, kliknięcia myszą itp.) do zareagowania przez proces na tę akcję. Na czas reakcji składa się również czas oczekiwania przez proces na przydział procesora. Dlatego też, im krótszy jest kwant czasu, na jaki przydzielany jest procesor, tym krócej proces czeka na przydzielenie procesora.
Komputery osobiste komputery osobiste (PC) istnieją od lat siedemdziesiątych. w pierwszym dziesięcioleciu CPU stosowane w PC nie miały cech potrzebnych do ochrony sytemu operacyjnego przez programami użytkowymi, więc systemy operacyjne nie były wielodostępne ani wielozadaniowe Rozwój systemów operacyjnych dla PC: zamiast maksymalizowania wykorzystania zasobów położono nacisk na wygodę użytkownika i szybkość kontaktu z użytkownikiem Osborne 1 – pierwszy laptop (1981). Cena 1795$, waga 11 kg, procesor Zilog Z80@4.0MHzRAM: 64KB, monitor 5 cali dwie dyskietki 5”1/4 91KB
Systemy wieloprocesorowe Systemy z więcej niż jednym procesorem, nazywane także systemami równoległymi (parallel systems) lub sciśle powiązanymi Procesory ściśle powiązane –współdzielą niektóre pozostałe składowe systemu komputerowego (magistralę, pamięć, urządzenia zewnętrzne, itp.) Procesory luźno powiązane, jeżeli każdy procesor posiada własną pamięć i magistralę, tworzy niezależny podsystem komputerowy i komunikuje się z pozostałymi podsystemami poprzez szybkie linie komunikacyjne. równoległe systemy ściśle powiązane: Z procesorami symetrycznymi: równoprawne procesory centralne, współdzielą zegar, magistralę systemową i pamięć, wraz z mechanizmem synchronizacji ich działania. Jest to obecnie najpopularniejsza technika konstrukcji równoległych komputerów ogólnego przeznaczenia. Z procesorami asymetrycznymi: tworzą hierarchię. Procesor centralny rozdziela zadania między wyspecjalizowane procesory pomocnicze. Stosowana w serwerach wyspecjalizowanych w jakimś celu. Struktura podziału zadań między procesory wynika z przeznaczenia systemu komputerowego, a jednocześnie jest odzwierciedlona w konstrukcji sprzętu komputerowego.
Systemy wieloprocesorowe Pozwalają na uzyskanie większej mocy obliczeniowej. N procesorów nigdy nie daje N razy większej mocy obliczeniowej - zawsze istnieją czynności, które nie mogą być wykonywane równocześnie przez wszystkie procesory. Moc obliczeniowa systemów równoległych jest również tańsza. Ceny procesorów bardzo szybko rosną wraz ze wzrostem ich prędkości. Dlatego też kilka wolniejszych procesorów jest tańsze niż jeden kilka razy szybszy procesor. Systemy równoległe mogą też posiadać inne pożądane cechy: odporność na uszkodzenia i łagodną degradację. Jeżeli system komputerowy jest wyposażony w mechanizmy pozwalające wykrywać uszkodzenia procesorów, to w przypadku awarii jednego z procesorów pozostałe procesory mogą przejąć jego zadania. Dzięki temu awaria części z procesorów nie prowadzi do awarii całego systemu, lecz jedynie zmniejsza jego wydajność.
Systemy rozproszone Systemy luźno powiązane systemy z wieloma procesorami które nie dzielą pamięci ani zegara - każdy ma własna pamięć lokalną. Procesory komunikują sie za pomocą szybkich szyn danych lub połączeń sieciowych. Użytkownik takiego systemu, niezależnie od tego, z którego komputera korzysta, postrzega zawsze system rozproszony jako jedną spójną całość. Systemy rozproszone maja szereg zalet: niezawodność - jeżeli niektóre z komputerów tworzących system rozproszony ulegną awarii, to pozostałe komputery mogą je zastąpić, przynajmniej częściowo współdzielenie zasobów - system rozproszony może udostępniać swoim użytkownikom wszystkie zasoby znajdujące się w obrębie systemu; dzięki temu użytkownicy mogą współdzielić zasoby systemowe, co obniża koszty systemu; np. pliki wszystkich użytkowników mogą być przechowywane na wspólnych dyskach, zwiększenie mocy obliczeniowej - jeżeli użytkownicy wykonują obliczenia, które można zrównoleglić, to system rozproszony może je wykonywać na wielu komputerach, równoważąc ich obciążenie, nowe usługi - niektóre z usług oferowanych przez system operacyjny, zwłaszcza usługi komunikacyjne, możliwe są do zrealizowania tylko przez komputery połączone w sieć;
Systemy czasu rzeczywistego systemy, od których wymaga się działania w określonych ograniczeniach czasowych, np. reagowania na określone zdarzenia z ograniczonym opóźnieniem. Systemy z bezwzględnymi wymogami czasowymi (ang. hard real-time systems) to zwykle systemy wbudowane sterujące urządzeniami lub procesami technologicznymi. System taki monitoruje urządzenie(a), którymi steruje i w określonym czasie musi reagować na zachodzące zdarzenia. Niespełnienie wymagań czasowych może doprowadzić do uszkodzenia sterowanych urządzeń lub może sprowadzić niebezpieczeństwo. W przypadku systemów z bezwzględnymi wymogami czasowymi zagwarantowanie, że wymogi te będą zawsze spełnione, jest ważniejsze od efektywnego wykorzystania systemu. Systemy z łagodnymi wymogami czasowymi (ang. soft real-time systems): niespełnienie nałożonych na nie wymogów czasowych nie jest niebezpieczne, ale powoduje pogorszenie jakości usług świadczonych przez system. Najpopularniejszym przykładem takich systemów są systemy multimedialne.
Systemy kieszonkowe do systemów kieszonkowych (handheld systems) zalicza się palmtopy, smartfony, tablety (personal digital assistant - PDA) EO Personal Communicator 1993 Atari portfolio, 1989, wielkość kasety video, 128kB RAM, 256kB ROM,
Systemy kieszonkowe mała pamięć operacyjna mała szybkość procesora (szybszy wymagałby mocniejszego zasilania; pojemność baterii jest ograniczona) rozmiar wyświetlacza ogranicza ilość informacji prezentowanych użytkownikowi przez aplikacje wszystko to powoduje to konieczność odpowiedniego projektowania systemu operacyjnego i aplikacji Compal UMD, 2007, Windows CE Samsung galaxy tab 3, 2013, Android 4.1
Klasyfikacja systemów operacyjnych sposób przetwarzania systemy przetwarzania bezposredniego (interakcyjne) systemy przetwarzania posredniego (wsadowe) liczba wykonywanych programów systemy jednozadaniowe systemy wielozadaniowe liczba użytkowników systemy jednoużytkownikowe systemy wieloużytkownikowe
Przykłady SO: CP/M CP/M (ang. ControlProgram/Monitor lub Control Program/Microcomputer) – prosty system prod. Digital Research, 1982 rok, Jednoprocesowy - dopuszczający działanie tylko jednego procesu (wykonywanego programu). ubogi zestaw poleceń wewnętrznych, interpreter poleceń był częścią jądra systemu(ładowany do początkowego obszaru pamięci): wyświetlenie zawartości katalogu (z różnymi opcjami), zmianę katalogu, zmianę aktywnego użytkownika (polecenie user z parametrami 0-15) uruchomienie polecenia zewnętrznego lub programu. W systemie CP/M dostępne były aplikacje takie jak: WordStar (edytor tekstu) arkusz kalkulacyjny Multiplan oprogramowanie specjalistyczne. Dostępne były języki programowania BASIC, Pascal, C,Fortran, COBOL, narzędzia wspomagające programowanie w asemblerze.
Unix rozwijany od 1969 r. w Bell Labs (UNIX System Laboratories, USL) przez Dennisa Ritchie i Kena Thompsona. W latach 70. i 80. zdobył bardzo dużą popularność W 1972 roku Unix został przepisany na język C Wielozadaniowy Wieloużytkownikowy
Linux Akronim rekursywny: Linux Is Not UniX Wielozadaniowy Linux jest to bezpłatna wersja systemu operacyjnego UNIX o otwartym źródle. praktycznie: nazwę „Linux” odnosimy do całego systemu operacyjnego: jądra wraz z aplikacjami. technicznie: Linux jest to jądro systemu; Pozostałe elementy systemu (narzędzia, aplikacje itp.) można dobrać na wiele sposobów – skorzystać z tysięcy rozwijanych niezależnie projektów. Dobór tych elementów systemu i ewentualne uzupełnienie własnym oprogramowaniem przez konkretną osobę, organizację lub firmę nosi nazwę dystrybucji. Linus Torvalds, twórca Linuxa Wielozadaniowy Wieloużytkownikowy
Mac OS Wiele procesów Wielu użytkowników jest zbudowany na podstawie dawnego systemu NeXTStep z drugiej połowy lat 80 Podstawa systemu Mac OS X jest zgodna z definicją systemu typu POSIX (systemu uniksowego) i opiera się na jądrze XNU (w oparciu o mikrojądro Mach oraz FreeBSD) posiadając charakterystyczne komendy Unix dostępne z poziomu wiersza poleceń. OS X wprowadza wiele nowych możliwości w stosunku do swego poprzednika Mac OS 9, np. wywłaszczeniową wielozadaniowość i ochronę pamięci. OS X dostarcza własne narzędzia do programowania aplikacji pod ten system, z których najważniejsze jest IDE Xcode. Dostępne języki programowania to C, C++, Objective-C, Java. Podsystem Darwin kieruje systemem plików HFS+, w którym stosuje się uniksowy system kontroli dostępu do plików. Wiele procesów Wielu użytkowników
DOS MS-DOS (ang. Microsoft Disk Operating System) Cała konfiguracja MS-DOS znajduje się w zasadzie w 2 lub 3 plikach: CONFIG.SYS, AUTOEXEC.BAT oraz w nowszych systemach MSDOS.SYS. Plik CONFIG.SYS definiuje konfigurację systemu, natomiast plik AUTOEXEC.BAT pełnił funkcję ówczesnego Autostartu. Plik MSDOS.SYS był w samodzielnych wersjach systemu (do 6.22) plikiem binarnym zawierającym kod wykonywalny a dopiero później - tekstowym plikiem konfiguracyjnym. Jednoużytkownikowy Jednoprocesowy System przerwań
Rodzina Windows listopad 2013 – Windows Server 2012 R2 17 października 2013 – Windows 8.1
Novell Netware sieciowy system operacyjny firmy Novell przeznaczony dla serwerów pełniących funkcje serwera plików. Wielozadaniowy i wieloużytkownikowy. Z powodzeniem pełni funkcje serwera baz danych, routera i innych serwisów internetowych (tunelowanie, NAT, DHCP, mail, FTP, WWW, DNS, HTTPS, TFTP i inne). zaprojektowany w celu wykonywania wielu usług na PC wydajność i stabilność wyrażająca się w długiej, nieprzerwanej pracy. wysoki poziom bezpieczeństwa nie spotykany w rodzinie systemów Windows NDS eDirectory – usługa katalogowa
Android Wielozadaniowy Od wersji 4.2 - wieloużytkownikowy System operacyjny dla urządzeń mobilnych oparty na jądrze Linuksa oraz oprogramowaniu na licencji GNU. Początkowo możliwe było tworzenie aplikacji jedynie w Javie, obecnie możliwe jest pisanie natywnego kodu z użyciem C/C++. Aktualna wersja: 4.4.2 KitKat, 12.2013 Wielozadaniowy Od wersji 4.2 - wieloużytkownikowy
IOS iOS – system operacyjny Apple Inc. dla urządzeń mobilnych iPhone, iPod touch oraz iPad. Obecna nazwa funkcjonuje od 2010, wcześniej system był znany jako iPhone OS. System ten bazuje na systemie operacyjnym Mac OS X 10.5 i tym samym jądrze Darwin.