SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Slides:



Advertisements
Podobne prezentacje
Wirtualizacja zasobów w systemach operacyjnych
Advertisements

ANALIZA SIECIOWA PRZEDSIĘWZIĘĆ konstrukcja harmonogramu
Język C/C++ Funkcje.
Podstawowe pojęcia programowania współbieżnego
Wykonał : Marcin Sparniuk
SYSTEMY OPERACYJNE WSTĘP
SYSTEMY OPERACYJNE ·       SO : zestaw programów zarządzających zasobami komputera i wspomagających jego użytkowanie zarządzanie zasobami.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
Sieci komputerowe.
1 Linux jako system wielozadaniowy i wielodostępny.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 1: Wprowadzenie. Pojęcia podstawowe
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Systemy operacyjne.
Magistrala & mostki PN/PD
Systemy operacyjne Bibliografia:
Komputer, procesor, rozkaz.
Temat nr 10: System przerwań
Budowa systemów operacyjnych czasu rzeczywistego
Wstęp do interpretacji algorytmów
ZARZĄDZANIE PROCESAMI
Język Java Wielowątkowość.
Semafory według normy POSIX
14. WĄTKI Procesy w tradycyjnym sensie (tworzone przez wykonanie funkcji fork) mają przydzielaną oddzielną przestrzeń adresową. W przestrzeni tej jest.
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Programowanie współbieżne
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
Pamięć wspólna Opis własnego rozwiązania Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
Zasada działania komputera
Budowa systemu komputerowego
Elementy składowe komputera
Autor: Justyna Radomska
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Etapy pracy biosu.
Podstawowe usługi systemów operacyjnych
Mikroprocesory.
Mikroprocesory mgr inż. Sylwia Glińska.
W jaki sposób użytkownik komunikuje się z komputerem?
Problem sekcji krytycznej
Przerwanie ang. interrupt.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Pamięć komputerowa S t r u k t u r a p a m i ę c i.
M i k r o j ą d r o D e f i n i c j a. M i k r o j ą d r o to rodzaj jądra systemu operacyjnego, które zawiera tylko najbardziej niezbędne elementy, takie.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Spis treści Architektura systemu windows Pamięć wirtualna Plik wymiany
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Algorytmika.
System plików.
Procesor, pamięć, przerwania, WE/WY, …
Pamięć RAM Pamięć RAM.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Oprogramowaniem (software) nazywa się wszystkie informacje w postaci zestawu instrukcji i programów wykonywanych przez komputer oraz zintegrowanych danych.
Struktura systemu operacyjnego
Wstęp do interpretacji algorytmów
Tryby adresowania i formaty rozkazów mikroprocesora
Podział sieci IP na podsieci w ramach CISCO
Wstęp do programowania Wykład 7
Zarządzanie projektami
Systemy operacyjne Wykład 6 Procesy dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki 1.
Format rozkazu Tryby adresowania.
Zapis prezentacji:

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE Procesy, wątki, wielozadaniowość

Proces

Wielozadaniowość i wieloprocesorowość równoległa Wątek = sekwencja instrukcji Proces = kontekst + wątki Jeden procesor może wykonywać tylko jeden wątek na raz Wielozadaniowość z wywłaszczaniem Przełączanie kontekstów Każdy proces ma ten sam zakres adresów pamięci

Wielozadaniowość i wielodostęp jednozadaniowość - kolejne zadanie wykonywane po zakończeniu poprzedniego wielozadaniowość - wykonywanie wielu zadań w „tym samym” czasie. W rzeczywistości zadania są wykonywane kolejno w przydzielonych im przedziałach czasowych (chyba że jest kilka procesorów) wielodostęp - w tym samym czasie z jednego komputera korzysta wielu użytkowników

ZARZĄDZANIE PROCESAMI Intuicyjnie przez proces rozumiemy ciąg kolejno wykonywanych przez procesor i logicznie powiązanych ze sobą instrukcji. Z punktu widzenia systemu operacyjnego każdy proces jest skojarzony z logiczną strukturą danych utrzymywaną przez jądro systemu i zawierającą niezbędne informacje pozwalające systemowi decydować, kiedy proces powinien być wykonywany, a kiedy zawieszony, kiedy jakie zasoby systemowe może mieć przydzielone, czy należy czasowo zawartość jego segmentów pamięci przepisać na dysk do pliku wymiany, jakim kosztem jego wykonywania należy obciążyć jego właściciela itp.

Ogólny graf stanów procesu: Nowy zatrzymany nowy gotowy aktywny Co należy znać, aby scharakteryzować jakiś proces w pewnym momencie jego wykonywania ? - kod binarny jego programu; - dane zapisane w pamięci (wartości stałych i aktualne wartości zmiennych); - zawartość stosu; - zawartości rejestrów procesora, a w szczególności wskaźnika instrukcji; - usytuowanie programu, danych i stosu w pamięci; - aktualny przydział zasobów (np. dostęp do urządzeń zewnętrznych); i wiele innych danych przechowywanych przez system operacyjny. W szczególności trzeba znać aktualny stan procesu. czekający

