Architektura systemów informatycznych. system operacyjny podstawowe pojęcia, budowa



Podobne dokumenty
Systemy operacyjne. Jacek Kobus. Wydział Fizyki, Astronomii i Informatyki Stosowanej UMK (2014/2015)

Systemy operacyjne. Tomasz Lewicki. marzec WWSIS, Wrocław. Tomasz Lewicki (WWSIS, Wrocław) Systemy operacyjne marzec / 25

Partition Manager 12 Home

Jak działa Internet i co z tego wynika dla prób jego regulacji?

5.1. Definicja i klasyfikacja systemów pomiarowych

9. Protokoły sieciowe TCP/IP

Podręcznik użytkownika IBM SPSS Statistics 22 System podstawowy

Synology NAS Przewodnik użytkownika

W ramach realizacji przedmiotu zamówienia do Wykonawcy należeć będzie:

Reprezentacja dokumentów tekstowych w modelu przestrzeni wektorowej

Elementy składowe systemu komputerowego

LOGO!Soft Comfort pomoc online

System plików warstwa fizyczna. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

URZĄDZENIA TECHNIKI KOMPUTEROWEJ CZĘŚĆ 1 JAK DZIAŁA KOMPUTER?

USOS: System raportowania i analiz statystycznych

Metodyka prowadzenia szkoleń. z wykorzystaniem urządzeń. mobilnych dla e-biznesu

Acronis i Acronis Secure Zone są zastrzeżonymi znakami towarowymi firmy Acronis, Inc.

Wprowadzenie docsystemów informacyjnych

Praca dyplomowa inżynierska

Enterprise Data Server (EDS) jest nowoczesnym, wydajnym systemem zbierania, przetwarzania i udostępniania danych operacyjnych, w tym danych

Lunar Program powiększający Wersja 7.0

SUSE Linux Enterprise Server 12

Tytuł: Professional Mobile Web Development with WordPress, Joomla!, and Drupal

INSTRUKCJA OBSŁUGI PROGRAMU. INFOR System KSIĘGA PRZYCHODÓW I ROZCHODÓW. Nasza wiedza i narzędzia wspierają Twoją strategię. Wersja 9.

ABBYY FineReader 11 Podręcznik użytkowanika

Wiodące na świecie oprogramowanie do drukowania etykiet, kodów kreskowych, tagów RFID i kart

Certyfikowany tester Plan poziomu podstawowego

POMOC DO PROGRAMU. Merco s.c. - Programy dla resturacji i hoteli

Opis systemu B2B. Przygotowanie projektu infrastruktury elektrotechnicznej dla klientów,

Czas na infrastrukturę konwergentną?

Transkrypt:

Architektura systemów informatycznych system operacyjny podstawowe pojęcia, budowa

Tematyka wykładów Pojęcie systemu operacyjnego Pliki i systemy plików Powłoki systemowe: metaznaki i wyrażenia regularne filtry tekstowe awk i grep skrypty powłoki Architektura procesora Zarządzanie procesami i wątkami Architektura pamięci i jej organizacja Urządzenia wejścia i wyjścia (I/O)

Literatura Pozycje podstawowe: Hyde R. Profesjonalne programowanie. Zrozumieć komputer Część 1, Helion, Gliwice 2005. Lal K. Rak T. Linux komendy i polecenia praktyczne przykłady. Wydawnictwo Helion, Gliwice 2005 Ward B. Jak działa Linux. Wydawnictwo Helion, Gliwice 2005 Pozycje uzupełniające: Bar M. Linux systemy plików. Wydawnictwo RM, Warszawa, 2002 Silberschatz A. i Galvin P. B. Podstawy systemów operacyjnych. Wydawnictwo Naukowo- Techniczne, wyd.5, Warszawa, 2002 Stallings W. Organizacja i architektura systemu komputerowego. Wydawnictwo Naukowo- Techniczne, Warszawa, 2000, 2003. http://amu.edu.pl/~kostecki

Elementy systemu komputerowego użytkownicy (ludzie, maszyny, inne komputery) programy użytkowe (kompilatory, edytory, systemy baz danych, gry) system operacyjny sprzęt (procesor, pamięć, urządzenia wejścia wyjścia) System komputerowy wg Tanenbauma

Co to jest system operacyjny? 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. System operacyjny nadzoruje i koordynuje posługiwanie się sprzętem przez różne programy użytkowe, które pracują na zlecenie różnych użytkowników. System operacyjny jest odpowiedzialny za zarządzanie zasobami komputera tworzenie wirtualnej maszyny (dla programisty)

Zadania systemu operacyjnego zarządzanie zasobami komputera, m.in.: procesorem (a dokładniej czasem procesora), pamięcią, urządzeniami peryferyjnymi oraz przydzielanie zasobów procesom, koordynacja pracy ww. urządzeń poprzez obsługę przerwań oraz odpowiednie na nie reagowanie, ochrona danych i pamięci - tak aby jeden proces, w wyniku błędu lub zamierzonego działania nie mógł zniszczyć lub pozyskać danych innego procesu automatyzacja najczęściej wykonywanych funkcji ukrywanie przed aplikacjami skomplikowania sprzętu komputerowego przez tworzenie abstrakcji, np zbiory zapisanych klastrów na dysku widziane są jako pliki o symbolicznych nazwach abstrakcja równoległości wykonywania programów jednolity sposób dostępu do urządzeń

