Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Podobne dokumenty
Systemy operacyjne III

1.1 Definicja procesu

4. Procesy pojęcia podstawowe

Jądro systemu operacyjnego

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

projektowanie systemu

4. Procesy pojęcia podstawowe

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

4. Procesy pojęcia podstawowe

Komputery przemysłowe i systemy wbudowane

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Zarządzanie procesami i wątkami

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Podstawowe zagadnienia

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Prezentacja systemu RTLinux

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Sieciowe Systemy Operacyjne

Systemy operacyjne. Paweł Pełczyński

Procesy, wątki i zasoby

System komputerowy. System komputerowy

Zarządzanie pamięcią operacyjną

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Wprowadzenie do systemów operacyjnych

System operacyjny MACH

Działanie systemu operacyjnego

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Działanie systemu operacyjnego

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Struktury systemów operacyjnych

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Działanie systemu operacyjnego

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Informatyka, systemy, sieci komputerowe

Wielozadaniowość w systemie Microsoft Windows

Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego - przykłady

Systemy operacyjne Procesy i wątki

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Celem wykładu jest wprowadzenie fundamentalnych pojęć, integralnie związanych z systemem operacyjnym, na których opiera się przetwarzanie we

Budowa systemów komputerowych

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

Działanie systemu operacyjnego

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Proces y i y w i ąt ą ki

Podstawy Informatyki Systemy operacyjne

Procesor budowa, schemat, tryby pracy

Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.

Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.

Wieloprogramowanie. Systemy operacyjne / Procesy i wątki str.4/32. Proces w systemie operacyjnym. Tworzenie i kończenie procesów

Planowanie przydziału procesora

2.1 Pojęcie wątku Modele wielowątkowości Wybrane zagadnienia wielowątkowości Wątki POSIX... 18

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego - przykłady

LEKCJA TEMAT: Zasada działania komputera.

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Planowanie przydziału procesora

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

1. Etapy rozwoju systemów komputerowych

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Model procesu w systemie Linux. Tomasz Borzyszkowski

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

POSIX ang. Portable Operating System Interface for Unix

Mechanizmy pracy równoległej. Jarosław Kuchta

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.3

Wprowadzenie do systemu Minix

Systemy Czasu Rzeczywistego (SCR)

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Planowanie przydziału procesora

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Ogólna koncepcja planowania. Planowanie przydziału procesora. Komponenty jądra w planowaniu. Tryb decyzji. Podejmowanie decyzji o wywłaszczeniu

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

REAL-TIME LINUX. ZGODNOŚĆ Z POSIX ( PSE51 (minimal realtime system profile)

Przykłady implementacji planowania przydziału procesora

Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.3

Programowanie Niskopoziomowe

Zarządzanie procesami (omawiane zagadnienia)

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

41. System operacyjny. Postrzeganie systemu operacyjnego przez warstwę oprogramowania użytkowego

przydziału procesora Przykłady implementacji planowania przydziału procesora Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH

Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

L4Ka::Pistachio Mikrojądra mogą być wydajne

Szeregowanie zadań w Linux Kernel 2.6. Daniel Górski Przemysław Jakubowski

Systemy operacyjne III

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Mikroinformatyka. Mechanizmy ochrony pamięci

Wprowadzenie do systemów informacyjnych

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Transkrypt:

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

plan Cechy, właściwości procesów Multitasking Scheduling Fork

czym jest proces? Działającą instancją programu Program jest kolekcją instrukcji, a proces aktualnym wykonaniem tych instrukcji Może być wiele instancji procesów dla tego samego programu, każda wykonująca inną ścieżkę kodu

zasoby procesu Każdy proces jest właścicielem określonych zasobów: Identyfikator procesu(process id, PID) Obraz maszynowego kodu wykonalnego (może być współdzielony z innymi instancjami programu, ale w przypadkach gdy obraz jest nadpisywalny, jest on kopiowany), zawarty wewnątrz Izolowanego obszaru pamięci wirtualnej (przestrzeń adresowa) Zasoby systemu operacyjnego (np. uchwyty/deskryptory plików, zegary, obiekty synchronizacji, dojścia urządzeń ) Atrybuty bezpieczeństwa (id właściciela procesu, zestaw uprawnień) Bieżący stan procesora (kontekst wykonania) zawartość rejestrów, mapowanie pamięci wirtualnej do adresów fizycznych

pamięć procesu Każdy proces działa wewnątrz przestrzeni adresowej izolowanej od innych procesów (AKA sandbox) Przestrzeń adresowa procesu zawiera specyficzne dla danego procesu struktury danych systemu operacyjnego stosy wywołań wszystkich wątków procesu stertę Stos jest fragmentem pamięci przechowującym informacje o aktywnych procedurach, specyficznych dla każdego wątku Sterta ( pamięć wolna ) jest regionem pamięci dzielonym pomiędzy wątkami i używanym dla potrzeb dynamicznej alokacji pamięci

wielowątkowość Nowoczesne systemy operacyjne wspierają pojęcie wielowątkowości - wielu jednoczesnych ścieżek wykonania w ramach jednego procesu Wątki współdzielą zasoby procesu-rodzica (pamięć, deskryptory/uchwyty), ale każdy wątek posiada własny stos wywołań (i czasami również atrybuty bezpieczeństwa) Ponieważ wątki dzielą wspólną przestrzeń adresową, mogą z łatwością komunikować się między sobą za pomocą "zwykłych" konstrukcji języka programowania Procesy z drugiej strony są na ogół izolowane, więc wymagają pewnych specjalnych zabiegów do komunikacji: interprocess communication (IPC)

wiele wątków vs wiele procesów Wątki Wątki są uważane za lekkie procesy ilość informacji niezbędna do przetworzenia podczas tworzenia wątku wewnątrz istniejącego procesu jest dużo mniejsza niż podczas tworzenia nowego procesu Ponieważ operują na tych samych, współdzielonych danych, są generalnie tańsze pod względem zasobów systemowych niż procesy Komunikacja międzywątkowa jest łatwiejsza niż międzyprocesowa Procesy Wadliwy wątek może wywalić cały proces, zewnętrzny proces generalnie nie jest w stanie uszkodzić innego Istnieją techniki współdzielenia regionu pamięci pomiędzy procesami, co ułatwia wymianę danych (ale nie jest równie naturalne jak z wątkami) Istnieją techniki umożliwiające tworzenie nowych procesów równie tanio jak wątki (fork, copyon-write)

wielozadaniowość (multitasking) Większość współczesnych systemów operacyjnych sprawia wrażenie że uruchamia wiele procesów (zadań) równocześnie, nawet na jednordzeniowym (jednowątkowym) procesorze Odbywa się to poprzez podział czasu każde zadanie otrzymuje mały przedział czasu procesora, po czym zostaje wywłaszczone i następuje przełączenie kontekstu do innego zadania Szybkie przełączenia kontekstu i niewielkie sloty czasowe zadań powodują, że zadania zdają się działać równolegle Dokładny sposób przełączania zadań zależy od modelu wielowątkowości

modele wielowątkowości Multiprogramming Przestarzały, nie używany już Program jest wykonywany tak długo, jak długo nie wymaga dostępu do urządzeń I/O Podczas dostępu do I/O aktywny program jest przełączany na ten, który ma już przygotowane dane wielozadaniowość bez wywłaszczania (cooperative) Program ochotniczo oddaje kontrolę nad CPU po wykonaniu części zadania Wadliwie zaprojektowane programy mogą zająć cały czas procesora dla siebie, OS nie ma możliwości przerwać ich wykonanie 16-bitowy Windows, Mac OS przed X wielozadaniowość z wywłaszczaniem (preemptive) OS (scheduler) wywłaszcza (przerywa) wykonanie zadań aby zagwarantować sprawiedliwy dostęp do slotów czasowych, za pomocą przerwań sprzętowych Przydział slotów czasowych zależy od priorytetów zadań i polityki szeregowania

szeregowanie zadań (task scheduling) Każde zadanie (proces i wątek) ma określony priorytet Zadania o wyższym priorytecie generalnie mają możliwość uzyskać większy przydział czasu niż te o niższym Priorytet procesu można ustawić programowo, z wewnątrz lub z zewnątrz Podnoszenie priorytetu powyżej określonego pułapu zwykle wymaga podwyższonych uprawnień Intensywne zadania o wysokim priorytecie mogą zagłodzić inne zadania ostrożnie! ;)

