Systemy Operacyjne - WYKŁAD PDF
Document Details
Uploaded by Deleted User
Politechnika Wrocławska
2024
Damian Radziewicz
Tags
Summary
This document is a lecture on operating systems, providing an introduction and historical overview. The lecture covers different types of operating systems, and their characteristics.
Full Transcript
Systemy Operacyjne Systemy Operacyjne Wprowadzenie do systemów operacyjnych Dr inż. Damian Radziewicz Wrocław 2024 Co to jest system operacyjny? “An elephant is a mouse with an Operating System.” — Knuth* …ale zanim na serio odpowiemy na to pytanie kr...
Systemy Operacyjne Systemy Operacyjne Wprowadzenie do systemów operacyjnych Dr inż. Damian Radziewicz Wrocław 2024 Co to jest system operacyjny? “An elephant is a mouse with an Operating System.” — Knuth* …ale zanim na serio odpowiemy na to pytanie krótkie podsumowanie historii. *Donald Ervin Knuth: born 1938, author of “The Art of Computer Programming”, creator of the TeX computer typesetting system. [Source: en.wikipedia.org] 3 Problem numer 1: programiści pracowali nad podobnymi problemami w swoim oprogramowaniu Opracowywanie danych wejściowych Formatowanie wyjść Współpraca z popularnymi urządzeniami (terminale, urządzenia gromadzące dane) Przetwarzanie typowych dany Oprogramowanie interfejsów użytkownika Jak poprawić efektywność programistów i jakość kodu: ❑ Można powtarzać te czynności i robić je samemu albo 4 ❑ Użyć zewnętrznych wysokopoziomowych sterowników i bibliotek Problem numer 2: powolne i nieefektywne procesy I/O vs szybkie i drogie CPU marnujące czas w oczekiwaniu na dane Wczesne rozwiązania: Program nie zawiera już czystego kodu ale zawiera biblioteki z funkcjami współdzieli operacje I/O, które są oddzielone od samego procesu przetwarzania danych Jednakże cały komputer dalej należy do jednego użytkownika. Program używa raczej uporządkowanych bibliotek w trakcie działania niż skompilowanych w kodzie programu. To wprowadziło dodatkową warstwę między użytkownika i sprzęt. Monitory, kolejki, dzielenie systemu Jeśli wielu użytkowników chciało używać jednego komputera w tym samym czasie potrzebne było generowanie sygnału gdy dany program został zakończony aby załadować i uruchomić następny (z taśmy magnetycznej lub papierowej). Ludzki operator działa wolniej niż specjalny dedykowany automatyczny proces (hardware/software). 5 1969: początek prac nad UNIXem Początek epoki OS Space Travel – gra napisana przez Jeremiego Ben dla Multics. Potem zaimplementowana na GE635 w FORTRANIE, potem na PDP-7 w asemblerze przez J. Ben i Dennisa Ritchie. Tworzenie tej gry na PDP-7 jest początkiem UNIX’a. Data: 1 stycznia 1970 00:00:00 UTC jest początkiem Unix’a aż do dzisiaj. 1974: CP/M 1981: MS-DOS 1984: GNU początek projektu, System I (Macinosh – Mac OS) 1989: SCO UNIX, WWW 1991: Linux kernel Source: http://en.wikipedia.org/wiki/Dennis_Ritchie 1992: Solaris; Windows 3.1 1993: Windows NT 3.1; Dennis MacAlistair Debian GNU/Linux Ritchie—notable for 2001: Windows XP 2007: iPhone OS (iOS) developing C and for 2008: Google Android; having influence on 2009: Windows 7 other programming 2012: Windows 8 languages, as well 2015: Windows 10 as operating 2021: Windows 11 systems such as ‘UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity’ Multics and Unix. 6 Source: www.meetdageeks.com Dennis Ritchie (right) with Ken Thompson Systemy operacyjne pogrupowane wg wielkości, funkcjonalności i aplikacji superkomputery, mainframes i systemy rozproszone Supercomputers, mainframes and distributed systems: scientific computing, numerical modeling (i.e. climate or nuclear weapons), search engines historical example: IBM's System/360; currently: IBM's z/VSE (Virtual Storage Extended) 7 Systemy operacyjne pogrupowane wg wielkości, funkcjonalności i aplikacji servery Servers OS: Internet and intranet services, such as WWW, FTP, databases, DNS, VPN, applications. Single machines, server farms, distributed servers, virtualization and combinations of above configurations are widely used. 8 Systemy operacyjne pogrupowane wg wielkości, funkcjonalności i aplikacji desktopy Desktops OS: computers designed mainly to be used by one operator at a time, Human- Machine Interface (GUI) is very important part of the whole system. Examples: Windows XP, Windows 11, Mac OS, Ubuntu… 9 Systemy operacyjne pogrupowane wg wielkości, funkcjonalności i aplikacji handhelds (smartfony, tablety, PDA,...) Operating systems for mobile devices: power-efficient, handheld devices, OS designed to operate on less capable devices. Examples: PalmOS, Symbian, Android, Windows Mobile, Windows CE, Windows 10, iOS 10 Systemy operacyjne pogrupowane wg wielkości, funkcjonalności i aplikacji systemy czasu rzeczywistego (real-time - RTOS) Real-time operating systems: designed to respond within specified time (seconds, milliseconds or even microseconds). Applications: spacecrafts, automobile controllers, industrial applications... Examples: QNX, Windows CE, FreeRTOS, RTLinux 11 Systemy operacyjne pogrupowane wg wielkości, funkcjonalności i aplikacji wbudowane (embedded) (ATM, samochodowe,...) Embedded OS: operating system is an integral part of the device, starting from ignition system on cars, smart sensors, up to portable devices. Examples: FreeBSD, QNX, Windows CE, Linux, Symbian, Android 12 Co to jest system operacyjny? ❖ Warstwa abstrakcyjna (zestaw warstw) oddzielająca użytkownika od sprzętu ❖ Manager komputerowych możliwości (CPU, pamięć, urządzenia zewnętrzne) ❖ Wirtualna platforma dla wysokopoziomowych aplikacji ❖ Sposób wprowadzenia wielozadaniowości nawet jeśli fizycznie jest tylko jeden mikroprocesor ❖ Sposób na zredukowanie kosztów opracowania nowych programów gdy nowy sprzęt pojawia się na rynku ❖ Dodatkowo: standaryzacja CLI/GUI HAL - hardware abstraction layer 13 System operacyjny dla jednego mikrokontrolera? Mikrokontrolery często są oprogramowane bez systemu Single-chip Freescale’s MCF52233 (ColdFire V2 core) operacyjnego – aplikacja microcontroller capable of przejmuje całkowitą kontrolę nad running FreeRTOS, HTTP server, terminal server and urządzeniem other tasks at the same time. ale… Są systemy operacyjne dla tego typu urządzeń, w szczególności systemy operacyjne czasu rzeczywistego (RTOS) Zaletą takiego rozwiązania jest praca w dobrze przetestowanym środowisku i możliwość „Kompaktowa” uproszczona wersja SO pracująca na jednoukładowym mikrokontrolerze. Często nazywana wykorzystania mechanizmu 14 Wbudowanym Systemem Operacyjnym. przełączającego zadania. A co z urządzeniami „smart”? Szybki rozwój rynku urządzeń, które możemy ulokować między komputerami stacjonarnymi a prostymi mikrokontrolerami. ✓ Smartfony, ✓ PDA, ✓ Tablety, ✓ Netbooki, ✓ Czytniki Ebooków, ✓ Domowe i samochodowe „centra rozrywki”, ✓ „Mądre” czujniki, wyposażenie domu. Te wszystkie urządzenia wykorzystują efektywne i relatywnie tanie mikroprocesory, idealne dla mobilnych aplikacji. Ale można na nich używać zarówno wbudowanych 15 systemów operacyjnych jak i SO z komputerów stacjonarnych. PDA, G1, BeagleBoard Trzy urządzenia do różnych zastosowań. Co je łączy? Podobny hardware: 1GHz procesor, 256-512 MB RAM, interfejsy internetu, USB i wideo. Wszystkie dostarczane z preinstalowanym SO chociaż zupełnie różnym: PDA – Windows Mobile 5.0, G1 – Android 1.6, BeagleBoard – uproszczona wersja Linuxa 16 Środowisko programowe dla PDA Microsoft Visual Studio 2022 Windows CE Toolkit Nowe platformy (WM 5, WM 6) wymagają C# and.NET Bardzo proste w użyciu vs instalacja Podobne do desktopowego (WinAPI- like or.NET-like) programowania Koszt! …albo można użyć MSDN AA Wbudowane emulatory różnych urządzeń (PDAs i SmartPhones) Bardzo proste poprawianie błędów programów albo poprzez emulator albo przez połączenie złączem USB → 17 Środowisko programowe dla urządzeń z Androidem Darmowe Android Studio IDE Darmowe Android SDK Wbudowane emulatory różnych urządzeń (można stworzyć własne) Łatwe debugowanie aplikacji w emulatorze jak i na podłączonym urządzeniu (wifi, USB) Łatwe w instalacji Java/Kotlin programming language Dobrze udokumentowane SDK IDE - Integrated Development Environment SDK - Software Development Kit 18 BeagleBoard xM Variety of operating system ports, including many Linux distributions, QNX, Windows CE, Android, Symbian, XBMC Media Center,… Code development environment depends on system chosen; No Flash memory, no risk of destroying bootloader ☺, system boots directly from microSD card; 1 GHz CPU, 512 MiB of RAM, DSP for media processing, 2D/3D capable graphics controller,… Relatively low-cost solution (only $179), well-suited for class-lab or hobbyists. 19 IMX53QSB (Freescale → NXP) Variety of operating system ports, including many Linux distributions, Windows7 mobile, Android, … Code development environment depends on system chosen; No Flash memory, no risk of destroying bootloader ☺, system boots directly from microSD card; 1 GHz CPU, 1 GiB of RAM, GPU for media processing, 2D/3D capable graphics controller,… Low-cost solution (only $149) 2 x USB, VGA, RS232, FastEthernet Optional touch-screen 20 Raspberry PI 3 model B Variety of operating system ports, including many Linux distributions, Windows7 mobile, Android, … Code development environment depends on system chosen; No Flash memory, no risk of destroying bootloader ☺, system boots directly from microSD card; 4×1.4 GHz CPU, 1 GiB of RAM, GPU for media processing, 2D/3D capable graphics controller,… Low-cost solution (only ~200 zł) 4 x USB, HDMI, FastEthernet Optional touch-screen 21 Czy mogę eksperymentować z różnymi SO na jednym komputerze? Tak, w dodatku nie trzeba reinstalować systemu aktualnie używanego – wirtualizacja systemu. Najpopularniejsze: VirtualBox, VirtualPC, Vmware. Prawdopodobnie najlepszy to VirtualBox firmy Oracle ze względu na jakość i uniwersalność. Są również systemy operacyjne wspomagające wirtualizacje, np. Solaris 10. 22 Wirtualizacja vs rzeczywisty komputer Można instalować i konfigurować wiele systemów operacyjnych na jednym komputerze w tym samym czasie; Nie ma niebezpieczeństwa utraty danych z powodu błędnego działania; Możliwe jest zatrzymanie a następnie kontynuowanie pracy w dowolnym czasie; Na jednym komputerze można uruchomić wiele „komputerów” w tle a jednocześnie nie tracić parametrów rzeczywistego komputera; W trakcie eksperymentów z różnymi systemami właściwy system operacyjny komputera jest cały czas dostępny. 23 VirtualBox You can setup as many virtual machines as you need; Machines can be run simultaneously; Hardware support for virtualization can be enabled; Host’s NIC can be bridged giving direct access to the network to the guest OS; Some USB devices can be accessed by the guest OS; (Lab computers have Debian and Windows 10 virtual system images available); You can copy whole virtual disk image to pen drive and use it virtually ☺ anywhere. 24 Programowanie – ANSI C Oba systemy są zainstalowane na wirtualnej maszynie; Większość dystrybucji Linuxa jest dostarczana z kompilatorem gcc; Windows wymaga zainstalowania środowiska, dostępne są w dużych ilościach np. Visual Studio; Dobrze zaprojektowane kompilatory C są dostępne dla wielu platform; printf() jest funkcją biblioteczną – wywołuje funkcję systemową. Rezultat jest identyczny na Windows 10/11 (64-bit) (Windows XP – 32-bit) jak i na Linux Debian (64-bit). W obu przypadkach 25 zobaczymy ”Hello, world!”. ANSI C – plusy i minusy Dostępny dla większości albo i wszystkich platform na Świecie De facto standard w UNIXie i Linuxie Język wysokiego poziomu, ale bardzo szybki i elastyczny Dostępne są miliardy linii kodu źródłowego za darmo Większość kerneli SO jest napisana w C ale: Nie-intuicyjna składnia Wskaźniki mogą być przekleństwem dla programisty (przepełnienia buforów, braki pamięci, …) Zależny od architektury (8-,16-,32-,64-bit, kolejność bajtów, przesunięcie struktury, …) ‘C isn't that hard: void (*(*f[])())() defines f as an array of unspecified size, of pointers to functions that return pointers to functions that return void’ 26 Source: www.meetdageeks.com Koniec Wprowadzenia 27 Systemy Operacyjne Systemy Operacyjne Dlaczego potrzebujemy systemów operacyjnych Dr inż. Damian Radziewicz Wrocław 2024 Czy naprawdę potrzebny jest system operacyjny? Spróbujmy zaprogramować mikrokontroler bez żadnego systemu operacyjnego: Kontroler – środowisko programistyczne Pierwsze podejście – mrugające diody Drugie podejście – użycie timerów, przerwań, programowanie terminalem Trzecie podejście – niezależne timery do wielu LEDów Czwarte podejście – RTOS, stos TCP, TELNET, HTTP… możliwość sterowania Systemy operacyjne czasu rzeczywistego (RTOS) 3 MCF52233 DEMO board; IDE (Integrated Development Environment) – darmowa wersja CodeWarrior lub Eclipse w zależności od preferencji; 32KiB RAM, 256KiB Flash Podstawowa wiedza o programowaniu w 60MHz, 32-bit MCU (ColdFire V2 Core) języku C; FastEthernet, RS232 (UART0) i dodatkowo UART1 4 LEDy, 2 przełączniki Timer przerwań Podstawowa wiedza o mikrokontrolerze. 4 Port – urządzenie I/O, często fizyczny pin. Może być konfigurowany jako wejście, wyjście lub dwukierunkowy. Zapisanie danych (kombinacja bitów) oznacza ustawienie pinu w stan „wysoki” lub „niski” co oznacza napięcie na pinie lub jego brak. W języku C port może być dostępny jako zmienna. Timer – (zegar) urządzenie wewnątrz µC, które może służyć do wywoływania przerwań co określony czas. 5 Interrupt – (przerwanie) zdarzenie które powoduje zatrzymanie (µC) wykonywanego programu i wykonanie podprogramu związanego z danym przerwaniem – interrupt subroutine (ISR). Właściwości przerwania zależą od priorytetów, masek i sprzętowych rozwiązań. UART – sprzęt (złącze) który może być użyty do wymiany danych (np. znaków z klawiatury) między µC i innymi urządzeniami. W komputerach stacjonarnych może to być RS232 lub konwerter USB-RS232. 6 CW+PE – łatwe użycie MCU; Większość konfiguracji odbywa się auto-magicznie - GUI (PE); Kod dla CPU inicjalizacja, ustawienie peryferii generowane jest „w locie”. Zacznijmy konfigurację komponentów CPU. Najważniejsze to wybór zegara i ustawienie częstotliwości. Później co najmniej najszybszy mod wymaga konfiguracji, domyślne ustawienia są 7 akceptowalne. Mrugające diody – podejście pierwsze 4 LEDy są podłączone do pinów PORTLD; Sterowanie LEDami jako 4-bitowym wektorem (nie niezależnymi bitami); Piny LEDów są wyjściami; Dostępne metody dla tych komponentów: LED_PutVal(…), LED_NegBit(…), … Funkcja Sleep(ms) stosowana do czekania (w ms), proste mruganie LED2 może wyglądać następująco: for(;;) { LEDs_NegBit(2); Sleep(1000); } Jak można mrugać różnymi LEDami niezależnie, z różnymi częstotliwościami w tym samym czasie? 8 Timer i przerwanie – podejście drugie Dodajemy następny komponent (bean): Timer (PIT0) → TimerInt, nazwijmy go TI1. Ustawmy wstępnie okres przerwania na 100ms. Wejdźmy do pliku źródłowego Events.c i dodajmy następujące linie kodu: 9 ProcessorExpert: UART Historycznie, tradycyjną drogą połączenia człowiek-maszyna był terminal tekstowy. Można tego łatwo dokonać „prosty" kod: terminal znakowy const char * prompt = "ColdFire > "; przez UART. struct command { char* name; void (*function)(void); }; void cmd_help(void) { printf(" > cls - clears screen\r > ledn - changes state of LEDn (0