Podziały systemów operacyjnych Systemy operacyjne ze względu na sposób przetwarzania można podzielić na: Systemy przetwarzania bezpośredniego systemy interakcyjne gdzie występuje bezpośrednia interakcja pomiędzy użytkownikiem a systemem i wykonywanie zadania użytkownika rozpoczyna się zaraz po przedłożeniu, Systemy przetwarzania pośredniego systemy wsadowe gdzie występuje znacząca zwłoka czasowa między przedłożeniem a rozpoczęciem wykonywania zadania i niemożliwa jest ingerencja użytkownika w wykonywanie zadania. Ze względu na dopuszczalną liczbę zadań systemy dzielimy na: Systemy jednozadaniowe gdzie niedopuszczalne jest rozpoczęcie wykonywania następnego zadania użytkownika przed zakończeniem poprzedniego, Systemy wielozadaniowe gdzie dopuszczalne jest istnienie jednocześnie wielu zadań (procesów), którym zgodnie z pewną strategią przydzielany jest procesor. Zwolnienie procesora następuje w wyniku: żądania przydziału dodatkowego zasobu, zainicjowania operacji wejścia/wyjścia, przekroczenia ustalonego limitu czasu (kwantu czasu).

Budowa systemu operacyjnego jądro systemu wykonujące zadania, powłoka - specjalny program komunikujący użytkownika z systemem operacyjnym, system plików - sposób zapisu struktury danych na nośniku. jądro (ang. kernel) - jest ta częścią systemu operacyjnego, która działa w komputerze nieustannie, jest odpowiedzialna za wszystkie jego zadania. powłoka - (ang. shell) to program komputerowy pełniący rolę pośrednika pomiędzy systemem operacyjnym lub aplikacjami a użytkownikiem, przyjmując jego polecenia i "wyprowadzając" wyniki działania programów. Np.: Powłoki tekstowe: bash (Unix), cmd.exe (Windows XP), Powłoki graficzne: KDE, GNOME (Linux), Explorer (Windows) system plików (ang. file system) metoda przechowywania plików, zarządzania plikami, informacjami o tych plikach, tak by dostęp do plików i danych w nich zgromadzonych był łatwy dla użytkownika systemu. (np. FAT w DOS-ie, NTFS w Microsoft Windows NT lub ext/ext2/ext3/ext4 i ReiserFS/Reiser4 w Linuksie)

Schemat systemu operacyjnego użytkownik powłoka jądro sterowniki sprzęt

Rodzaje systemów plików Dyskowy system plików - "normalny" system plików pozwalający na zarządzanie danymi na stacjonarnych nośnikach danych, takich jak twarde dyski. Każdy system posiada swój własny system plików (np. Linux - ext2, Windows NT,2000,XP,VISTA - NTFS Windows 95,98,ME - FAT,FAT32 itd.). Systemy dziennikujące (lub księgujące, ang. journaling) - systemy z mechanizmem księgującym, zwiększającym bezpieczeństwo danych i umożliwiającym szybkie przywrócenie sprawności systemu po awarii. Mechanizm taki posiadają nowsze systemy plików (np. NTFS, HFS+ lub ext3, ext4). Sieciowy system plików - w zasadzie jest to protokół umożliwiający przesyłanie poleceń do serwera przez sieć oraz wykonywanie operacji na odległość. Informacje są z powrotem przekazywane z serwera do klienta. Dzięki takiemu rozwiązaniu użytkownik nie widzi żadnej różnicy między pracą na sieciowym systemie plików a pracą na lokalnym systemie plików. Najbardziej znane to NFS, Coda, AFS (System plików Andrew'sa), SMB oraz NCP (Novella). Specjalne systemy plików (Wirtualne systemy plików) - nie umożliwiają zarządzania danymi, np. system /proc (w Linuksie) dostarcza interfejsu, który umożliwia dostęp do niektórych struktur jądra. Systemy oparte na bazie danych - systemy plików, w których pliki są identyfikowane na podstawie swojej charakterystyki (np. autora, typu czy tematu, którego dotyczą) - jak w bazach danych.

Cechy dobrego systemu operacyjnego funkcjonalność wydajność skalowalność niezawodność (dostępność) łatwość korzystania i zarządzania

Rodzaje architektur systemów operacyjnych Monolityczna - najprostsza, jedno jądro systemu, tylko w komputerach jednozadaniowych; Warstwowa - hierarchia poleceń systemowych, nowsze wersje DOSu; Klient/serwer - aplikacje (programy użytkowe) postrzegane są przez system operacyjny jako klienci dostarczających im swoich usług serwerów. Klienci komunikują się z serwerami poprzez jądro systemu, każdy proces pracuje w własnej, wydzielonej i chronionej przestrzeni adresowej pamięci operacyjnej, dobrze odizolowany od innych procesów.

Architektura klient/serwer Architektura klient/serwer na poziomie relacji: jądra systemu i usług systemowych; programów i systemu; stacji roboczych i serwerów. Serwer - maszyna udzielająca mocy obliczeniowej swojego procesora, serwująca pliki lub inne usługi, np. dostęp do drukarek, sieci. Trzy wersje klient/serwer: a) wszystkie aplikacje wykonywane są przez serwer a wyniki wyświetlane na ekranie klienta; b) serwer dostarcza danych dla aplikacji uruchamianych na komputerze klienta; c) wszystkie komputery współpracują ze sobą jak równy z równym (peer-topeer), korzystając wzajemnie ze swoich zasobów.