Podstawowe dane o procesie wykorzystywane przez system operacyjny do planowania i zarządzania są zebrane w pamięci jądra systemu w postaci bloku kontrolnego procesu (Process Control Block). Zawartość pamięci operacyjnej przydzielonej procesowi oraz informacje przechowywane w bloku kontrolnym nazywamy kontekstem procesu.

Podstawowe dane o procesie na ogół zawiera on następujące informacje: - identyfikator procesu; - stan procesu (np. wg diagramu na poprzedniej stronie); - stan rejestrów procesora (utrwalony w momencie czasowego zawieszenia procesu); - informacje istotne dla planowania przydziału procesora (priorytet procesu, wskaźniki do położeń w kolejkach szeregujących zamówienia na zasoby itp.); - informacje istotne dla zarządzania pamięcią (zawartości rejestrów bazowych i granicznych, tablic stron w pamięci itp.); - informacje do rozliczeń (zużyty czas procesora, zużyte czasy wykorzystania urządzeń zewnętrznych, ograniczenia czasowe, numer rachunku i in.); - informacje o stanie przydziału urządzeń zewnętrznych procesowi (urządzenia aktualnie przydzielone, zamówienia oczekujące na realizację, wykaz otwartych plików itp.).

Dwa procesy nazywamy współbieżnymi, jeżeli każdy z nich rozpoczął się przed zakończeniem drugiego procesu. Przykłady 1) procesy są współbieżne 2) 3) procesy nie są współbieżne t t t Uwaga. O współbieżności możemy mówić zarówno w przypadku wykonywania procesów na tym samym komputerze, jak i na oddzielnych komputerach.

W literaturze można napotkać następujące określenia:  współbieżny (concurrent)  równoległy (parallel)  rozproszony (distributed) Są one używane w różnych kontekstach. Zazwyczaj pierwsze dwa używane są zamiennie, przy czym nieco częściej określenie „równoległy” oznacza „wykonywany współbieżnie na tym samym komputerze”. Natomiast określenie „rozproszony” oznacza „wykonywany współbieżnie na oddzielnych komputerach połączonych w sieć”.

Obliczenia równoległe (na jednym komputerze) mogą odbywać się jako: 1) rzeczywiście równoległe - jeśli komputer ma wiele procesorów i każdy procesor obsługuje co najwyżej jeden proces w dowolnej chwili czasu; 2) pozornie równoległe - jeśli czas pracy jednego procesora dzielony jest na krótkie odcinki przydzielane różnym procesom na zasadzie przeplotu.

Współbieżność wykonywania procesów jest opłacalna ze względu na: 1) lepsze wykorzystanie zasobów fizycznych (sprzętu); 2) lepsze wykorzystanie zasobów logicznych (na przykład informacji zawartych w plikach); 3) przyspieszenie obliczeń (jeśli są wykonywane w warunkach rzeczywistej równoległości); 4) ułatwienie konstrukcji dużych programów (modularność); 5) wygoda użytkowników (przykład: kopiowanie za pośrednictwem schowka w Windows).

Dwa procesy współbieżne nazywamy niezależnymi, jeżeli fakt wykonywania któregokolwiek z nich w żaden sposób nie wpływa na wykonywanie drugiego. W przeciwnym przypadku procesy nazywamy zależnymi lub współpracującymi. Uwaga W rzeczywistości to, czy dwa procesy uznamy za niezależne, czy za zależne, w wielu przypadkach zależy od poziomu abstrakcji (ignorowania szczegółów) na jakim rozpatrujemy działanie tych procesów.

Własności procesu niezależnego: - żaden inny proces nie komunikuje się z nim (nie wpływa na jego kontekst); - działa deterministycznie (wynik zależy wyłącznie od danych i stanu początkowego); - może być dowolną liczbę razy wstrzymywany i wznawiany.

Własności procesu współpracującego: - jego bieżący stan jest zależny zarówno od jego poprzedniego stanu, jak i od stanów innych procesów; - może wykazywać niedeterminizm (obliczane wyniki mogą zależeć od względnej kolejności wykonywania procesów w systemie); - zachowanie procesu może nie być przewidywalne (na przykład może czasem zapętlać się, a czasem nie). Uwaga Programy współbieżne powinny być projektowane tak, aby nie wykazywały losowości wykonania.

Tradycyjnie procesy w systemie wykonują się w odrębnych przestrzeniach adresowych pamięci, mogąc komunikować się ze sobą jedynie za pośrednictwem plików lub łączy komunikacyjnych. Takie procesy nazywane są czasem procesami ciężkimi (ich utworzenie wiąże się z dość dużym narzutem czasowym ze strony systemu operacyjnego). Dużo później, niż koncepcja procesu pojawiła się koncepcja wątku (thread), nazywanego też procesem lekkim. Zbiór wątków pracujących nad wspólnym zadaniem obliczeniowym wykonuje wspólny kod programu (co najwyżej różne jego podprogramy) i operuje we wspólnej przestrzeni adresowej.