ustawianie priorytetu zadań Windows Unix/POSIX patrz man 7 sched ;)

scheduler (algorytm szeregowania zadań) Część jądra systemu operacyjnego Algorytm, który decyduje które zadanie zostanie uruchomionę w oparciu o priorytety, historię wykonania, stan wejścia/wyjścia i wiele innych czynników Scheduler może być optymalizowany pod kątem Maks. przepływności Min. opóźnień Sprawiedliwości Gwarancji wykonania w określonym czasie (systemy realtime)

tworzenie nowego procesu Windows Linux/Unix/POSIX patrz man 3 exec ;) Właściwie, exec() zastępuje aktualny proces (jego przestrzeń adresową innym), więc Będzie najpierw potrzebny fork()

fork Wywłanie systemowe fork() jest unikatową cechą systemów Unix/POSIX patrz man 2 fork ;) fork() tworzy nowy proces poprzez skopiowanie procesu wywołującego Proces potomny jest identyczny z rodzicem, włączając w to używane (otwarte) zasoby systemowe, których dojścia są dziedziczone Dziedziczenie zasobów i zawartości pamięci sprawia, że komunikacja IPC pomiędzy rodzicem i procesem potomnym jest wyjątkowo prosta, co historycznie było powodem dla którego systemy Unix nie obsługiwały wielowątkowości, tylko używały forków do zapewnienia współbieżności programów Właśnie dlatego logiem BSD Unixa jest trzymający trójząb diabeł ;)

implementacja fork wywołanie systemowe fork() jest zaimplementowane za pomocą bardzo wydajnej techniki copy-on-write Proces potomny początkowo używa dokładnie tych samych stron pamięci co rodzić (nie są one kopiowane), ale są one dla niego zabezpieczane przed zapisem Próba zapisu do takiej strony pamięci powoduje page fault (rodzaj przerwania sprzętowego), które jest przechwytywane przez OS i dopiero wtedy, w sposób niewidoczny dla procesu strona jest kopiowana i zastępowana zapisywalną dla nowego procesu To sprawia, że fork() jest wyjątkowo tani w odniesieniu do zasobów systemowych (i szybki!)

jak to działa?

IPC po forku Proces rodzic i potomny współdzielą dostęp do deskryptorów plików, które były otwarte przed forkiem Można więc utworzyć potok (pipe parę połączonych gniazd Unix-owych) przed forkiem, a następnie użyć tego potoku, aby połączyć obydwa sforkowane procesy Dzięki temu IPC na Uniksie jest bardzo proste wystarczy przesyłać polecenia i/lub dane za pomocą potoku