Budowa jądra systemu jądro monolityczne - często stosowane w systemach typu Unix. Wszystkie zadania są wykonywane przez jądro, będące jednym, dużym programem działającym w trybie jądra. Przykładami takiego jądra mogą być: Linux, OpenBSD, FreeBSD, chociaż większość posiada umiejętność dołączania i odłączania modułów (najczęściej zawierających kod sterownika urządzenia lub obsługi potrzebnego w danej chwili systemu plików). Zaletą tej techniki jest prostota, stabilność, łatwość komunikacji pomiędzy różnymi członami jądra. Wadą jest, w późniejszym stadium rozwoju projektu, uciążliwość w rozwijaniu programu oraz w znajdywaniu błędów.

mikrojądro - w tej technice z monolitycznego jądra zostaje tylko jego podstawowa część, a części odpowiedzialne za bardziej wyrafinowane funkcje są wydzielone do funkcjonalnych bloków albo realizowane jako zwykłe procesy w trybie użytkownika. nanokernel - technika zbliżona do techniki mikrojądra, różnica w wielkości - nanokernel jest jeszcze mniejszy. exokernel - architektura będąca odmianą nanojądra. Cechą wyróżniającą jest możliwość zarządzania zasobami systemu przez nieuprzywilejowanego użytkownika, a rola jądra sprowadza się do zabezpieczania zasobów. cachekernel - w tej technice jądro systemu buforuje obiekty systemowe takie jak wątki czy przestrzenie adresowe tak jak sprzęt komputerowy buforuje pamięć. Jądra aplikacji trybu użytkownika są odpowiedzialne za ładowanie tych danych i ponowne ich zapisanie stosując specyficzne dla danej aplikacji mechanizmy.

jądro hybrydowe - kompromis między architekturą jądra monolitycznego i mikrojądra. W krytycznych usługach - np. stos sieci - usługi są na stałe wkompilowane w główny kod jądra, inne usługi pozostają oddzielone od głównego jądra i działają jako serwery (w przestrzeni jądra). Dzięki temu rozwiązaniu możliwe jest zachowanie wydajności jądra monolitycznego dla kluczowych usług.

Historia rozwoju komputerów i systemów operacyjnych 1945-1955 (1. generacja): komputery lampowe programowanie w języku maszynowym (brak języka programowania) przeprowadzanie wyłącznie obliczeń numerycznych zastosowanie kart dziurkowanych do wprowadzania danych (początek lat 50- tych) ENIAC, Electronic Numerical Integrator and Computer (elektroniczne urządzenie numeryczne całkujące i liczące), 1946-1955 (J.Mauchly, J.P.Eckart) EDVAC, Electronic Discrete Variable Computer, 1946 (J. von Neumann, Institute for Advanced Studies (IAS))

Historia rozwoju komputerów i systemów operacyjnych 1955-1964 (2. generacja): komputery tranzystorowe zwiększona niezawodność rozgraniczenie roli operatora i programisty system wsadowy (wczytywanie i drukowanie off-line) karty sterowania zadaniami (Fortran Monitor System, Job Control Language) Prosty monitor wraz z językiem kontroli zadań (JCL) umożliwiał przetwarzanie wsadowe (batch processing). Bardziej złożone jednostki ALU oraz sterujące, ulepszone języki programowania, rozpoczęto dostarczanie oprogramowania systemowego.

Historia rozwoju komputerów i systemów operacyjnych 1965-1980 (3. generacja): komputery z układami scalonymi ujednolicenie linii produkcyjnych; małe i duże komputery z ujednoliconym systemem operacyjnym (ta sama lista rozkazów, ale różna wielkość pamięci, szybkość procesorów, wydajność) wieloprogramowość, spooling systemy z podziałem czasu (MULTICS) minikomputery (DEC PDP) od 1980 (4. generacja): komputery o układach VLSI VLSI (Vary Large Scale Integration) bardzo duża skala integracji, powyżej 10 000 el./układ układy o dużym stopniu scalenia (VLSI) spowodowały powstanie stacji roboczych i komputerów osobistych (architektura minikomputerów) sieciowe systemy operacyjne rozproszone systemy operacyjne (układy masywnie równoległe)