Uwaga Rzeczywisty obraz sytuacji we współczesnych systemach operacyjnych jest bardziej skomplikowany, niż by wynikało z powyższych definicji. Procesy ciężkie mogą mieć wspólny segment kodu (gdyż jest on przeznaczony tylko do odczytu), dopóki jeden z nich nie wczyta nowego kodu z pliku. Mogą też współdzielić segment danych, dopóki jest on wykorzystywany przez nie tylko do odczytu. Ponadto mogą mieć przydzielony dodatkowy segment pamięci wspólnej (dzielonej), który jest wykorzystywany jako jeden z możliwych środków komunikacji międzyprocesowej.

Wątki posiadają najbardziej istotne cechy procesów - dysponują własnymi zestawami rejestrów, a w szczególności wskaźnikami instrukcji (zatem mają przydzielone procesory - rzeczywiste lub wirtualne). Mają też własne stosy (więc mogą wywoływać funkcje). Wiele cech wątków zależy od konkretnej implementacji - w Linuksie zaimplementowana jest biblioteka wątków odpowiadająca normie POSIX (pthread).

proces jednowątkowy proces wielowątkowy procesor 1 program procesor 2 IP dane procesor 2 procesor n procesor 1 proces jednowątkowy proces wielowątkowy

Jeżeli jeden proces powołuje do życia drugi proces, to ten pierwszy jest nazywany procesem rodzicielskim, a ten drugi - procesem potomnym. Tylko proces rozpoczynający pracę systemu operacyjnego nie ma swojego procesu rodzicielskiego. Proces potomny może otrzymać wstępny przydział zasobów wprost od systemu operacyjnego (niezależnie od zasobów dzierżawionych przez proces rodzicielski), ale zazwyczaj dziedziczy zasoby procesu rodzicielskiego. W szczególności dziedziczy zawartość segmentów pamięci operacyjnej - kod programu i dane. Proces rodzicielski może też przekazać swojemu potomkowi pewne dane początkowe (wartości zmiennych środowiska).

Możliwe są dwa scenariusze wykonywania procesów: 1) proces rodzicielski zostaje zawieszony aż do zakończenia pracy jego procesu potomnego (tak jest na przykład w systemie DOS); 2) proces rodzicielski i wszystkie jego procesy potomne wykonują się współbieżnie (tak jest na przykład w systemie Unix); Możliwe sposoby zakończenia procesu: 1) zakończenie naturalne (dojście do ostatniej instrukcji, przekazanie informacji rodzicowi); 2) zakończenie przedwczesne (usunięcie przez inny, uprawniony do tego proces);

Jeżeli nastąpi zakończenie procesu, który ma współbieżnie wykonywane procesy potomne, to również możliwe są różne scenariusze: 1) może nie mieć to wpływu na wykonywanie procesów potomnych (w systemie Unix są one „adoptowane” przez systemowy proces Init (numer 1) i od tej chwili pamiętają jego numer jako numer procesu rodzicielskiego); 2) może nastąpić natychmiastowe usunięcie wszystkich procesów potomnych, ich potomków itd. (całego „drzewa enealogicznego” procesów) - jest to tak zwane zakończenie kaskadowe. Powyższe określenia i scenariusze dotyczyły procesów w tradycyjnym sensie (procesów ciężkich). W przypadku wątków relacje pomiędzy rodzicami i potomkami są bardziej zatarte i zależą od konkretnej implementacji. Na ogół implementatorzy dążą do tego, aby wątki wykonywane we wspólnej przestrzeni adresowej dostrzegały się wzajemnie jako równoprawne „rodzeństwo”, niezależnie od tego, który z nich w rzeczywistości zainicjował utworzenie którego wątku.

Zatrzymanie lub zawieszenie wykonywania procesu przez procesor może nastąpić wskutek: 1) zakończenia procesu; 2) przejścia do stanu oczekiwania (na przydział urządzenia zewnętrznego lub przekazanie informacji o zakończeniu procesu potomnego); 3) przerwania (związanego z upływem kwantu czasu lub nastąpieniem oczekiwanego czy nieoczekiwanego zdarzenia). Jeżeli zmiana przydziału procesora może nastąpić tylko w przypadku 1) lub w przypadku 2) ale tylko na czas oczekiwania na przydział urządzenia, mówimy o niewywłaszczeniowym algorytmie przydziału procesora. W pozostałych przypadkach mówimy o algorytmie wywłaszczeniowym.

Zmiana przydziału procesora wiąże się z: 1) zapamiętaniem parametrów dotychczasowego procesu (zawartości rejestrów procesora itd.) w bloku kontrolnym procesu (jeśli proces ma być jeszcze kontynuowany); 2) załadowaniem parametrów kolejnego procesu wybranego przez planistę (nowego lub kontynuowanego). Zespół czynności systemu operacyjnego wiążący się z 1) i 2) nazywany jest przełączaniem kontekstu. Od prędkości przełączania kontekstu w istotnym stopniu zależy wydajność systemu.

Pytania Daj możliwość zadania pytań dotyczących prezentacji.