Systemy operacyjne. Plan wykładu

Wielkość: px
Rozpocząć pokaz od strony:

Download "Systemy operacyjne. Plan wykładu"

Transkrypt

1 Systemy operacyjne / wykład 1 1 Plan wykładu Systemy operacyjne 1. Wprowadzenie 1.1. Podstawowe definicje 1.2. Model i implementacja procesów 1.3. Tryby przetwarzania 1.4. Historia rozwoju SO 2. Programowanie w języku powłoki sh 2.1 Wprowadzenie 2.2 Zmienne powłoki 2.3 Metaznaki i rozpoznawanie wzorców 2.4 Zasady substytucji 2.5. Przeadresowywanie we-wy 2.6. Procedury powłoki 3. Koncepcje i struktury SO 3.1. Struktura monolityczna 3.2. Struktura warstwowa

2 Systemy operacyjne / wykład Maszyny wirtualne 3.4. Model klient-serwer 3.5. Windows NT 4. Jądro hipotetycznego SO - system MINIX 4.1. Struktura systemu MINIX 4.2. Graf stanów procesu 4.2. Warstwy systemu MINIX 5. System plików 5.1. Wprowadzenie 5.2. Charakterystyka systemu plików 5.3. Sposoby implementacji systemu plików 6. Komunikacja między procesami 6.1. Warunki wyścigu 6.2. Sekcje krytyczne i wzajemne wykluczanie 6.3. Przegląd implementacji wzajemnego wykluczania 6.4. Semafory

3 Systemy operacyjne / wykład Monitory 6.6. Komunikaty 7. Algorytmy szeregowania 7.1. Klasyfikacja algorytmów szeregowania 7.2. Informacje wykorzystywane w algorytmach szeregowania 7.3. Kryteria szeregowania 7.4. Zdarzenia powodujące ponowne szeregowanie 7.5. Przegląd algorytmów szeregowania 8. Zarządzanie pamięcią 8.1. Wprowadzenie 8.2. Pamięć dzielona 8.3. Algorytmy alokacji 8.4. Pamięć wirtualna 8.5. Stronicowanie 8.6. Algorytmy wymiany 8.7. Efektywność funkcjonowania pamięci wirtualnej 8.8. Segmentacja

4 Systemy operacyjne / wykład Zarządzanie urządzeniami zewnętrznymi 9.1. Wprowadzenie 9.2. Programy obsługi UZ 9.3. Przykładowe realizacje 10. Blokady 10.1 Model systemu 10.2 Warunki konieczne istnienia blokady 10.3 Graf przydziału zasobów 10.4 Metody postępowania z blokadami 11. Wprowadzenie do rozproszonych systemów operacyjnych Definicja i właściwości rozproszonego systemu operacyjnego Rozproszony system opracyjny jako maszyna wirtualna Problemy implementacyjne Rozproszony system operacyjny Amoeba

5 Systemy operacyjne / wykład 1 5 Podstawowe definicje Wprowadzenie Def. System Operacyjny SO jest to zbiór programów i procedur spełniających dwie podstawowe funkcje: 1. zarządzanie zasobami systemu komputerowego, 2. tworzenie maszyny wirtualnej. Zasobem systemu jest kaŝdy jego element sprzętowy lub programowy, który moŝe być przydzielony danemu procesowi. Przez zasoby sprzętowe rozumiemy: czas procesora, pamięć operacyjną, urządzenia zewnętrzne, inne komputery powiązane poprzez sieć teleinformatyczą.

6 Systemy operacyjne / wykład 1 6 Przez zasoby programowe rozumiemy: procedury SO realizujące funkcje dostępne poszczególnym procesom pliki bufory semafory tablice systemowe itp. Rozpatrując SO jako zarządcę zasobów moŝna stwierdzić, Ŝe powinien on w ogólności: śledzić zasoby systemu, narzucać strategię, która określa odbiorcę, rodzaj zasobu, moment przydziału i ilość zasobu, przydzielać zasób, odzyskiwać zasób.

7 Systemy operacyjne / wykład 1 7 Tworzenie maszyny wirtualnej polega na przekształceniu maszyny rzeczywistej w maszynę o cechach wymaganych przez przyjęty tryb przetwarzania rozumiany jako przeznaczenie SK. Przekształcenie to dotyczy takich elementów SK jak: wejścia-wyjścia, pamięci operacyjnej, systemu plików, ochrony zasobów i obsługi błędów, komunikacji i synchronizacji procesów, sterowania programami i pracami.

8 Systemy operacyjne / wykład 1 8 Abstract View of System Components

9 Systemy operacyjne / wykład 1 9 W wielu SO moŝna wyróŝnić bardziej szczegółowo następujące funkcje: reakcji na przerwania z procesora i UZ z jednoczesnym wykrywaniem: awarii sprzętu, nieprawidłowego dostępu do SO procesów uŝytkowych, realizacji operacji podstawowych umoŝliwiających: tworzenie (instalowanie procesów) szeregowanie,wybieranie i likwidowanie, wzajemną współpracę procesów uŝytkowych i jądra. gospodarowania zasobami z uwzględnieniem efektywności ich wykorzystania, sprawiedliwego podziału i unikania zakleszczeń ( deadlock ) wynikających z braku zasobu organizacji współpracy P u z UZ, w tym równieŝ z plikami danych umieszczanych w pamięciach pomocniczych zapewnienie współpracy z operatorem systemu oraz wykonywanie czynności pomocniczych np. polegających na prowadzeniu księgowości wykorzystania zasobów SK.

10 Systemy operacyjne / wykład 1 10 Model i implementacja procesu Def. Proces stanowi podstawowy obiekt dynamiczny w systemie i rozumieć go będziemy jako wykonujący się program wraz z jego środowiskiem obliczeniowym tzn. przestrzenią adresową procesu, zawartością rejestrów, otwartymi plikami, zbiórem zmiennych widocznych w otoczeniu procesu, np. $HOME, $PATH itd. W systemie Unix przestrzeń adresowa procesu składa się z: segmentu kodu programu (text segment)

11 Systemy operacyjne / wykład 1 11 segmentu danych (data segment) segmentu stosu (stack segment) segmentu dzielonego (shared segment) Nowo tworzonemu procesowi przydzielane są dwie struktury danych: pozycja w tablicy procesów (process table) u-obszar (u-area) zawierający prywatne dane. Pozycja w tablicy procesów wskazuje na strukturę zwaną proc structure, która ma następujące pola: pole stanu, które identyfikuje stan procesu pole z informacją, która pozwala jądru zlokalizować proces i jego u-obszar w pamięci głównej (rys.1) identyfikatory procesu (PID) oraz identyfikatory wskazujące uŝytkownika, który jest właścicielem procesu (UID) deskryptor zdarzenia ustawiany w chwili zawieszania procesu

12 Systemy operacyjne / wykład 1 12 parametry szeregowania umoŝliwiające jądru określenie porządku, w jakim procesy maja przydzielany procesor pole sygnałów, w którym zlicza się sygnały wysłane do procesu i jeszcze nie obsłuŝone róŝne liczniki rejestrujące czas wykonania procesu oraz wykorzystania zasobów jądra. Struktura ta cały czas pozostaje w pamięci głównej, natomiast U-obszar jest wymiatany (swapped out) z procesem z pamięci. U-obszar zawiera informacje, które muszą być dostępne tylko wtedy, gdy proces jest wykonywany. WaŜnymi polami są: wskaźnik do pozycji w tablicy procesów, odpowiadającej wykonywanemu procesowi argumenty bieŝącego wywołania funkcji systemowej, wartości zwracane z funkcji i kody błędów deskryptory wszystkich otwartych plików

13 Systemy operacyjne / wykład 1 13 wewnętrzne argumenty wejścia-wyjścia bieŝący katalog i bieŝący korzeń ograniczenia na rozmiar procesu i pliku. Def. Konteksem procesu jest jego stan, tak jak definiują go jego instrukcje, wartości zmiennych globalnych i struktur danych uŝytkownika, wartości uŝywanych przez niego rejestrów komputera, wartości zapamiętane w odpowiadającej mu pozycji w tablicy procesów i u-obszarze oraz zawartość związanych z nim stosów uŝytkownika i jądra. Instrukcje SO i jego globalne struktury danych są dzielone przez wszystkie procesy, lecz nie stanowią części konteksu Ŝadnego z nich. Podczas wykonywania procesu mówimy, Ŝe system wykonuje się w kontekście tego procesu. Kiedy zostaje podjęta decyzja, Ŝe jądro powinno zacząć wykonywać inny proces, wówczas dokonuje się przełączenie konteksu i system wykonuje się w konteksie tego nowego procesu.

14 Systemy operacyjne / wykład 1 14 Stany procesu W Ŝyciu procesu moŝna wyróŝnić stany, z których kaŝdy ma pewne właściwości charakteryzujące proces. W systemie Unix moŝna wymienić: Pracujący (runnig) w trybie uŝytkownika, tzn. proces wykonuje się w trybie uŝytkownika; Pracujący (runnig) w trybie jądra, tzn. proces wykonuje się w trybie jądra; Gotowy (ready) tzn. proces nie wykonuje się, lecz jest gotów do wykonania i czeka, aŝ zostanie wybrany przez algorytm szeregujący; Zawieszony (blocked) tzn. proces nie moŝe kontynuować wykonania, gdyŝ czeka na zajście pewnego zdarzenia np. czeka na zakończenie operacji wewy.

15 Systemy operacyjne / wykład 1 15 Przejścia między stanami Opisane stany procesów dają statyczny obraz procesu, lecz procesy stale przemieszczają się między stanami zgodnie z dobrze określonymi regułami. Diagram przejść międzystanowych jest grafem skierowanym, którego węzły reprezentują stany, w jakich moŝe znaleźć się proces, a krawędzie - zdarzenia, powodujące przejście procesu z jednego stanu do drugiego (rys.2). Procesy mogą działać w systemie współbieŝnie. Oznacza to, Ŝe CPU dzieli swoją moc obliczeniową między wiele procesów jednocześnie. Proces moŝe tworzyć nowe procesy za pomocą funkcji systemowej np. w systemie UNIX nosi ona nazwę fork. Proces tworzący nowe procesy nazywany jest procesem macieŝystym, a utworzone przez niego procesy potomkami. KaŜdy z potomków moŝe z koleji tworzyć nowe procesy, w wyniku czego powstaje w systemie struktura hierarchiczna procesów.

16 Systemy operacyjne / wykład 1 16 Wywołanie systemowe fork Wywołanie fork tworzy nowy proces potomny, który stanowi obraz procesu macierzystego. Obraz ten zawiera następujące elementy: wspólny ( bądź nie) kod programu (shared text) dane (data) stos uŝytkownika (user stack) u-obszar (u-area bądź user structure) stos systemowy (kernel stack). Wywołanie fork wykonuje się w 4 poziomach SO, a mianowicie: 1. poziom programu w języku C 2. poziom wywołań procedur bibliotecznych w obszarze uŝytkownika 3. poziom przesłania (transferu) wywołania z obszaru uŝytkownika do obszaru jądra i odwzorowanie w procedurę obsługi jądra 4. poziom wywołań procedur obsługi jądra.

17 Systemy operacyjne / wykład 1 17 Wywołanie fork jest bezargumentowe i zwraca 3 wartości: w przypadku błędu zwraca -1 w trybie normalnym: 0 - proces potomny > 0 - proces macierzysty Przykład wywołania fork pid = fork(); if (pid == -1) {error, fork faild} else if (pid!= 0) {parent} else {child}

18 Systemy operacyjne / wykład 1 18 Kiedy proces tworzy nowy proces, wtedy w odniesieniu do jego działania praktykuje się dwojakie postępowanie: proces macierzysty kontynuuje działanie współbieŝne ze swoimi potomkami proces macierzysty oczekuje, dopóki wszystkie jego procesy potomne nie zakończą pracy. Procesy wykonywane w SO mogą być niezaleŝne albo mogą ze sobą współpracować. Proces jest niezaleŝny, jeśli nie moŝe wpływać na zachowanie innych procesów ani inne procesy nie mogą na niego oddziaływać. Proces niezaleŝny ma następujące właściwości: na jego stan nie wpływa inny proces jego działanie jest deterministyczne, tzn. wynik pracy zaleŝy wyłącznie od stanu we;

19 Systemy operacyjne / wykład 1 19 jego działanie daje się powielać, tzn. wynik pracy jest zawsze taki sam przy takich samych danych jego wykonanie moŝe być wstrzymywane i wznawiane bez Ŝadnych szkodliwych skutków. KaŜdy proces, który nie dzieli Ŝadnych danych z innym procesem, jest procesem niezaleŝnym. Proces jest współpracujący, jeśli oddziałuje na inne procesy w systemie lub moŝe ulegać ich wpływom. Proces taki ma następujące właściwości: jego stan jest dzielony wraz z innymi procesami

20 Systemy operacyjne / wykład 1 20 nie da się określić z góry wyniku działania procesu, poniewaŝ zaleŝy on od względnej kolejności jego wykonywania wynik działania procesu współpracującego jest niedetrministyczny, gdyŝ moŝe nie być taki sam przy tych samych danych we. Mówiąc zwięźle, dowolny proces, który dzieli jakieś dane z innymi procesami jest procesem współpracującym. Procesy współpracujące mogą zatem bezpośrednio dzielić przestrzeń adresów logicznych (tj. zarówno kod, jak i dane) lub moŝe im być wolno dzielić dane wyłącznie za pośrednictwem plików. Pierwszy przypadek dotyczy tzw. procesów lekkich, czyli wątków ( thread ). Def.2. Wątek jest jednostką podstawową wykorzystania procesora. Stan wątku jest zdefiniowany ilością odrębnych danych. Grupa równoprawnych wątków dzieli kod, przestrzeń adresową i zasoby SO. Środowisko, w którym działa wątek,nazywa się zadaniem (task). Tradycyjny (cięŝki) proces jest równowaŝny zadaniu z jednym tylko wątkiem.

21 Systemy operacyjne / wykład 1 21 Abstrakcyjna konstrukcja grupy lekkich procesów polega a tym, Ŝe wiele wątków sterowania jest powiązanych z kilkoma zasobami dzielonymi. Istnieje sporo alternatywnych sposobów traktowania wątków: Mach, OS/2, Andrew. Wątki zyskują na popularności poniewaŝ, mając pewne cechy cięŝkich procesów, są efektywniejsze w działaniu. Tryby przetwarzania Podstawowym czynnikiem, mającym wpływ na konstrukcję SO jest przeznaczenie systemu komputerowego, określane jako tryb jego pracy. WyróŜniamy trzy zasadnicze tryby pracy:

22 Systemy operacyjne / wykład 1 22 pośredni, wsadowy (off-line, bath) bezpośredni, interakcyjny (on-line) na bieŝąco, w czasie rzeczywistym (real-time). Przedstawiony podział jest umowny, gdyŝ w jednym systemie mogą występować róŝne tryby pracy i często ich łączenie podnosi efektywność pracy całego systemu. Tryb wsadowy Tryb wsadowy polega na autonomicznym wykorzystaniu komputera przy nieobecności uŝytkownika. Praca przeznaczona do wykonania jest składowana przez uŝytkownika w ośrodku. Prace są przetwarzane według następujących zasad:

23 Systemy operacyjne / wykład 1 23 prace wczytywane są kolejno do pamięci pomocniczej, gdzie są porządkowane według waŝności i Ŝądań obciąŝenia systemu komputerowego (czas wykonania, zajętość pamięci i tp) prace są wykonywane kolejno, jedna po drugiej, a wystąpienie błędu w wykonaniu powoduje usunięcie pracy z systemu uŝytkownik nie ma Ŝadnego dostępu do maszyny w czasie wyknywania jego pracy wyniki wykonania pracy otrzymywane po jej zakończeniu mogą być opóŝnione ze względu na obciąŝenie drukarek. Zaletą takiego trybu pracy jest uzyskanie wysokiej przepustowości systemu komputerowego przez eliminację przestojów maszyny. Wadą zaś jest: długi okres oczekiwania na wyniki ograniczone moŝliwości szeregowania prac izolacja uŝytkownika od systemu komputerowego uniemoŝliwiająca bieŝącą kontrolę procesu wykonania.

24 Systemy operacyjne / wykład 1 24 Tryb bezpośredni (interakcyjny) Tryb ten polega na konwersacyjnym (dialogowym) współdziałaniu uŝytkownika z systemem komputerowym przy uŝyciu terminali komputera. UŜytkownik wprowadzając kolejne polecenia (kimendy) określa zadania do wykonania przez system. Szybkość przekazywania poleceń jest zaleŝna od uŝytkownika oraz gotowości systemu do przyjęcia następnego polecenia. Najczęściej sekwencja współpracy z systemem komputerowym jest następująca: znak zachęty polecenie_uŝyt odpowiedź znak zachęty... Zaletą takiego trybu pracy jest: moŝliwość na bieŝąco zadawania poleceń zaleŝnie od otrzymanych wyników i wykrytych błędów krótki czas oczekiwania na wyniki

25 Systemy operacyjne / wykład 1 25 udostępnienie całego systemu uŝytkownikowi duŝa efektywność pracy uŝytkownika. Wadą jest małe wykorzystanie systemu ze względu na długi okres oczekiwania na polecenia. Tryb czasu rzeczywistego Zasada działania SO w trybie czasu rzeczywistego jest analogiczna do trybu bezpośredniego. RóŜnica polega na roli uŝytkownika systemu. W tym przypadku jest to proces technologiczny, zgłaszający się do systemu komputerowego z szybkością zaleŝną od jego przebiegu. MoŜna wyróŝnić dwa podejścia: system jest zobowiązany do reagowania na zgłoszenia (zdarzenia zewnętrzne) w ustalonym nieprzekraczalnym okresie, system bada okresowo stan procesu technologicznego, przy czym okresy te są ustalane w zaleŝności od właściwości procesu i występujących zakłóceń.

26 Systemy operacyjne / wykład 1 26 Reakcja systemu komputerowego na aktualny stan kontrolowanego procesu technologicznego obejmuje: informowanie operatora o przebiegu procesu bieŝące sterowanie procesem technologicznym. Konfiguracja sprzętowa takiego systemu zawiera urządzenia zewnętrzne będące przetwornikami analogowo-cyfrowymi i cyfrowo-analogowymi oraz urządzenia do informowania operatora.

27 Systemy operacyjne / wykład 1 27 Krótka historia systemów komputerowych Historię rozwoju systemów komputerowych moŝna podzielić na pięć okresów, określanych mianem generacji, a mianowicie: Pierwsza generacja: lampy próŝniowe ( ) ENIAC - Electronic Numerical Integrator and Computer ( elektroniczne urządzenie numeryczne całkujące i liczące) - zbudowany na Uniwersytecie Pensylwania przez J. Eckerta. i J. Mauchly. zbudowany w latach , wykorzystywany do 1955, 30 ton, 1400 m 2, 18 tys. lamp próŝniowych, 140 kw, 5000 operacji dodawania na sekundę, 20 rejestrów na 10-cyfrowe liczby dziesiętne, główna wada programowanie przez ustawianie przełączników i wtykanie i wyjmowanie kabli.

28 Systemy operacyjne / wykład 1 28 Wśród twórców komputerów pierwszej generacji na szczególną uwagę zasługuje John Von Neumann. W 1944 John Von Neumann sformułował następujące załoŝenia: 1. Współczesny komputer powinien posiadać: pamięć złoŝoną z elementów przyjmujących stany 0 lub 1, arytmometr, który wykonuje działania arytmetyczne, logiczne i inne, moŝliwość wprowadzania danych i wyprowadzania wyników oraz sterowania. 2. Działanie komputera związane jest z realizacją programu i obróbką danych zakodowanych w pamięci. Program moŝe zawierać rozkazy warunkowe, które umoŝliwiają rozgałęzienia i skoki, moŝe się takŝe modyfikować podczas wykonywania.

29 Systemy operacyjne / wykład 1 29 Struktura maszyny von Neumanna Arithmetic and Logic Unit Input Output Equipment Main Memory Program Control Unit

30 Systemy operacyjne / wykład 1 30 Na tych zasadach w 1952 roku John Von Neuman zbudował na Uniwersytecie Princeton komputer o nazwie EDVAC (Electronic Discrete Variable Automatic Computer). Komputery komercyjne: UNIVAC I (1950), UNIVAC II pierwsze zapewnianie kompatybilności w stosunku do poprzedniego modelu, Oraz IBM IBM 701 (1953) do zastosowań naukowych, IBM 702 (1955) do zastosowań w biznesie pierwsze modele z flagowej serii 700/7000. Okres pierwszej generacji cechował brak systemu operacyjnego, programowanie w języku absolutnym maszyny, udostępnienie całego systemu uŝytkownikowi.

31 Systemy operacyjne / wykład 1 31 Druga generacja: tranzystory ( ) Tranzystor zastąpił lampy, mniejszy, tańszy, wydziela mniej ciepła, wykonany z krzemu, wynaleziony w Bell Laboratories w DEC (Digital Equipment Corporation) załoŝona w 1957, komputer PDP-1. Poza tranzystorami w trakcie drugiej generacji: zastosowano ulepszone języki programowania, zaczęto dostarczanie z komputerem oprogramowania systemowego.

32 Systemy operacyjne / wykład 1 32 Jako reprezentantów tej generacji moŝna wymienić: IBM1401 do wprowadzania i wyprowadzania danych, IBM7094 do obliczeń numerycznych. Okres drugiej generacji cechowało przetwarzanie wsadowe. Trzecia generacja: układy scalone (ICs) ( ) Zastąpienie elementów dyskretnych układami scalonymi. Układy scalone wynaleziono w 1958 roku. Jako reprezentantów tej generacji moŝna wymienić: IBM System 360 i 370 (cena kilkaset tysięcy dolarów), PDP-8 w ciągu 12 lat sprzedano około 50 tysięcy maszyn (cena ok. 16 tys. dolarów),

33 Systemy operacyjne / wykład 1 33 Okres ten cechowały: wieloprogramowanie - równoczesne wykonywanie kilku programów przez jedną maszynę, zrealizowane poprzez podział pamięci, spooling (Simultaneous Pheripheral Operation On Line) - współbieŝne wykonywanie operacji we/wy np. wczytywanie zadania z kart dziurkowanych do pamięci pomocniczej współbieŝnie z aktualnie wykonywanym zadaniem przez CPU, wielodostępność i podział czasu - SO dzieli czas CPU między wielu uŝytkowników mających dostęp do systemu przy uŝyciu terminali. Pierwszym systemem tego typu opracowanym w MIT dla IBM7094 był CTSS (Corbato TimeSharing System), który stał się pierwowzorem dla systemu MULTICS (MULTiplexed Information and Computing Service). System ten został zaprojektowany w Bell Labs dla maszyny GE645 (1969).

34 Systemy operacyjne / wykład 1 34 Dalsze podziały na generacje są umowne. Czwarta generacja: wielka skala integracji ( ) Okres czwartej generacji cechowały wszystkie rodzaje przetwarzania. Piąta generacja: bardzo wielka skala integracji ( ) Okres piątej generacji cechuje szerokie zastosowanie komputerów osobistych a w późniejszym czasie przetwarzania równoległego i rozproszonego.... Kolejne generacje (???)

35 Systemy operacyjne / wykład 1 35 Migration of Operating-System Concepts and Features

36 Systemy operacyjne / Programowanie w języku powłoki 1 Programowanie w języku powłoki sh Powłoka (interpreter poleceń, ang. shell) jest programem uruchamianym standardowo po otwarciu sesji uŝytkownika przez proces login. Powłoka jest aktywna aŝ do wystąpienia znaku <EOT>, który powoduje jej zatrzymanie i zgłoszenie tego faktu do jądra systemu. KaŜdy uŝytkownik otrzymuje własny i odrębny egzemplarz sh. Program sh wypisuje monit $ na ekranie, dając znać o swojej gotowości do przyjęcia polecenia (komendy). Sh funkcjonuje wg następującego schematu: 1. wypisuje monit, 2. czeka na wprowadzenie tekstu z klawiatury, 3. analizuje wiersz polecenia i znajduje program, 4. zleca jądru wykonanie programu, 5. przyjmuje odpowiedź od jądra, ponownie wypisuje monit.

37 Systemy operacyjne / Programowanie w języku powłoki 2 W czasie inicjalizacji powłoki przypisywane są wartości zmiennym powłoki, a następnie wykonywany jest skrypt systemowy definiujący dalsze elementy otoczenia powłoki. Dla sh oraz ksh skrypt ten nosi nazwę.profile, dla csh.login oraz.cshrc. W zaleŝności od typu interpretera poleceń lista plików inicjacyjnych moŝe być bardzo rozbudowana. Przykładowo, lista plików inicjacyjnych dla interpretera zsh jest następująca: /etc/zprofile /etc/zlogin /etc/zshrc /etc/zshenv... oraz ich odpowiedniki kropkowe w katalogu domowym uŝytkownika.

38 Systemy operacyjne / Programowanie w języku powłoki 3 UŜytkownik i jego otoczenie W systemie Unix wyróŝnia się dwa rodzaje uŝytkowników: zwykli, systemowi (superuŝytkownicy, ang. superusers). KaŜdy nowy uŝytkownik musi być włączony do systemu przez uŝytkownika systemowego - pełniącego funkcje administratora systemu. Do pliku /etc/passwd wpisywane są następujące informacje: nazwa uŝytkownika, hasło, uid (ang. user identification), gid (ang. group identification),

39 Systemy operacyjne / Programowanie w języku powłoki 4 informacja o uŝytkowniku, katalog domowy uŝytkownika, nazwa powłoki inicjowanej po otwarciu sesji. Przykład Wiersz z pliku /etc/passwd moŝe wyglądać następująco: labsou8:hasło zakodowane:201:50::/usr/labsou8:/bin/sh Numer uŝytkownika uid słuŝy do identyfikacji uŝytkownika w systemie. Na jego podstawie jest ustalana przez system nazwa uŝytkownika oraz jego przywileje. Najbardziej uprzywilejowany uŝytkownik ma numer uid = 0. Numer ten nadaje mu prawa do modyfikacji treści i atrybutów wszystkich plików i katalogów oraz do przerywania działania dowolnych procesów.

40 Systemy operacyjne / Programowanie w języku powłoki 5 Numer grupy gid jest identyfikatorem grupy, do której moŝe naleŝeć kilku uŝytkowników. Łączenie uŝytkowników w grupy pozwala na nadawanie praw dostępu do plików tylko dla członków grupy. Grupa jest wpisywana do pliku /etc/group. Plik ten zawiera następujące informacje o grupach: nazwa grupy, hasło grupy, numer grupy, listę uŝytkowników naleŝących do grupy. Przykład Wiersz pliku /etc/group group: :50:labsou1,labsou5,jacek,liza Do otoczenia uŝytkownika tworzonego przez powłokę inicjowaną przy otwieraniu sesji naleŝą zmienne powłoki.

41 Systemy operacyjne / Programowanie w języku powłoki 6 Zmienne powłoki Wśród zmiennych powłoki wyróŝniamy: 1. zmienne predefiniowane z wartością przypisywaną przy otwarciu sesji; 2. parametry powłoki, w których gromadzone są informacje dotyczące nazwy i argumentów aktualnie wywoływanej komendy. W przypadku powłoki sh zmiennymi predefiniowanymi są: HOME IFS MAIL - katalog standardowy dla komendy cd. Jest to zwykle katalog macierzysty (ang. home directory), - (ang.internal Field Separators) znaki separatorów rozdzielających elementy składniowe występujące w linii komendy, - jeŝeli zmiennej tej zostanie przypisana nazwa pliku mającego pełnić rolę pliku z wiadomościami (mail file), to powłoka będzie informować uŝytkownika o pojawieniu się w tym pliku wiadomości,

42 Systemy operacyjne / Programowanie w języku powłoki 7 PATH - ścieŝka poszukiwań programów, zawiera oddzielone od siebie znakiem dwukropka nazwy katalogów, w których powłoka będzie szukać plików komend wywoływanych przez uŝytkownika, PS1 - (ang. Prompt String 1) pierwszy znak zachęty powłoki, standardowo jest to znak,,$, PS2 - (ang. Prompt String 2) drugi znak zachęty powłoki. Standardowo jest to znak,,>, SHELL - przy wywołaniu nowej powłoki sprawdzana jest definicja zmiennej SHELL, TERM - rodzaj terminala stosowanego przez uŝytkownika np. vt100, TZ - (ang. Time Zone) strefa czasowa, TERMCAP- plik zawierający charakterystykę wybranego terminala. Wartość dowolnej zmiennej powłoki moŝna wyświetlić stosując komendę echo, np. $ echo $HOME Wartości wszystkich zmiennych moŝna wyświetlić komendą set.

43 Systemy operacyjne / Programowanie w języku powłoki 8 Postać poleceń $ nazwa_cmd arg1... arg9 Parametry powłoki $0 nazwa wywołanej komendy (cmd) $1 pierwszy argument (parametr) wywołania $2 drugi argument (parametr) wywołania : $9 dziewiąty argument (parametr) wywołania $* wszystkie argumenty wywołania jako łańcuch znaków tzn. "$1 $2... " $@ wszystkie argumenty wywołania jako łańcuch znaków "$@" = "$1" "$2"... $# liczba argumentów przekazanych przy wywołaniu lub przez set, $ opcje przypisane powłoce przy wywołaniu lub przez set, $? stan końcowy (ang. exit status) ostatnio wykonywanej komendy, $$ numer procesu aktualnie wykonywanej powłoki, $! numer procesu ostatnio wykonywanego procesu w tle.

44 Systemy operacyjne / Programowanie w języku powłoki 9 Metaznaki i rozpoznawanie wzorców Podczas opracowywania nazw plików oraz przy grupowaniu komend w większe całości stosuje się znaki o specjalnym znaczeniu dla interpretera nazywane metaznakami. * dowolny łańcuch znaków nie zawierający "/",? jeden dowolny znak, [ ] kaŝdy pojedyńczy znak ze zbioru zamkniętego w te nawiasy, [ ] jak [ ], w zakresie od pierwszego do ostatniego podanego znaku, [!..-...] w zakresie wszystkich oprócz od pierwszego do ostatniego znaku, # komentarz, \ (back slash) przywraca poprzedzonemu metaznakowi jego normalne literalne znaczenie, $ wartość zmiennej, ; koniec komendy, ` ` ' ' łańcuch w znakach akcentu jest wykonywany jak komenda, klamrowanie apostrofami jednoski tekstu powoduje uniknięcie jakichkolwiek podstawień (substytucji), " " klamrowanie cudzysłowem jednostki tekstu powodujeuniknięcie wszelkich podstawień za wyjątkiem: $ ` ` \

45 Systemy operacyjne / Programowanie w języku powłoki 10 Interpretacja komend przez powłokę sh odbywa się w następujący sposób: 1. wprowadzenie tekstu polecenia (ciągu znaków), 2. podzielenie ciągu znaków na ciąg słów w oparciu o zawarte w IFS seperatory, 3. substytucja 1: zastępowanie zmiennych powłoki tzn. zastępowanie metawyraŝeń o postaci ${słowo} ciągami znaków zawartymi w zmiennych wyspecyfikowanych przez słowo np. $ b=/usr/labsou $ ls -l prog.* > ${b}3 4. substytucja 2: rozszerzanie parametrów tzn. rozszerzenia słów zawierających metaznaki *? [ ] na odpowiednie nazwy plików w katalogu aktualnym, 5. substytucja 3: interpretacja łańcucha ujętego w znaki akcentu ` ` jako komendy i jej wykonanie.

46 Systemy operacyjne / Programowanie w języku powłoki 11 Przyjęto konwencję, Ŝe argumenty które nie są nazwami plików naleŝy poprzedzać znakiem minus -. Grupowanie komend w nawiasach Komendy mogą być grupowane w nawiasy: okrągłe ( ) klamrowe { } Nawiasy okrągłe ( ciąg_komend ) słuŝą do grupowania komend, które będą wykonywane jako samodzielny proces. Proces ten moŝe być równieŝ wykonywany w tle (&). Końcem komendy są następujące znaki: <NL> ; & Nawiasy klamrowe { ciąg_komend; } słuŝą do grupowania komend, które będą normalnie wykonywane w ramach bieŝącego procesu.

47 Systemy operacyjne / Programowanie w języku powłoki 12 Zmienne lokalne i globalne Podczas tworzenia wszystkie zmienne są lokalne tzn. widoczne tylko w otoczeniu bieŝącej powłoki. Rozszerzenie zakresu waŝności zmiennych na otoczenia procesów potomnych wymaga zadeklarowania ich jako zmiennych globalnych. SłuŜy do tego komenda: $ export nazwa_zm Przeadresowywanie wejścia i wyjścia W SU jednakowo (syntaktycznie i semantycznie) są traktowane pliki zwykłe, katalogi oraz pliki specjalne, reprezentujące urządzenia zewnętrzne (UZ). Operacje we/wy są niezaleŝne od UZ i są realizowane przez dwie funkcje niskiego poziomu read i write. Strumienie danych ( z i do UZ, plików czy procesów) mogą być w prosty sposób przeadresowywane. Po otwarciu sesji do otoczenia uŝytkownika naleŝą następujące pliki:

48 Systemy operacyjne / Programowanie w języku powłoki 13 wejście standardowe (stdin) - strumień 0 wyjście standardowe (stdout) - strumień 1 standardowe wyjście błędów (stderr) - strumień 2 Znakami przeadresowywania są: > plik # przekieruj stdout do pliku >> plik # dopisz stdout do pliku < plik # przekieruj stdin z pliku << EOT # czytanie tekstu z stdin w trybie bezpośrednim, # aŝ do wystąpienia słowa EOT n > plik n >> plik # przekierowanie wyjścia strumienia o deskryptorze n do pliku, # dopisanie przekierowania wyjścia strumienia do pliku, n>&m # przekierowanie wyjścia strumienia n do wyjścia strumienia m, n<&m # przekierowanie wejścia strumienia n do wejścia strumienia m.

49 Systemy operacyjne / Programowanie w języku powłoki 14 Procedury powłoki (skrypty) Procedury powłoki wykonywane są w ten sposób, Ŝe albo wywoływana jest powłoka, która czyta plik tekstowy z komendami, albo są one wywoływane tak jak komenda. Komendy powłoki zgrupowane w zwykłym pliku tekstowym mogą być wykonane poprzez: $ sh opcje plik_z_cmd arg... Po nadaniu plikowi zawierającemu komendy, atrybutu wykonywalności, komendą chmod np. $ chmod +x plik_z_cmd moŝna go wykonać jak komendę, bez podawania sh przed jego nazwą:

50 Systemy operacyjne / Programowanie w języku powłoki 15 $ plik_z_cmd arg... Procedury powłoki mogą wywoływać dalsze procedury powłoki (co prowadzi do utworzenia nowego procesu), równieŝ rekurencyjnie. Liczba dopuszczalnych zagłębień jest uwarunkowana maksymalną liczbą procesów, które moŝe utworzyć jeden uŝytkownik w systemie (zwykle około 20). Struktury sterujące przebiegiem procedury Do sterowania przebiegiem procedury powłoki słuŝą instrukcje takie, jak: if, for, while, until, case MoŜliwe jest skrócenie zapisu if, przy uŝyciu znaków: And-if && (gdy rezultat równy zero) Or-if (gdy rezultat róŝny od zera)

51 Systemy operacyjne / Programowanie w języku powłoki 16 np. lista_cmd_1 && lista_cmd_2 lista_cmd_1 lista_cmd_3 Stan końcowy po wykonaniu komendy KaŜda komenda umieszcza w $? status z jakim zakończyło się jej wykonanie. Status 0 oznacza pomyślne zakończenie działania procesu. Status niezerowy oznacza wystąpienie błędu podczas wykonywania się komendy.

52 Systemy operacyjne / Programowanie w języku powłoki 17 Instrukcja warunkowa (if) Ogólny zapis jest następujący: if ciąg_komend_1 then ciąg_komend_2 {else ciąg_komend_3} fi Przykład if cc -c p.c then ld p.o else echo Błąd kompilacji!! fi

53 Systemy operacyjne / Programowanie w języku powłoki 18 Instrukcja wyboru (case) Instrukcja wyboru pozwala na wielokrotne rozgałęzienie. Ogólny jej zapis wygląda następująco: case słowo in wzór_1) lista_komend_1;; wzór_2) lista_komend_2;; *) lista_komend_domyślnych;; esac Łańcuch słowo będzie kolejno porównywany z wzorami wzór_1, wzór_2 itd. Po napotkaniu pierwszego wzoru zgodnego ze słowem, wykonywana jest następująca po wzorze lista_komend. Przykład case $# in 0)echo Usage: man nazwa 1>&2;exit 2;; esac

54 Systemy operacyjne / Programowanie w języku powłoki 19 Instrukcje iteracyjne (for, while, until) W powłoce sh instrukcje iteracyjne (pętle) występują w trzech odmianach: instrukcja for, której treść jest wykonywana jednorazowo dla kaŝdego słowa w liście słów, instrukcja while, której treść jest wykonywana tak długo, jak długo jest spełniony warunek w while, instrukcja until, której treść jest wykonywana tak długo aŝ nastąpi spełnienie warunku w until. W instrukcjach moŝliwe jest stosowanie continue i break. Przykład : for i in /tmp /usr/tmp do rm -rf $i/* done

55 Systemy operacyjne / Programowanie w języku powłoki 20 Przykłady róŝne: $ cat file.dat while read x y z do echo $x $y $z done #!/bin/sh i=1 while [ $I le 5 ] ; do echo $i i = `expr $i + 1` done $ who r. ru-level 2 Aug 21 16: S $ set `who r` $ echo $6 16:58

56 Systemy operacyjne / Programowanie w języku powłoki 21 #!/usr/bin/zsh PATH=/usr/bin:/usr/local/bin:/bin WAIT_TIME=5. /export/home/oracle/.zshenv #sprawdz czy jest sens go sprawdzac.. PID=`ps -ef grep LISTENER grep -v grep awk -e '{print $2 }'` if test -z "$PID" then exit 0 fi # sprawdz jak dziala lsnrctl status >/dev/null 2>&1 & sleep $WAIT_TIME kill $! 2>/dev/null res="$?" if test "$res"!= "1" then kill $PID kill -9 $PID logger -p user.err Oracle LISTENER ERROR (stunned) - restarted lsnrctl start fi

57 Systemy operacyjne / Zarządzanie procesami 1 Zarządzanie procesami Podstawowe wymagania odnośnie systemu operacyjnego: umoŝliwianie przeplatania się wykonywania wielu procesów w celu maksymalizacji wykorzystania czasu procesora, akceptowalnie krótki czas odpowiedzi systemu, zarządzanie przydziałem zasobów poszczególnym procesom, udostępnianie mechanizmów do komunikacji międzyprocesowej, udostępnianie mechanizmów do tworzenia procesów. Proces czasem określany równieŝ mianem zadania, tworzony w celu wykonania konkretnego programu, moŝe być śledzony (ang. traced).

58 Systemy operacyjne / Zarządzanie procesami 2

59 Systemy operacyjne / Zarządzanie procesami 3 Proces moŝe być w jednym z dwóch stanów: wykonywany, nie wykonywany.

60 Systemy operacyjne / Zarządzanie procesami 4 Utworzenie nowego procesu moŝe być rezultatem: uruchomienia zadania wsadowego, rejestracji uŝytkownika do systemu, zlecenia wykonania pewnej usługi, np. drukowania, zlecenia utworzenia procesu potomnego wydanego przez proces uzytkowy. Zakończenie działania procesu moŝe być rezultatem: wykonania instrukcji Halt przez zadanie wsadowe, wyrejestrowania się uŝytkownika z systemu, zakończenia działania aplikacji, wystąpienia wyjątku bądź błedu.

61 Systemy operacyjne / Zarządzanie procesami 5 MoŜliwe przyczyny zakończenia działania procesu: zakończenie realizacji algorytmu, przekroczenie limitu czasowego, brak dostępnej pamięci, przekroczenie ograniczeń pamięci, bład ochrony (np. próba zapisu do pamięci tylko do odczytu), błąd arytmetyczny, przeterminowania czasowe, błąd wejścia/wyjścia, próba wykonania nieprawidłowej instrukcji, nieprawidłowe uŝycie danych, interwencja systemu operacyjnego (np. w przypadku blokady), zakończenie procesu macierzystego, Ŝadanie procesu macierzystego.

62 Systemy operacyjne / Zarządzanie procesami 6 Proces nie wykonujący się jest gotowy do wykonania. Proces zablokowany oczekuje na zdarzenie wejścia/wyjścia. Planista nie moŝe po prostu wybrać do wykonania procesu znajdującego się najdłuŝej w kolejce, gdyŝ ten moŝe okazać się zablokowanym.

63 Systemy operacyjne / Zarządzanie procesami 7

64 Systemy operacyjne / Zarządzanie procesami 8

65 Systemy operacyjne / Zarządzanie procesami 9 Procesy wstrzymane: procesor jest szybszy od urządzeń wejścia-wyjścia zatem moŝe zajść sytuacja, Ŝe wszystkie procesy czekają na wejście/wyjście, procesy te mogą być wymiecione (ang. swap) na dysk w celu zwiększenia dostępnej pamięci operacyjnej, stan zablokowania staje się stanem wstrzymania (ang. suspended) w przypadku zrzucenia procesu na dysk.

66 Systemy operacyjne / Zarządzanie procesami 10

67 Systemy operacyjne / Zarządzanie procesami 11 MoŜliwe powody wstrzymania działania procesu: swapping, inny powód systemu operacyjnego, interaktywne Ŝądanie uŝytkownika, oczekiwanie na interwał, Ŝądanie procesu potomnego. Struktury kontrolne systemu operacyjnego: informacja o bieŝacym stanie kaŝdego procesu i zasobu, tablice są tworzone dla kaŝdego elementu zarządzanego przez system operacyjny. Tablice dotyczące pamięci: alokacja pamięci głównej poszczególnym procesom, alokacja pamięci pomocniczej poszczególnym procesom, atrybuty ochrony i kontroli dostępu do współdzielonych obszarów pamięci, informacja niezbędne do zarządzania pamięcią wirtualną.

68 Systemy operacyjne / Zarządzanie procesami 12 Tablice dotyczące wejścia/wyjścia: dostępność oraz przyporządkowanie urządzeń we/wy, status operacji wejścia/wyjścia, lokacja w pamięci głównej wykorzystywana jako źródło/przeznaczenie transferów wejścia/wyjścia. Tablice dotyczące plików: istnienie plików, lokalizacja na pamięci zewnętrznej, bieŝący status, atrybuty. Czasami powyŝsza informacja jest zarządzana przez system zarządzania plikami.

69 Systemy operacyjne / Zarządzanie procesami 13 Tablica procesów gdzie jest zlokalizowany proces, atrybuty niezbędne do zarządzania procesem: o identyfikator procesu, o stan procesu, o lokalizacja w pamięci. Lokalizacja procesu proces zawiera zbiór programów do wykonania, o lokalizacja danych na zmienne lokalne i globalne, o dowolne zdefiniowane stałe, o stos, blok kontrolny procesu, o zestaw atrybutów procesu, obraz procesu, o zestaw złoŝony z programu, danych, stosu i atrybutów.

70 Systemy operacyjne / Zarządzanie procesami 14

71 Systemy operacyjne / Zarządzanie procesami 15 Blok kontrolny procesu (ang. PCB) identyfikacja procesu; identyfikatory, lista numerycznych identyfikatorów, które mogą być zawarte w PCB zawiera: o identyfikator danego procesu, o identyfikator procesu macierzystego, o identyfikator uŝytkownika; informacja o stanie procesora o rejestry widoczne dla uŝytkownika, rejestry do których moŝna się odwoływać za pomocą instrukcji języka maszynowego rozumianego przez dany procesor. Zazwyczaj jest to od 8 do 32 rejestrów, chociaŝ niektóre architektury RISC oferują listę ponad 100 rejestrów; o rejestry kontrolne i rejestry statusu, jest to grupa rejestrów przeznaczona do kontroli operacji wykonywanych przez procesor: licznik rozkazów, zawiera adres następnej instrukcji do pobrania,

72 Systemy operacyjne / Zarządzanie procesami 16 kody warunkowe, zawierają rezultat ostatniej operacji arytmetycznej bądź logicznej (np. znak, zero, przeniesienie, równa się, nadmiar), informacje o statusie, zawierają m.in. flagę dopuszczalności/blokady przerwań, tryb wykonywania; o wskaźniki stosu, kaŝdy proces ma jeden bądź więcej powiązanych ze sobą stosów LIFO (Last In First Out). Stos jest wykorzystywany do przechowywania parametrów i adresów wywołań procedur oraz funkcji systemowych. Wskaźnik stosu wskazuje na aktualny wierzchołek stosu; informacje o sterowaniu procesem o informacje o szeregowaniu i stanie procesu potrzebne systemowi operacyjnemu w celu realizacji szeregowania procesów (planowania przydziału procesora), stan procesu (uruchomiony, gotowy, oczekujący), priorytet procesu, dodatkowe informacje związane z szeregowaniem (np. ile czasu proces wykonywał się ostatnio, a ile teraz czeka), zdarzenie.

73 Systemy operacyjne / Zarządzanie procesami 17 o pozycja w strukturze danych, proces moŝe być elementem kolejki, listy procesów bądź innej struktury organizującej procesy. PCB moŝe zawierać wskaźniki do innych procesów implementujące powyŝsze struktury; o komunikacja międzyprocesowa, róŝne znaczniki,sygnały, komunikaty mogą być powiązane z komunikacją między procesami. Część z tych informacji moŝe być zarządzana przez PCB; o przywileje procesu, procesy posiadają przywileje w rozumieniu pamięci do jakiej mogą się odwoływać i zestawu instrukcji, które mogą wykonywać. Dodatkowo, przywileje mogą być stosowane do moŝliwości skorzystywania z róŝnych usług i narzędzi systemowych; o zarządzanie pamięcią, sekcja ta moŝe zawierać wskaźniki do segmentów i/lub tablic stron opisujących pamięć wirtualną skojarzoną z danym procesem; o prawa własności i wykorzystanie zasobów, przykładowo, moŝe zawierać listę otwartych plików oraz historię wykorzystywania przez proces procesora.

74 Systemy operacyjne / Zarządzanie procesami 18

75 Systemy operacyjne / Zarządzanie procesami 19 Informacje o stanie procesora zawartość rejestrów procesora, o stan rejestrów widocznych dla uŝytkownika, o rejestry kontrolne i rejestry stanu, o wskaźniki stosu, słowo stanu programu (ang. PSW, program status word), o zawiera informacje o statusie, o przykład: rejestr EFLAGS w procesorach Pentium

76 Systemy operacyjne / Zarządzanie procesami 20 Tryby wykonania tryb uŝytkownika o mniej uprzywilejowany tryb, o programy uŝytkowe zazwyczaj wykonują się w tym trybie, tryb systemowy, tryb kontrolny lub tryb jądra o bardziej uprzywilejowany tryb, o jądro systemu operacyjnego. Tworzenie procesu przydział unikatowego identyfikatora, przydział pamięci dla procesu, inicjalizacja PCB procesu, wstawienie procesu w odpowiednie struktury (np. listę szeregowanych procesów), utworzenie ewentualnych dodatkowych struktur danych (np. do rozliczania),

77 Systemy operacyjne / Zarządzanie procesami 21 Kiedy wywłaszczać proces (odbierać procesor): przerwanie zegarowe, proces wykorzystał przeznaczony mu czas w algorytmie szeregowania, przerwanie we/wy, błąd pamięci, związane z koniecznością załadowania odpowiedniej strony do pamięci głównej, pułapka, sygnalizuje wystąpienie błędu, moŝe spowodować zmianę stanu procesu na Exit, wywołanie funkcji systemowej (np. otwarcie pliku). Zmiana stanu procesu 1. zachowanie kontekstu procesu razem z zawartością licznika rozkazów i innych rejestrów, 2. aktualizacja PCB aktualnie wykonującego się procesu, 3. przeniesienie PCB procesu do odpowiedniej kolejki (np. kolejki Gotowe), 4. wybranie innego procesu do wykonania, 5. aktualizacja PCB wybranego procesu, 6. aktualizacja struktur danych związanych z zarządzaniem pamięcią, 7. odzyskanie kontekstu wybranego procesu.

78 Systemy operacyjne / Zarządzanie procesami 22 Przełączanie kontekstu

79 Systemy operacyjne / Zarządzanie procesami 23 Zarządzanie procesami w systemach Unix SVR4 user running uruchomiony w trybie uŝytkownika, kernel running uruchomiony w trybie jądra, ready to run, in gotowy do uruchomienia jak tylko planista go memory wybierze, asleep in memory nieuruchamialny do czasu wystąpienia pewnego zdarzenia, w pamięci głównej (zablokowany), ready to run, swapped proces gotowy, ale aktualnie w pamięci pomocniczej, sleeping, swapped nieuruchamialny do czasu wystąpienia pewnego zdarzenia, w pamięci pomocniczej (zablokowany), preempted wywłaszczony, proces wracał z trybu jądra do uŝytkowego ale został wywłaszczony, created proces jest utworzony, ale jeszcze nie gotowy do uruchomienia, zombie proces juŝ nie istnieje, ale pozostał ślad w tablicach systemowych do przekazania procesowi macierzystemu.

80 Systemy operacyjne / Zarządzanie procesami 24

81 Systemy operacyjne / Wątki, SMP i mikrojądra 1 Wątki, SMP i mikrojądra Procesem nazywamy wykonujący się program wraz z jego środowiskiem obliczeniowym. Proces zarządzanie zasobami proces ma przydzielony obszar pamięci wirtualnej do przechowywania własnego obrazu, szeregowanie/wykonywanie proces wykonuje się zgodnie z pewną ścieŝką wykonania przeplataną ze ścieŝkami wykonania innych procesów, te dwie cechy są rozpatrywane osobno przez system operacyjny. Proces w kategorii wykonywania się analizowany jest jako wątek sterowania (ang. thread), w kategorii zarządzania zasobami rozpatrywany jest jako proces, zadanie (ang. process, task).

82 Systemy operacyjne / Wątki, SMP i mikrojądra 2 Wielowątkowość Wielowątkowość jako cecha systemu operacyjnego: system operacyjny obsługuje wiele wątków sterowania w ramach pojedynczego procesu, MS DOS pojedynczy wątek sterowania, Unix wiele procesów uŝytkownika, ale tylko po jednym wątku sterowania w ramach jednego procesu, Windows 2000, Solaris, Linux, Mach, oraz OS/2 obsługują wiele wątków sterowania w ramach pojedynczego procesu,

83 Systemy operacyjne / Wątki, SMP i mikrojądra 3

84 Systemy operacyjne / Wątki, SMP i mikrojądra 4 Proces posiada wirtualną przestrzeń adresową, która przechowuje obraz procesu, dysponuje chronionym dostepem do procesorów, innych procesów, plików oraz zasobów wejścia/wyjścia. Wątek posiada aktualny stan wykonania (uruchomiony, gotowy itp.), zachowany kontekst wątku gdy nie wątek nie jest uruchomiony, stos do wykonywania, pewną przestrzeń statyczną na zmienne lokalne, dostęp do pamięci i zasobów procesu, w ramach którego się wykonuje o wszystkie wątki tego samego procesu współdzielą powyŝsze.

85 Systemy operacyjne / Wątki, SMP i mikrojądra 5

86 Systemy operacyjne / Wątki, SMP i mikrojądra 6 Korzyści z posiadania mechanizmu wielowątkowości utworzenie nowego wątku zajmuje mniej czasu niŝ utworzenie nowego procesu, zakończenie wątku zajmuje mniej czasu niŝ zakończenie procesu, przełączenie między wątkami procesu zajmuje mniej czasu niŝ przełączenie między procesami, poniewaŝ wątki w obrębie tego samego procesu dzielą pamięć i pliki, mogą się wzajemnie komunikować bez angaŝowania jądra systemu operacyjnego. Zablokowanie procesu implikuje zablokowanie wszystkich wątków procesu, gdyŝ współdzielą one tą samą przestrzeń adresową. Zakończenie procesu powoduje zakończenie działania wszystkich jego wątków.

87 Systemy operacyjne / Wątki, SMP i mikrojądra 7 Zdalne wywołanie procedury z wykorzystaniem wątków

88 Systemy operacyjne / Wątki, SMP i mikrojądra 8 Podejścia do obsługi serwisów bufor na zlecenia, serwer wielowątkowy.

89 Systemy operacyjne / Wątki, SMP i mikrojądra 9 Wątki poziomu uŝytkownika całe zarządzanie wątkami jest realizowane na poziomie aplikacji, jądro systemu operacyjnego nie jest świadome istnienia wątków w ramach procesu. Wątki poziomu jądra jądro systemu operacyjnego zarządza informacją dotycząco zarówno procesów jak i wątków sterowania, przedmiotem szeregowania realizowanego przez jądro systemu operacyjnego są poszczególne wątki, przykładami systemów realizujących takie podejście są Windows 2000, Linux oraz OS/2. Podejście łączone utworzenie wątku realizowane w przestrzeni adresowej uŝytkownika, duŝa część szeregowania i i synchronizacji realizowana w przestrzeni uŝytkownika, przykładem systemu realizującego takie podejście jest Solaris.

90 Systemy operacyjne / Wątki, SMP i mikrojądra 10

91 Systemy operacyjne / Wątki, SMP i mikrojądra 11 Relacje pomiędzy wątkami a procesami W:P Opis Realizacja 1:1 kaŝdy wątek sterowania jest unikalnym procesem tradycyjny z własną przestrzenią adresową oraz zasobami. Unix M:1 proces definiuje przestrzeń adresową wraz z dynamicznie zarządzanymi zasobami. Wiele wątków moŝe być tworzonych i wykonywanych w ramach tego procesu. 1:M wątek moŝe migrować z jednego środowiska procesu do innego, to umoŝliwia przemieszczanie wątku między rozłącznymi systemami. Windows NT, Solaris, OS/2, OS/390, Mach Ra(Clouds), Emerald M:N podejście wykorzystujące aspekty podejść 1:M i M:1 TRIX

92 Systemy operacyjne / Wątki, SMP i mikrojądra 12 Klasyfikacja typów systemów komputerowych Single Instruction Single Data (SISD) pojedynczy procesor wykonuje pojedynczy strumień instrukcji w celu operowania na danych przechowywanych w pojedynczej pamięci, Single Instruction Multiple Data (SIMD) kaŝda instrukcja wykonywana na innym zestawie danych przez inne procesory, Multiple Instruction Single Data (MISD) sekwencja danych jest przesyłana do zbioru procesorów, z których kaŝdy wykonuje inną sekwencję rozkazów nigdy nie zostało zaimplementowane, Multiple Instruction Multiple Data (MIMD) zestaw procesorów jednocześnie wykonuje róŝne sekwencje instrukcji na róŝnych zbiorach danych.

93 Systemy operacyjne / Wątki, SMP i mikrojądra 13

94 Systemy operacyjne / Wątki, SMP i mikrojądra 14 SMP Symmetric Multiprocessing symetryczne wieloprzetwarzanie, jądro moŝe się wykonywać na dowolnym procesorze, zazwyczaj kaŝdy procesor realizuje szeregowanie wybierając spośród puli dostępnych procesów i wątków.

95 Systemy operacyjne / Wątki, SMP i mikrojądra 15 Aspekty projektowania wieloprocesorowych systemów operacyjnych jednoczesne równoległe procesy i wątki, szeregowanie, synchronizacja, zarządzanie pamięcią, niezawodność i odporność na błędy. Mikrojądra małe jądro właściwe (ang. core) systemu operacyjnego, zawiera realizację jedynie najistotniejszych funkcji systemu operacyjnego, wiele elementów tradycyjnie będących elementami jądra realizowane w podsystemach zewnętrznych: o sterowniki urządzeń, systemy plików, o zarządca pamięci wirtualnej, o systemy okienkowe, usługi dotyczące bezpieczeństwa.

96 Systemy operacyjne / Wątki, SMP i mikrojądra 16 Zalety organizacji opartej na mikrojądrze jednolity interfejs z procesami, wszystkie usługi udostepnione przez przekazywanie komunikatów, rozszerzalność, łatwe rozszerzanie o nowe usługi, elastyczność konfiguracji, przenośność, niezawodność o projektowanie z podziałem na moduły, o moŝliwość dokładniejszego przetestowania małego jądra, obsługa systemów rozproszonych, obiektowe zorientowanie systemu operacyjnego, o komponenty są obiektami z jasno zdefiniowanymi komponentami, które mogą współpracować. Podstawowe składowe mikrojądra niskopoziomowe zarządzanie pamięcią, komunikacja międzyprocesowa, zarządzanie przerwaniami i wejściem/wyjściem.

97 Systemy operacyjne / Wątki, SMP i mikrojądra 17

98 Systemy operacyjne / Wątki, SMP i mikrojądra 18 Procesy i wątki w MS Windows 2000

99 Systemy operacyjne / Wątki, SMP i mikrojądra 19

100 Systemy operacyjne / Wątki, SMP i mikrojądra 20 Wątki w systemie Solaris proces zawiera przestrzeń adresową uŝytkownika, stos i blok PCB, wątki poziomu uŝytkownika, procesy lekkie, wątki jądra. Struktury potrzebne wątkom kaŝdego z rodzajów: wątek jądrowy mała struktura danych i stos, szybkie przełączanie, proces lekki (LWP) PCB z danymi rejestrowymi, rozliczeniowymi i dotyczącymi pamięci, wolne przełączanie, wątek poziomu uŝytkownika stos i licznik rozkazów; jądro nie jest angaŝowane w planowanie, tak więc przełączanie jest szybkie.

101 Systemy operacyjne / Wątki, SMP i mikrojądra 21

102 Systemy operacyjne / Wątki, SMP i mikrojądra 22

103 Systemy operacyjne / Wątki, SMP i mikrojądra 23

104 Systemy operacyjne / Wątki, SMP i mikrojądra 24 Solaris wątki POSIX a wątki Solaris Oba interfejsy są podobne, poniŝej przedstawiono istotne róŝnice. Wątki POSIX są bardziej przenośne, implementują anulowanie (ang. cancellation) wątku, wymuszają algorytmy szeregujące, umoŝliwiają dodatkową obsługę wywołania fork(), Wątki Solaris mogą być wstrzymywane i wznawiane, implementuja zoptymalizowany mechanizm mutex i semafory binarne między wątkami róŝnych procesów, implementuja wątki demonowe, na których zakończenie proces nie czeka. Więcej informacji moŝna uzyskać wywołując komendę man threads.

105 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 1 WspółbieŜność: wzajemne wykluczanie i synchronizacja IPC - komunikacja między procesami (InterProcess Communication) Warunki wyścigu (ang. race condition) W SO wykonujące się procesy często dzielą obszary wspólnej pamięci, pliki lub inne zasoby. Rozpocznijmy nasze rozwaŝania od przykładu. Def. Warunkami wyścigu nazywamy sytuację, w której dwa lub więcej procesów wykonuje operację na zasobach dzielonych, a ostateczny wynik tej operacji jest zaleŝny od momentu jej realizacji.

106 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 2 Przykład void echo() { chin = getchar(); chout = chin; putchar(chout); } Process P1 Process P2.. chin = getchar();.. chin = getchar(); chout = chin; chout = chin; putchar(chout);.. putchar(chout);..

107 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 3 Sekcje krytyczne Aby zapobiec warunkom wyścigu naleŝy stworzyć mechanizm zabraniający więcej niŝ jednemu procesowi dostępu do zasobów dzielonych w tym samym czasie. Innymi słowy, naleŝy wprowadzić mechanizm wzajemnego wykluczania (WW, ang. mutual exclusion). Def. Sekcją krytyczną nazywamy fragment programu, w którym występują instrukcje dostępu do zasobów dzielonych. Instrukcje tworzące sekcje krytyczne muszą być poprzedzone i zakończone operacjami realizującymi wzajemne wykluczanie. wybór właściwych operacji realizujących WW stanowi istotę kaŝdego systemu operacyjnego, Dla prawidłowej implementacji sekcji krytycznych (SK) muszą być spełnione następujące 3 warunki, przy czym nie czynimy Ŝadnych załoŝeń dotyczących szybkości działania procesów, czy teŝ liczby CPU:

108 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 4 Mechanizm realizacji sekcji krytycznej powinien spełaniać poniŝsze załoŝenia: 1. wewnątrz SK moŝe przebywać tylko jeden proces, 2. jakikolwiek proces znajdujący się poza SK, nie moŝe zablokować innego procesu pragnącego wejść do SK, 3. kaŝdy proces oczekujący na wejście do SK powinień otrzymać prawo dostępu w rozsądnym czasie. Przegląd implementacji mechanizmu wzajemnego wykluczania RozróŜniamy dwa podejścia: wzajemne wykluczanie z aktywnym oczekiwaniem, zawieszanie procesu oczekującego na wejście do sekcji krytycznej.

109 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 5 Aktywne oczekiwanie 1. Blokowanie przerwań (ang. disabling interrupts) kaŝdy proces wchodząc do SK blokuje przerwania, a wychodząc odblokowuje, zaleta: proces znajdujący się w SK moŝe uaktualnić zawartość zasobów dzielonych bez obawy, Ŝe inny proces będzie interweniował. wada: jeśli proces na wyjściu z SK nie odblokuje przerwań, to nastąpi upadek systemu; ponadto, w przypadku systemów wieloprocerowych technika nieskuteczna, technika blokowania przerwań moŝe być stosowana w jądrze SO przy uaktualnianiu niektórych systemowych struktur danych, lecz nie moŝe być wykorzystywana do realizacji wzajemnego wykluczania w przestrzeni uŝytkownika.

110 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 6 2. Zmienne blokujące (lock variables) Rozwiązanie programowe. Niech będzie dana zmienna dzielona o nazwie lock. Niech początkowo lock ma wartość 0. Kiedy proces P chce wejść do SK, to sprawdza wartość lock. Jeśli lock = 0, to ustawia lock na 1 i wchodzi do SK; Jesli nie (tzn. lock=1), to proces czeka aŝ lock stanie się równe 0. Tak więc: 0 oznacza, Ŝe nie ma procesu w SK 1 oznacza, Ŝe jest w SK. Rozwiązanie niepoprawne, występuje problem wyścigu.

111 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 7 3. Ścisłe następstwo (strict alternation) Dla dwóch procesów P0 i P1: P0: while(true) { while (turn!=0) /* wait */; critical_section(); turn=1; noncritical_section(); } P1: while(true) { while (turn!=1) /* wait */; critical_section(); turn=0; noncritical_section(); } początkowo turn=0; został naruszony warunek 2, tzn. P0 moŝe zostać zablokowany przez P1 znajdujący się poza SK. Stan taki nazywamy stanem zagłodzenia.

112 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 8 rozwiązanie wymaga ścisłego następstwa (przełączania) np. nie moŝna wydrukować dwóch kolejnych plików przez ten sam proces, problem wyścigu został wyeliminowany lecz wystąpił problem zagłodzenia. 4. Algorytm Petersona Łącząc ideę ścisłego następstwa ze zmiennymi blokującymi T. Dekker pierwszy znalazł rozwiązanie (1965) wzajemnego wykluczania. W 1981 r. Peterson znalazł prostsze rozwiązanie tego problemu, a mianowicie: #define FALSE 0 #define TRUE 1 #define N 2 /* number of processes */ int turn; /* whose turn is it? */ int interested[n]; /* initially 0 */

113 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 9 enter_region(process) int process; /* process nr 0 or 1 */ { int other; /* nr of other process */ other=1-process; interested[process]=true; turn=process; while((turn==process)&&(interested[other]==true)); } leave_region(process) int process; { interested[process]=false; } kaŝdy proces przed wejściem do SK wywołuje enter_region z własnym numerem jako parametrem, zaś po wyjściu leave_region.

114 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja Instrukcja TSL Spróbujmy rozwiązać to samo zagadnienie przy pewnej pomocy sprzętu. Niektóre komputery są wyposaŝone w instrukcje: TEST AND SET LOCK (TSL) Instrukcja ta wykonuje się niepodzielnie w następujący sposób: czyta zawartość słowa pamięci do rejestru, zapamiętuje niezerową wartość rejestru pod adresem. operacje czytania i pisania są niepodzielne tzn. inny proces nie ma dostępu do miejsca pamięci, aŝ nie nastąpi zakończenie instrukcji TSL, W celu uŝycia TSL, posłuŝymy się zmienną dzieloną o nazwie flag, przy pomocy której będziemy koordynować dostęp do zasobów dzielonych.

115 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja kiedy flag = 0, to kaŝdy proces moŝe ją ustawić na 1 stosując TSL, a następnie wejść do SK, 2. wychodząc z SK ustawia flag 0 stosując zwykłą instrukcje move. Algorytm z wykorzystaniem TSL enter_region: tsl register,flag cmp register,#0 jnz enter_region ret leave_region: mov flag,#0 ret aby wszystko przebiegało prawidłowo, procesy ubiegające się o dostęp do SK muszą wywoływać procedury: enter_region i leave_region we właściwym porządku.

116 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 12 Wszystkie przedstawione do tej pory algorytmy były oparte na koncepcji aktywnego oczekiwania. Rozwiązania te posiadają dwie podstawowe wady: strata czasu procesora, moŝliwość blokady systemu przy wielopriorytetowym sposobie szeregowania procesów, tzw. zjawisko inwersji priorytetów. Zawieszanie procesu oczekującego na wejście do SK 1. Sleep and Wakeup Najprostszym rozwiązaniem jest utworzenie dwóch wywołań systemowych: sleep() i wakeup().

117 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 13 sleep powoduje, Ŝe proces wywołujący zostaje zawieszony do momentu, gdy inny proces nie uŝyje wywołania wakeup. wakeup posiada jeden argument (nr procesu), który ma być obudzony. Przykład Problem producent-konsument (problem ograniczonego buforu). Niech dwa procesy dzielą wspólny bufor o skończonym wymiarze. Proces o nazwie producent (Pr) będzie umieszczał informacje (inf) w kolejnych miejscach buforu. Proces o nazwie konsument (Ko) będzie pobierał informacje z tego buforu. Przyjmijmy zasadę: jeśli Pr napotyka na bufor pełny, to Z jeśli Ko napotyka na bufor pusty, to Z.

118 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 14 Niech w zmiennej o nazwie count będzie zapamiętywana liczba miejsc zajętych w buforze, niech ponadto maksymalna liczba miejsc będzie równa N. Pr: Jeśli count == N, to Pr Z Jeśli nie, to Pr dodaje inf i count = count + 1 Ko: Jeśli count == 0, to Ko Z Jeśli nie, to Ko pobiera inf i count = count - 1 Algorytm Producent-Konsument z RC (z wyścigiem) #define N 100 int count=0; void producer(void) {

119 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 15 while (TRUE){ produce_item(); if (count == N)sleep(); enter_item(); count = count + 1; if (count == 1)wakeup(consumer); } } void consumer(void) { while (TRUE){ if (count == 0)sleep(); remove_item(); count = count - 1; if (count == N-1)wakeup(producer); consume_item(); } }

120 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 16 Wadą algorytmu Producent-Konsument z RC jest to, Ŝe sygnał wakeup moŝe zostać wysłany do procesu, który nie jest w stanie Z. Powoduje to, Ŝe sygnał ten jest tracony i następuje blokada (obydwa procesy znajdą się w stanie Z). Semafory W 1965 r. rozwiązał ten problem E.W. Dijkstra, który zaproponował zmienną typu całkowitego w celu zliczania sygnałów wakeup mających być uŝytych w przyszłości. Zmienną tę nazwał semaforem (S) i zdefiniował następująco: S = 0, gdy nie było sygnałów wakeup, S > 0, gdy jeden lub więcej sygnałów oczekuje. Wprowadził przy tym dwie operacje: down i up.

121 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 17 Operacja down: 1. Sprawdza czy S > 0. Jeśli tak, to S S -1; 2. Jeśli S = 0, to sleep Z. Operacja up: 1. Wykonuje S S + 1; 2. Jeśli istnieją procesy Z na S, to wakeup G, przy czym proces budzony wybierany jest w sposób przypadkowy lub wg. zasady FIFO. Operacje te muszą być niepodzielne.

122 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 18 Algorytm Producent-Konsument z semaforami #define N 100 typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer(void) { while (TRUE){ produce_item(); down(empty); down(mutex); enter_item(); up(mutex); up(full); } } void consumer(void) { while (TRUE){ down(full); down(mutex); remove_item(); up(mutex); up(empty); consume_item(); } }

123 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 19 Monitory W celu łatwiejszego pisania programów realizujących wzajemne wykluczanie (WW) Hoare (1974) i Hansen (1975) zaproponowali mechanizm synchronizacji wysokiego poziomu zwany monitorem. Def. Monitor stanowi zbiór procedur, zmiennych i struktur danych, które są zgrupowane w specjalnym module. W kaŝdej chwili tylko jeden proces aktywny moŝe przebywać w danym monitorze. Monitory są konstrukcją języka wysokiego poziomu. UŜytkownik pisząc program w takim języku umieszcza wszystkie sekcje krytyczne w monitorze. Za właściwą implementację wzajemnego wykluczania jest odpowiedzialny kompilator. W przedstawionej koncepcji brak jest mechanizmu, który powodowałby zawieszenie procesu, jeśli nie moŝe się on dalej wykonywać.

124 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 20 Przykład. Zapis monitora w hipotetycznym Pascalu. Monitor example integer i; condition c; procedure producer(x);.. end; procedure consumer(x);.. end; end monitor;

125 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 21 Zaproponowano wprowadzenie zmiennych warunkowych w powiązaniu z dwoma operacjami wait i signal. Sposób posługiwania się tymi operacjami jest następujący: kiedy procedura monitora wykrywa sytuację, Ŝe nie moŝe kontynuować obliczeń (np. Pr stwierdza, Ŝe bufor jest pełny) wykonuje wait na pewnej zmiennej warunkowej o nazwie full. Powoduje to, Ŝe proces wywołujący wait Z. inny oczekujący proces moŝe teraz wejść do SK. Wchodząc wykonuje signal w celu obudzenia zawieszonego procesu na zmiennej warunkowej, np. konsument po wejściu do monitora i pobraniu informacji z bufora wywoła signal(full), aby obudzić producenta. Dla uniknięcia sytuacji, w której dwa procesy znalazłyby się w monitorze naleŝy określić zasady, jak ma zachowywać się system po wywołaniu signal.

126 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 22 Spotykamy tu dwa podejścia: Hoar zaproponował, aby proces obudzony kontynuował działanie, a wywołujący Z Hansen - aby proces wywołujący signal natychmiast opuścił monitor. Problem Producent-Konsument przy uŝyciu monitora monitor ProducerConsumer condition full, empty; integer count; procedure enter; begin if count =N then wait(full); enter_item; count := count + 1; if count =1 then signal(empty); end;

127 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 23 procedure remove; begin if count =0 then wait(empty); remove_item; count := count - 1; if count=n-1 then signal(full); end; count := 0; end monitor; procedure producer; begin while true do begin produce_item; ProducerConsumer.enter; end end; procedure consumer; begin while true do begin ProducerConsumer.remove; consume_item; end end;

128 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 24 Porównując pary operacji wait(), signal() oraz sleep(), wakeup() wydaje się, Ŝe są one równowaŝne. Istnieje między nimi istotna róŝnica, mianowicie: w przypadku sleep(), wakeup(), proces Z tracił sygnał wakeup i mechanizm wzajemnego wykluczania zawodził, w przypadku monitora nie moŝe się to zdarzyć, gdyŝ wzajemne wykluczanie jest realizowane wewnątrz monitora co gwarantuje, Ŝe operacja wait() będzie zakończona i planista jej nie przerwie. Wady niewiele języków wysokiego poziomu jest wyposaŝone w monitory (Euclid, Concurrent Pascal)., w przypadku systemu rozproszonego przedstawione rozwiązanie zawodzi gdyŝ jest oparte na koncepcji wspólnej pamięci.

129 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 25 Komunikaty (Message Passing) Oparte na dwóch wywołaniach systemowych: send(destination, &message) receive(source, &message) RozróŜniamy dwa sposoby adresowania wiadomości: 1. adresowanie bezpośrednie poprzez przypisanie kaŝdemu procesowi unikalnego adresu i adresowanie wiadomości bezpośrednio do tego procesu. Stosujemy tu mechanizm spotkań polegający na: jeśli send jest wykonane przed receive, to proces wysyłający wiadomość Z. Stan ten trwa tak długo aŝ nastąpi receive, wówczas wiadomość zostanie bezpośrednio skopiowana do odbiorcy;

130 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 26 jesli receive wystąpi przed send, to proces wywołujący receive Z, przy czym trwa to tak długo aŝ wydarzy się send. 2. adresowanie poprzez skrzynkę pośredniczącą zwaną często mailboxem. Skrzynka jest miejscem, w którym jest buforowana pewna liczba wiadomości ustalona w momencie tworzenia nowej struktury o nazwie mailbox. W tym przypadku adresem wiadomości umieszczanym jako argument wywołań send i receive jest adres skrzynki. ZałoŜenia do programu Producent-Konsument: wiadomości są tego samego rozmiaru, wiadomości wysłane lecz nie odebrane są buforowane automatycznie przez SO, uŝyto N wiadomości jako analog do N miejsc dzielonego bufora, pierwszy rozpoczyna działanie Ko wysyłając do Pr N pustych wiadomości. Kiedy Pr wytworzył nową inf i pragnie ją wysłać do Ko, wówczas umieszcza ją w otrzymanej pustej wiadomości i odsyła do

131 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 27 Uwagi Ko. Tym sposobem w systemie całkowita liczba wiadomości pozostaje stała (zarezerwowana wielkość pamięci pozostaje stała). jeśli Pr wykonuje się szybciej niŝ Ko, to bufor zapełni się szybciej i Pr Z czekając na pustą wiadomość jeśli natomiast Ko wykonuje się szybciej, wówczas wszystkie wiadomości będą puste i Ko Z czekając na pełną wiadomość. Algorytm Producent-Konsument z komunikatami #define N 100 void producer(void) { int item; message m; while (TRUE) { produce_item(&item);

132 Systemy operacyjne / WspółbieŜność: wzajemne wykluczanie i synchronizacja 28 } } receive(consumer,&m); build_message(&m,&item); send(consumer,&m); void consumer(void) { int item, i; message m; for(i=0;i<n;i++)send(producer,&m); while (TRUE) { receive(producer,&m); extract_item(&m,&item); consume_item(&item); send(producer,&m); } }

133 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 1 WspółbieŜność: blokady i zagłodzenia

134 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 2 System komputerowy składa się ze skończonej liczby zasobów, o które ubiega się pewna liczba procesów. JeŜeli pewien proces zamówi zasób, a zasób nie jest dostępny, to proces przechodzi w stan zawieszenia Z, Sytuację, w której oczekujące procesy nigdy nie zmienią swego stanu, poniewaŝ zamówione przez nie zasoby są przetrzymywane przez inne procesy, nazywamy blokadą (ang. deadlock). ZałoŜenia odnośnie rozpatrywanego modelu całość zasobów dzieli się na kilka grup, z których kaŝda zawiera pewną liczbę identycznych egzemplarzy, proces powinien zamówić zasób przed jego uŝyciem i zwolnić go po wykorzystaniu, proces moŝe Ŝądać tyle zasobów, ile ich potrzebuje do wykonania zadania, przy czym nie potrzebuje ich więcej niŝ jest dostępne w systemie. Kolejne kroki podczas korzystania z zasobu

135 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 3 1. zamówienie, jeśli nie moŝe być spełnione, to proces Z, 2. korzystanie z zasobu (np. czytanie z pliku), 3. zwolnienie zasobu. Definicja blokady Zbiór procesów pozostaje w stanie blokady, jeŝeli kaŝdy proces z tego zbioru czeka na zdarzenie, które moŝe być spowodowane tylko przez inny proces z tego samego zbioru. Najczęściej zdarzenia te dotyczą przydzielania i zwalniania zasobów, takich jak: zasoby fizyczne (drukarki, miejsce w pamięci, cykle procesora), zasoby logiczne (pliki, semafory).

136 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 4

137 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 5

138 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 6 Przykład z alokacją pamięci dwa procesy Ŝądają przydziału pamięci, liczba dostępnej pamięci: 200kB, proces A: o Ŝądanie przydziału 80kB, o Ŝądanie przydziału 60kB, proces B: o Ŝądanie przydziału 70kB, o Ŝądanie przydziału 80kB, Przykład z przekazywaniem komunikatów proces A: o receive( B, M1), o send( B, M2), proces B: o receive( A, M2), o send( A, M1),

139 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 7 Warunki konieczne istnienia blokady Sytuacja blokady moŝe powstać wtedy i tylko wtedy, gdy w systemie są jednocześnie spełnione cztery warunki (WKB): 1. wzajemne wykluczanie Przynajmniej jeden zasób musi być niepodzielny, tzn. Ŝe zasobu tego moŝe uŝywać w danym czasie tylko jeden proces. JeŜeli inny proces zamawia dany zasób, to jest zawieszany do czasu, aŝ zasób zostanie zwolniony. 2. przetrzymywanie i oczekiwanie Musi istnieć proces mający przydzielony co najmniej jeden zasób i oczekujący na przydział dodatkowego zasobu, który jest przetrzymywany przez inny proces.

140 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 8 3. Brak wywłaszczeń Zasoby nie podlegają wywłaszczaniu, tzn., Ŝe zasób moŝe zostać zwolniony tylko z inicjatywy przetrzymującego go procesu, po zakończeniu działania tego procesu. 4. Czekanie cykliczne Musi istnieć zbiór {Po,P1,...,Pn} czekających procesów (w stanie Z) takich, Ŝe Po czeka na zasób przetrzymywany przez proces P1 P1 czeka na zasób przetrzymywany przez proces P2.. Pn czeka na zasób przetrzymywany przez proces Po warunek czekania cyklicznego 4. implikuje warunek 2., więc warunki te nie są zupełnie niezaleŝne. Rozpatrywanie ich z osobna jest jednak wygodne.

141 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 9 Graf przydziału zasobów Blokady moŝna dokładniej opisać za pomocą pojęcia grafu skierowanego, zwanego grafem przydziału zasobów systemu. Graf ten składa się z dwóch zbiorów: zbioru wierzchołków W, zbioru krawędzi K. Zbiór W jest podzielony na dwa podzbiory: zbiór wszystkich procesów P={Po,P1,...,Pn} zbiór wszystkich zasobów Za={Zo,Z1,...,Zn}

142 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 10 Oznaczenia 1. Krawędź skierowaną od Pi od Zj zapisuje się w postaci Pi Zj. Oznacza, Ŝe Pi zamówił egzemplarz zasobu typu Zj i czeka na ten zasób. Krawędź tąka nazywamy krawędzią zamówienia, 2. Krawędź skierowaną od Zj od Pi zapisuje się w postaci Zj Pi. Oznacza, Ŝe egzemplarz zasobu typu Zj został przydzielony do Pi. Krawędź tą nazywamy krawędzią przydziału, 3. KaŜdy proces Pi będzie przedstawiany w postaci kółka, a kaŝdy typ zasobu Zj - w postaci prostokąta MoŜna wykazać, Ŝe: jeśli graf nie zawiera cykli, to Ŝaden proces w systemie nie uległ blokadzie, jeśli graf zawiera cykl, to moŝe dojść do blokady, przy czym: jeŝeli zasób kaŝdego typu ma tylko jeden egzemplarz, to cykl implikuje, Ŝe wystąpiła blokada. KaŜdy proces występujący w cyklu tkwi w blokadzie. W tym przypadku istnienie cyklu jest warunkiem koniecznym i wystarczającym blokady,

143 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 11 jeŝeli zasób kaŝdego typu ma po kilka egzemplarzy, to obecność cyklu nie oznacza, Ŝe wystąpiła blokada. W tym przypadku cykl w grafie jest warunkiem koniecznym, lecz niewystarczającym.

144 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 12 Dwa podejścia Metody postępowania z blokadami 1. stosowanie protokołu gwarantującego, Ŝe system nigdy nie wejdzie w stan blokady, przy czym stosowane są dwie metody: a. zapobieganie blokadom, b. unikanie blokad. 2. dopuszczanie sytuacji wystąpienia blokady, po czym podjęcie działań zmierzających do jej usunięcia. 1.a Zapobieganie blokadom Koncepcja oparta na załoŝeniu, Ŝe jeŝeli przynajmniej jeden z WKB nie będzie spełniony, to moŝemy zapobiec pojawieniu się blokady.

145 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 13 Dla poszczególnych warunków: Wzajemne wykluczanie (WW) Warunek WW musi być spełniony w odniesieniu do zasobów niepodzielnych (np.drukarki). Natomiast istnieje wiele zasobów dzielonych, które nie wymagają dostępu na zasadzie WW, a więc nie będą występować w blokadach. Przykładem mogą być pliki udostępniane tylko do czytania. na ogół zapobieganie blokadom nie jest moŝliwe przez wyłączenie warunku WW. Przetrzymywanie i Oczekiwanie (P&O) W celu zapewnienia, aby warunek P&O nigdy nie wystąpił, musimy przestrzegać zasady:

146 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 14 jeŝeli proces zamawia zasób, to nie powinien mieć (Ŝadnych) innych przydzielonych zasobów Dwa podejścia 1. kaŝdy proces zanim rozpocznie swoje działanie powinien zamawiać i dostawać wszystkie swoje zasoby. Jednym ze sposobów moŝe być zatem, umieszczanie w programie na wstępie wszystkich wywołań systemowych dotyczących zamówień zasobów, 2. alternatywnym rozwiązaniem moŝe być wprowadzenie zasady, Ŝe proces moŝe zamówić jakiś zasób tylko wówczas, jeśli odda wszystkie zasoby, które ma w danej chwili przydzielone. Wady metod zapobiegającym spełnienie P&O: wykorzystanie zasobów moŝe być bardzo małe, poniewaŝ z wielu przydzielonych zasobów nikt nie będzie korzystał przez długie okresy czasu,

147 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 15 moŝe dochodzić do blokowania nieskończonego, zwanego głodzeniem procesu. Brak wywłaszczeń W celu zapewnienia, aby warunek ten nigdy nie wystąpił, moŝna zastosować jeden z następujących protokołow: 1. jeśli proces (P) mający jakieś zasoby (Za) zgłasza zapotrzebowanie na inny Za, który nie moŝe być mu natychmiast przydzielony (tzn. P musiałby czekać Z), wówczas traci wszystkie dotychczasowe Za. Są one zwalniane w sposób niejawny i dopisywane do listy Za, na które oczekuje. P zostanie wznowiony dopiero wtedy, gdy będzie moŝna mu przywrócić wszystkie jego dawne Za oraz dodać nowy, który zamawiał; 2. jeśli proces (P) mający jakieś zasoby (Za) zgłasza zapotrzebowanie na inny Za, który nie moŝe być mu natychmiast przydzielony, wówczas sprawdza czy zasób ten jest przydzielony do innego P, który jest w stanie Z. Jesli tak, to odbiera mu się ten Za i przydziela

148 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 16 procesowi aktualnie zamawiającemu. Jeśli Za nie jest ani dostępny, ani przetrzymywany przez inny czekający proces, to P Z. Protokół ten często stosuje się do zasobów, których stan moŝna łatwo przechować i później odtworzyć, jak np. rejestry procesora, czy obszary pamięci. Na ogół nie moŝna go stosować do takich zasobów, jak drukarki i stacje taśmy. Czekanie cykliczne Jednym ze sposobów zagwarantowania, Ŝe czekanie cykliczne nie wystąpi, jest wymuszenie uporządkowania całkowitego wszystkich typów zasobów i wymaganie, aby kaŝdy proces zamawiał zasoby we wzrastającym porządku ich numeracji. 1.b Unikanie blokad Algorytmy zapobiegania blokadom uniemoŝliwiały powstawanie blokad przez nakładanie ograniczeń na wykonywanie zamówień. Gwarantowało

149 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 17 to niespełnienie przynajmniej jednego z WKB, wobec czego blokada nie mogła wystąpić. Wadą tych algorytmów jest słabe wykorzystanie urządzeń i ograniczona przepustowość systemu. Alternatywna metoda unikania blokad wymaga dodatkowych informacji (inf) o tym, jak będzie następowało zamawianie zasobów. Mając wszystkie informacje na temat kolejności występowania zamówień i zwolnień dla kaŝdego procesu, system operacyjny moŝe decydować przy kaŝdym zamówieniu, czy P powinień czekać (P Z), czy teŝ nie. Poszczególne algorytmy róŝnią się pod względem ilości i typu wymaganych informacji. W najprostszym i najbardziej uŝytecznym modelu zakłada się, Ŝe kaŝdy proces zadeklaruje maksymalną liczbę zasobów kaŝdego typu, których mógłby potrzebować. Dysponując tą informacją moŝna zbudować algorytm unikania blokady. Algorytm ten sprawdza stan przydziałów zasobów, aby zagwarantować, Ŝe nigdy nie dojdzie do warunku czekania cyklicznego.

150 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 18 Stan przydziału zasobów jest określony przez: liczbę dostępnych i przydzielonych zasobów, maksymalne zapotrzebowanie P. Stan jest bezpieczny, jeśli istnieje porządek, w którym system operacyjny moŝe przydzielić zasób kaŝdemu procesowi stale unikając blokady. Mówiąc bardziej formalnie, system jest w stanie bezpiecznym tylko wtedy, gdy istnieje ciąg bezpieczny procesów. Ciąg < Po,P1,...,Pn > jest bezpieczny w danym stanie przydziałów, jeśli dla kaŝdego Pi jego potencjalne zapotrzebowanie na Za moŝe być zaspokojone przez bięŝąco dostępne zasoby oraz Za uŝytkowane przez wszystkie Pj, przy czym j < i. Jeśli więc Za nie są dostępne, to Pi Z, aŝ zakończą się wszystkie procesy Pj. Po ich zakończeniu, Pi moŝe otrzymać wszystkie potrzebne mu Za, dokończyć przewidzianą pracę, oddać przydzielone zasoby i zakończyć działanie. Kiedy Pi będzie zakończony, wtedy niezbędne Za

151 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 19 moŝe otrzymać Pi+1 itd. Jeśli Ŝaden taki ciąg nie istnieje, stan systemu określa się jako zagroŝony. stan blokady jest stanem zagroŝonym, ale nie wszystkie stany zagroŝone są blokadami, stan zagroŝony moŝe prowadzić do blokady, dopóki stan jest bezpieczny, dopóty system operacyjny moŝe unikać stanów zagroŝonych i blokad, w stanie zagroŝonym system operacyjny nie moŝe zapobiec zamówieniom Pi prowadzącym do blokady. Algorytm bankiera Nazwę zawdzięcza temu, Ŝe moŝe on posłuŝyć w systemie bankowym do zagwarantowania, iŝ bank nie wypłaci gotówki w takiej ilości, która uniemoŝliwiłaby spełnianie wymagań wszystkich jego klientów.

152 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 20 Ogólna koncepcja algorytmu 1. gdy P wchodzi do systemu, wówczas musi zadeklarować maksymalną liczbę egzemplarzy kaŝdego zasobu, przy czym liczba ta nie moŝe przekroczyć ogólnej liczby zasobów w systemie, 2. kiedy P zamawia zbiór Za, wtedy system musi określić, czy ich przydzielenie pozostawi system w stanie bezpiecznym. Jeśli tak, to Za zostaną przydzielone; w przeciwnym razie P Z, aŝ inne P nie zwolnią wystarczającej ilości Za w implementacji algorytmu bankiera występuje kilka struktur danych, struktury te przechowują stan przydziału zasobów. Niech: n będzie liczbą procesów w systemie, m będzie liczbą typów zasobów.

153 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 21 Wprowadza się następujące struktury danych: Dostępne Maksymalne Wektor o długości m, określający liczbę dostępnych zasobów kaŝdego typu. Dostępne[j] = k oznacza, Ŝe jest dostępnych k egzemplarzy Za typu Zj Tablica (nxm), definiująca maksymalne Ŝądania kaŝdego P. Maksymalne[i,j] = k oznacza, Ŝe Pi moŝe zamówić co najwyŝej k egzemplarzy Za typu Zj Przydzielone Tablica (nxm), definiująca liczbę zasobów poszczególnych typów przydzielonych dla kaŝdego P. Przydzielone[i,j] = k oznacza, Ŝe Pi ma przydzielonych k egzemplarzy Za typu Zj Potrzebne Tablica (nxm), przechowująca pozostałe do spełnienia zamówienia kaŝdego z procesów. Potrzebne[i,j] = k oznacza, Ŝe Pi moŝe jeszcze potrzebować k egzemplarzy Za typu Zj Potrzebne[i,j] = Maksymalne[i,j] - Przydzielone[i,j]

154 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 22 Przyjmijmy, Ŝe wiersze w tablicach: Przydzielone i Potrzebne moŝemy uwaŝać za wektory i odwoływać się do nich odpowiednio Przydzielone[i] oraz Potrzebne[i]. Algorytm bankiera Niech Zam[i] oznacza wektor zamówień dla procesu Pi. Kiedy Pi zgłasza zamówienie, to 1) jeśli Zam[i] Potrzebne[i], to krok (2). JeŜeli nie, to sygnalizuj błąd (przekroczenie Maksymalne[i]) 2) jeśli Zam[i] Dostępne, to krok (3). Jeśli nie, to Pi Z 3) wykonaj podstawienia Dostępne Dostępne - Zam[i] Przydzielone[i] Przydzielone[i] + Zam[i] Potrzebne[i] Potrzebne[i] - Zam[i] 4) wywołaj algorytm bezpieczeństwa 5) jeśli stan bezpieczny, to przydziel zasób; jeśli nie, to przywróć poprzedni stan przydziału zasobów i Pi Z

155 Systemy operacyjne / WspółbieŜność: blokady i zagłodzenia 23 Algorytm bezpieczeństwa Niech Roboczy i Końcowy oznaczają wektory o długościach odpowiednio m i n. 1. Roboczy := Dostępne Końcowy[i] := false dla i = 1, 2,..., n 2. Znajdujemy i takie, Ŝe zarówno a. Końcowy[i] = false, jak i b. Potrzebne[i] Roboczy. JeŜeli takie i nie istnieje, to skok do kroku Roboczy := Roboczy + Przydzielone[i]; Końcowy[i] := true Skok do kroku JeŜeli Końcowy[i] = true dla wszystkich i, to system jest w stanie bezpiecznym.

156 Zarządzanie pamięcią Zarzadzanie pamięcią (Memory Management) na poziomie SO jest uwarunkowane architekturą systemu cyfrowego. Podstawowymi elementami determinującymi wybór konkretnej organizacji i jej struktury są: pole adresacji argumentów rozkazu jego miejsce w słowie sprzętowe moŝliwości jego przekształcenia. W zaleŝności od długości pola adresacji (liczby bitów przeznaczonych na adres) przestrzeń adresowa (PA) moŝe pokrywać się z zakresem adresów PO, moŝe być większa lub mniejsza.

157 Funkcjami SO są: zagospodarowanie przestrzeni adresowej poprzez wykorzystanie mechanizmów translacji adresu ochrona zawartości pamięci dostęp do obszarów dzielonych efektywna organizacja PO Wielkość PO przeznaczonej na kod SO jest z reguły stała, natomiast problemem jest przydział wolnej części PO procesom uŝytkowym Pu. Istnieją trzy metody przydziału PO procesom Pu. 1. brak podziału - wolna przestrzeń adresowa jest w danej chwili w całości przydzielona jednemu Pu 2. podział pamięci - wolna przestrzeń adresowa jest w danej chwili podzielona na części, które są przydzielane pojedyńczym Pu

158 3. pamięć wirtualna - istnieje jedna lub wiele wirtualnych przestrzeni adresowych przydzielanych pojedyńczym Pu, mających w niewielkim stopniu pokrycie w pamięci operacyjnej Pamięć niepodzielna Brak moŝliwości podziału PA pamięci na fizycznie wyróŝnione bloki wynika z braku wyposaŝenia procesora w układy MM. Wolna PA pozostała po załadowaniu SO jest w całości przydzielona pojedyńczemu programowi uŝytkownika. W trakcie translacji początek adresacji jest określony pierwszym wolnym adresem. Wieloprogramowanie moŝna realizować poprzez wymiatanie (swapping).

159

160 Pamięć dzielona Celem dzielenia pamięci jest lepsze wykorzystanie elementów sprzętowych systemu, a głównie procesora i pamięci. Ponadto, jednoczesne załadowanie do PO więcej niŝ jednego Pu umoŝliwia szybkie przełączanie procesora z jednego procesu na drugi. W ramach systemów z podziałem pamięci moŝna wyróŝnić: 1. z podziałem statycznym 2. z podziałem dynamicznym Podział statyczny dzieli pamięć na stałe partycje o róŝnej wielkości lub na bloki o stałej długości zwane ramami (frame).

161 Podział dynamiczny jest realizowany z wykorzystaniem struktur opisujących wolne bloki pamięci (WBP) o róŝnych długościach oraz mechanizmu wymiatania. Podział dynamiczny Przykładowe funkcje realizujące podział dynamiczny Dla realizacji podziału dynamicznego pamięci moŝna stosować następujące hipotetyczne funkcje: przydziel(rozmiar, adres) Wybranie spośród wolnych bloków, bloku pokrywającego zapotrzebowanie (blok wolny moŝe być większy bądź równy blokowi określonemu przez parametr rozmiar). Efektem wykonania funkcji jest przekazanie adresu wybranego wolnego bloku poprzez

162 parametr adres oraz usunięcie przydzielonego bloku ze zbioru wolnych bloków. malloc(size), calloc(n, size), realloc(ptr, size) zwolnij(adres) Dołączenie bloku dotychczas zajętego do zbioru wolnych bloków. free(ptr) informuj(rozmiar_max) Przekazanie w argumencie rozmiar_max rozmiaru aktualnie największego wolnego bloku. msize(buffer) Struktury danych wolnych bloków Początkowo obszar wolny pamięci tworzy pojedyńczy blok. Następnie w trakcie wykonywania funkcji przydziału bloków pamięci o Ŝądanej długości z WBP wydzielony jest fragment. Dalej kolejne wywołania

163 funkcji przydziału i zwrotu bloków, zgłaszane w dowolnym porządku, dzielą cały obszar pamięci na wolne i zajęte bloki o róŝnych długościach. Dla prawidłowej gospodarki wolnymi blokami zbiór WBP musi być zorganizowany w jedną strukturę (garbage collection). Wykorzystuje się do tego celu : listy jedno lub dwukierunkowe mapy bitowe tablice wolnych bloków Dobranie odpowiedniej struktury WBP w połączeniu z algorytmem alokacji ma decydujące znaczenie dla sprawności MM. Algorytmy alokacji Zadaniem algorytmu alokacji jest wybranie WBP, w ramach którego moŝe być wydzielony obszar o Ŝądanej długości. Obszar ten co do długości

164 moŝe być całym blokiem lub jego częścią, pozostawiając niewykorzystany fragment jako WBP o mniejszej długości. W systemie moŝe być określona wartość n będąca długością minimalną WBP. JeŜeli pozostały po przydziale fragment jest mniejszy od minimalnego ( n), to część przydzielonego bloku tworzy fragmentację. W zaleŝności od SO spotykamy róŝne algorytmy alokacji. Rozpatrzmy niektóre z nich. 1. Algorytm pierwszej zgodności (First Fit) Wybiera pierwszy blok ze zbioru WBP, którego długość jest nie mniejsza od długości Ŝądanego bloku. 2. Algorytm najlepszej zgodności (Best Fit) Wybiera ze zbioru WBP blok o najmniejszej długości spełniający wymagania zlecenia przydziału. 3. Algorytm najgorszej zgodności (Worst Fit)

165 Oparty na załoŝeniu, Ŝe najkorzystniejsze jest przydzielanie obszarów największych. 4. Algorytm bliźniaków (Buddies) Oparty na podziale pamięci (o długości 2 k ) na dwa bliźniacze bloki. Jeden z nich jest dalej połowiony, aŝ do uzyskania bloku o minimalnej długości spełniającego wymagania zlecenia przydziału. 1. Przy wyborze algorytmu alokacji naleŝy uwzględnić takie czynniki jak: prędkość prostotę efekt fragmentacji 2. Efektom fragmentacji moŝna przeciwdziałać przez: zwalnianie i scalanie zagęszczanie i relokacje stronicowanie

166 Pamięć wirtualna Def. Pamięcią wirtualną nazywamy system pamięci złoŝony z co najmniej dwóch rodzajów pamięci: małej i szybkiej (pamięci operacyjnej) oraz duŝej, lecz wolnej (pamięci pomocniczej), a takŝe z dodatkowego sprzętu i oprogramowania umoŝliwiającego automatyczne przenoszenie fragmentów pamięci z jednego rodzaju pamięci do drugiego. Pamięć wirtualna zatem sprawia wraŝenie pamięci, której szybkość dostępu jest zbliŝona do szybkości dostępu pamięci operacyjnej i której pojemność jest równa pojemności pamięci pomocniczej (PP). Przy realizacji pamięci wirtualnej stosuje się następujące metody: stronicowanie segmentowanie stronicowanie z segmentowaniem

167 Stronicowanie W odróŝnieniu od organizacji dopuszczającej zmienne długości bloków, rozwiązanie to bazuje na stałym podziale pamięci. Jednostkami takiego podziału są: ramy, ramki (frame) dla pamięci fizycznej strony (page) dla wirtualnej PA procesu System na bieŝąco przydziela ramy procesom w ten sposób, Ŝe dany proces moŝe mieć część stron umieszczonych w PO (strony aktywne) a resztę stron - w PP (strony nieaktywne). Mechanizm stronicowania ma dwa zadania: wykonywanie operacji odwzorowywania adresów wirtualnych (ad w ) w adresy rzeczywiste (ad r ), czyli określenie, do której strony odnosi

168 się adres w programie, oraz znajdowanie ramy, którą bieŝąco zajmuje dana strona przesyłanie - w zaleŝności od potrzeby - stron z PP do PO oraz odsyłanie nie uŝywanych juŝ stron z powrotem z PO do PP Opis rozmieszczenia stron oraz organizacja wolnych obszarów wymagają istnienia specjalnych tablic zawierających niezbędne informacje. Są to odpowiednio: tablica stron tablica ram Podział na ramy i strony wiąŝe się bezpośrednio z adresacją poprzez wydzielenie w polu adresowym bitów na numer strony. KaŜdy adres składa się z:

169 n bitowego numeru strony, d bitowego przemieszczenia

170 Przykład stronicowania

171 Stronicowanie z dwoma poziomami tablic stron page number page offset p i p 2 d

172 Pamięć wirtualna nie stawia Ŝadnych wymagań uŝytkownikowi i organizuje przydział pamięci systemowo wykorzystując tablice ram i stron. Wymaga to: obsługi przez system przerwania, zwanego chybieniem (page fault), sygnalizującego brak w PO strony, do której nastąpiło odwołanie. Strona taka mieści się w PP i jest ściągana do PO na Ŝądanie dla przyśpieszenia wyznaczania ad r tablica stron aktualnie wykonywanego Pu jest przenoszona do pamięci asocjacyjnej - w jednym cyklu dostępu następuje wybranie adresu ramy. Obsługa chybienia powoduje: 1. wskazanie ramy dla Ŝądanej strony 2. zwolnienie wskazanej ramy 3. ściągnięcie Ŝądanej strony w obszar wskazanej ramy 4. aktualizacja tablicy ram

173 Wskazaniem ramy, w przypadku braku ram wolnych zajmuje się algorytm wymiany (replacement algorithms). Zadaniem tego algorytmu jest usunięcie z PO strony najmniej potrzebnej w przyszłości i sprowadzenie na jej miejsce Ŝądanej strony. Uwagi: dobór długości strony ma wpływ na fragmentacje wewnętrzną (niewykorzystaną część ostatniej strony procesu) oraz upakowanie procesów w pamięci dla stron współdzielonych tablice powinny być modyfikowane tak, aby wskazywały wszystkie korzystające z danej strony procesy. W praktyce wyróŝnia się: strony jednoprocesowe strony wieloprocesowe

174 Współdzielenie stron

175 Algorytmy wymiany 1. FIFO (First-In First-Out) Usuwa stronę, która jako pierwsza (najdawniej) została sprowadzona do PO. 2. LIFO (Last-In First-Out) Usuwa stronę, która została sprowadzona do PO jako ostatnia. 3. LRU (Least Recently Used) Usuwa stronę, do której najdłuŝej nie było odwołań (najdawniej uŝywaną) 4. LFU (Least Frequently Used) Usuwa stronę, do której było najmniej odwołań (o najmniejszej częstości odwołań) 5. MRU (Most Recently Used) Usuwa stronę ostatnio uŝywaną 6. MFU (Most Frequently Used) Usuwa stronę najczęściej uŝywaną 7. RAND (Random)

176 Usuwa stronę wybraną losowo 8. LNR (Longest Next Reference) Usuwa stronę o maksymalnej wartości odległości wprzód (forward distance) 9. WS (Working Set) Usuwa stronę spoza zbioru roboczego 10. ATLAS (od nazwy komputera z pierwszą PW) Bazuje na miarach czasu bezczynności strony zakładając, Ŝe wykorzystywane są cyklicznie. Efektywność funkcjonowania PW Liczba chybień występujących w trakcie realizacji łańcucha odwołań jest zaleŝna od: pojemności PO stosowanego algorytmu

177 ObciąŜenie SO obsługą PW moŝe prowadzić do załamania systemu (trashing). Wynika to z nadmiernego (częstego) wykorzystywania systemu do wymiany stron i relatywnie niskiego wykorzystania do innych celów. Załamanie na krzywej przepustowości jest najbardziej widoczne w systemach wieloprogramowych, w których przy załoŝeniu poprawności algorytmu wymiany przydzielona programom pamięć jest zbyt mała. W celu unika tego typu sytuacji stosuje się kryteria globalne o duŝym stopniu złoŝoności np. określa się przepustowość na bieŝąco (liczbę uchybień) i przekroczenie określonego progu jest sygnalizowane.

178 Segmentacja Celem segmentacji jest organizacja PA w taki sposób, by odzwierciedlała logiczny podział informacji. Przestrzeń adresów (PA) dzieli się na segmenty, takie na przykład jak: tekst programu dane lokalne dane wspólne stos systemowy i tp. Przy organizacji pamięci wirtualnej programista moŝe korzystać z duŝej liczby segmentów i w odniesieniach do nich uŝywać nadanych przez siebie nazw. W ten sposób PA staje się dwuwymiarowa, poniewaŝ adresy w programie identyfikuje się za pomocą : nazwy segmentu

179 adresu wewnątrz segmentu. Odwzorowanie adresu moŝe być implementowane za pomocą tworzonej dla kaŝdego procesu tablicy segmentów, w której element o numerze s zawiera adres bazy (adres początku) i długość segmentu s danego procesu. Elementy tablicy segmentów nazywa się czasem deskryptorami segmentu (segment descriptor) user space physical memory space

180 celem segmentacji jest logiczny podział PA, podczas gdy celem stronicowania jest fizyczny podział pamięci, którą chcemy implementować jako pamięć na tym samym poziomie strony mają ustalony rozmiar wynikający z architektury komputera, podczas gdy rozmiar segmentów moŝe być dowolny, określony przez programistę w przypadku duŝych programów nie moŝna wszystkich segmentów umieścić w PO, zwłaszcza gdy pamięć musi być dzielona między kilka procesów. Mamy więc do czynienia z taką sytuacją, w której PW jest większa od pamięci fizycznej moŝemy zatem zastosować albo stronicowanie, albo wymieniać całe segmenty w przypadku stronicowania kaŝdy segment składa się na ogół z kilku stron i ma własną tablicę stron

181 Przykład współdzielenia segmentów

182 Translacja adresów w architekturze Intel segmentacja z dwupoziomowym stronicowaniem

183 Systemy operacyjne / Szeregowanie zadań 1 Cele szeregowania zadań Szeregowanie zadań zadowalający czas odpowiedzi, zadowalająca przepustowość wykonywania procesów, efektywność wykorzystania procesora. Typy szeregowania zadań długoterminowe, średnioterminowe, krótkoterminowe, wejścia/wyjścia.

184 Systemy operacyjne / Szeregowanie zadań 2

185 Systemy operacyjne / Szeregowanie zadań 3

186 Systemy operacyjne / Szeregowanie zadań 4 Algorytmy porządkujące zbiór procesów w stanie gotowym (G) nazywamy algorytmami szeregowania (scheduling). Algorytmy te dzielą się na dwie klasy: bez wywłaszczania procesu z wywłaszczaniem procesu. Wywłaszczanie (preemption) procesu polega na odebraniu mu procesora w wyniku zajścia jakiegoś zdarzenia zewnętrznego. W algorytmach bez wywłaszczeń procesor jest przydzielany innemu procesowi tylko wtedy, gdy proces zajmujący procesor Z.

187 Systemy operacyjne / Szeregowanie zadań 5 Podstawowymi algorytmami szeregowania są: 1. kolejkowy bez wywłaszczeń (FIFO) 2. okręŝny z wywłaszczaniem (RR) 3. priorytetowy z priorytetami statycznymi lub dynamicznymi 4. dwupoziomowy z kolejkami priorytetowymi Informacje wykorzystywane w algorytmach szeregowania czas przebywania w pamięci czas wykorzystania procesora priorytet procesu modyfikacje priorytetu procesu

188 Systemy operacyjne / Szeregowanie zadań 6 Kryteria szeregowania (TSS) sprawiedliwy dostęp do procesora maksymalna wydajność w sensie zajętości CPU czas odpowiedzi dla uŝytkowników pracujących w trybie interaktywnym czas odpowiedzi dla uŝytkowników pracujących w trybie wsadowym maksymalna liczba prac przetwarzana w czasie Zdarzenia powodujące ponowne szeregowanie wyczerpał się kwant czasu proces zakończył działanie (exit) procesowi brak pamięci do kontynuacji działania proces wywołał funkcję sleep ( Z ) pojawił się proces o wyŝszym priorytecie

189 Systemy operacyjne / Szeregowanie zadań 7 Przegląd algorytmów szeregowania Algorytm FIFO (FCFS) Algorytm ten działa według następujących zasad: procesy są uporządkowane w kolejności przechodzenia ich w stan G procesor jest przydzielany procesowi najdłuŝej oczekującemu przydział ten trwa dotąd, dopóki dany proces nie zostanie przeniesiony w stan Z Zalety: prosty w implementacji szybki w wykonaniu Wady: moŝliwość zawładnięcia procesorem przez proces działający w długiej (nieskończonej) pętli długi okres oczekiwania procesów (szczególnie krótkich) na wykonanie

190 Systemy operacyjne / Szeregowanie zadań 8 Algorytm okręŝny (RR) Algorytm ten działa wg następujących zasad: procesy są uporządkowane w sekwencję, początkowo w kolejności przechodzenia ich w stan G procesor jest przydzielany zawsze pierwszemu procesowi oczekującemu w sekwencji proces jest wywłaszczany po przekroczeniu określonego kwantu czasu i przenoszony na koniec kolejki, a procesor jest przydzielany następnemu w kolejce Uwagi: kaŝdy proces w stanie G otrzymuje procesor na kwant czasu, chyba Ŝe zmieni swój stan Z upływające interwały czasowe są zliczane przez proces obsługi zegara (Pz), który inicjuje operacje wywłaszczania w trybie systemowym zegar interwałów jest zatrzymywany

191 Systemy operacyjne / Szeregowanie zadań 9 Zaletą - jest przydział procesora wszystkim istniejącym Pu w sposób równomierny, przy czym Ŝaden z nich nie moŝe go zdominować Wadą - jest dodatkowe zuŝytkowanie czasu procesora na obsługę Pz i przełączanie procesów. Algorytm priorytetowy (PR) Algorytm ten działa według następujących zasad: procesy naleŝące do zbioru G są umieszczane w kolejkach priorytetowych według priorytetów w sposób sekwencyjny procesor przydzielany jest kolejno procesom znajdującym się w kolejce o najwyŝszym priorytecie według algorytmu FIFO, a następnie (gdy dana kolejka staje się pusta) procesom z kolejki o niŝszym priorytecie

192 Systemy operacyjne / Szeregowanie zadań 10 Uwagi. Priorytety mogą być ustalane: statycznie - w chwili tworzenia procesu dynamicznie - w czasie istnienia procesu Zmiany wartości priorytetów mogą być spowodowane: naruszeniem ograniczeń systemowych naruszeniem ograniczeń obliczeniowych wywołaniem sleep dostępem do sytemowych struktur danych rodzajem wywołania systemowego (open /dev/hd) ograniczeniem czasowym określającym chwilę uruchomienia procesu

193 Systemy operacyjne / Szeregowanie zadań 11 Algorytm dwupoziomowy (SP) Algorytm ten składa się z dwóch poziomów: algorytmu górnego poziomu zarządzającego pamięcią wirtualną (swapper) algorytmu niskiego poziomu zarządzającego dostępem do procesora (scheduler) Inne typy algorytmów szeregowania: SPN - shortest process next, wymaga wstępnej estymacji czasu wykonania, przewidywalność czasu zakończenia długich procesów ograniczona, moŝliwość zagłodzenia długich procesów. SRT - shortest remaining time (preemptive SPN), HRRN - highest response ratio next, gdzie R = ( w + s ) / s w czas spędzony w oczekiwaniu na procesor,

194 Systemy operacyjne / Szeregowanie zadań 12 s oczekiwany czas obsługi. Feedback - preemptive + kolejki o róŝnych priorytetach zmieniane dynamicznie, kara zadania wykonujące się długo, nie wymaga a priori estymacji czasu wykonania procesów.

195 Systemy operacyjne / Szeregowanie zadań 13

196 Systemy operacyjne / Szeregowanie zadań 14

197 Systemy operacyjne / Szeregowanie zadań 15 Szeregowanie w tradycyjnym systemie Unix wielopoziomy feedback z wykorzystaniem RR w kaŝdej kolejce priorytetów, priorytety przeliczane raz na sekundę, priorytet bazowy dzieli listę procesów na zbiory (ang. bands), proces utrzymywany priorytetem w swoim zbiorze. Zbiory procesów: 1. swapper, 2. zarządzanie wejściem/wyjściem urządzeń blokowych, 3. zarządzanie plikami, 4. zarządzanie wejściem/wyjściem urządzeń znakowych, 5. procesu uŝytkowe. Szeregowanie w systemie Linux Klasy szeregowania SCHED_FIFO wątki FIFO czasu rzeczywistego, SCHED_RR wątki RR czasu rzeczywistego, SCHED_OTHER pozostałę wątki.

198 Systemy operacyjne / Szeregowanie zadań 16 moŝliwość nadawania priorytetów w obrębie klasy,

199 Systemy operacyjne / Szeregowanie zadań 17 Klasy priorytetów real-time, kernel, time-shared. Szeregowanie w Unix SVR4 Preemption points w jądrze systemu operacyjnego.

200 Systemy operacyjne / Szeregowanie zadań 18 Szeregowanie w Windows 2000 Dwie klasy priorytetów real-time (niezmienne priorytety), variable (dynamiczne priorytety). Priorytety procesów i wąśtków w obrębie procesu (od +2 do 2 w stosunku do procesu).

201 Systemy operacyjne / Szeregowanie zadań 19

202 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 1 Zarządzanie urządzeniami zewnętrznymi Podstawową funkcją kaŝdego SO jest obsługa fizycznych UZ. Podsystem zarządzania UZ powinien zapewniać: niezaleŝność od kodów znaków niezaleŝność od urządzeń we/wy wydajność jednolite traktowanie urządzeń W SK wyróŝnia się kilka poziomów obsługi UZ: 1. poziom fizyczny - bezpośrednia manipulacja rejestrami UZ, obsługa przerwań, inicjowanie transmisji 2. poziom wywołań systemowych (dyrektyw) - komunikacja z programami obsługi UZ (device driver) 3. poziom usług (File Manager, Explorer, File Control Service i tp.) oferujący jednolity sposób dostępu.

203 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 2 Programy obsługi UZ (Pou) Def. Program obsługi UZ (device driver) jest zbiorem funkcji i danych umoŝliwiających bezpośredni dostęp do urządzenia. Właściwości: Pu mogą komunikować się z UZ jedynie przy pomocy Pou Pou są integralną częścią jądra, przy czym dołączenie nowego Pou do SO moŝe odbywać się: statycznie (poprzez utworzenie nowego jądra) dynamicznie komunikacja jądra z Pou jest realizowana przy pomocy standardowego zestawu procedur, który jest wspólny dla wszystkich Pou wszystkie UZ są traktowane jako pliki (SU) jedynie Pou mają moŝliwość reakcji na przerwania sprzętowe generowane przez UZ

204 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 3 Sposób dostępu do UZ Dostęp do UZ jest realizowany na analogicznych zasadach jak do plików. Odbywa się to w następujących krokach: 1. naleŝy otworzyć urządzenie przy uŝyciu funkcji open() podając jako parametr nazwę urządzenia z katalogu /dev. W przypadku pomyślenego zakończenia funkcja ta zwraca deskryptor pliku fd 2. następnie moŝna wykonać Ŝądaną operacje we/wy jak np. write(), read(), ioctl(). W trakcie wykorzystywania tych funkcji urządzenie jest identyfikowane przez deskryptor pliku fd 3. po wykorzystaniu urządzenia naleŝy go zamknąć uŝywając funkcji close()

205 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 4 Przepływ sterowania w systemie W systemie Unix (z poziomu uŝytkownika) UZ są traktowne jak pliki, a zatem wszelkie zlecenia wykonania operacji we/wy przechodzą przez FS. Po odnalezieniu przez FS węzła (i-node) odpowiadającego plikowi reprezentującemu UZ, są odczytywane informacje w nim zawarte, a więc: rodzaj urządzenia: blokowe, znakowe nr podprogramu obsługi: major, minor number Tablice przełączające Pou (Device Switch Tables) W SO istnieją dwa rodzaje tablic dzięki którym następuje przełączenie na określony Pou, a mianowicie: tablice dla urządzeń znakowych tablice dla urządzeń blokowych

206 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 5 Indeksem do tych tablic jest nr główny (major number), który wskazuje na odpowiedni wiersz tablicy. Wiersz zawiera nazwę oraz zestaw wskaźników do procedur Pou. W zaleŝności od rodzaju wywołania systemowego we/wy jest wybierany wskaźnik do odpowiadającej mu procedury Pou. Procedura ta jest wywoływana i jest jej przekazywany jako argument nr pomocniczy (minor number). Zestaw procedur Pou xx_init(); xx_open(); xx_close(); xx_read(); xx_write(); xx_strategy(); xx_intr(); xx_ioctl(); xx_select();

207 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 6 Typy urządzeń wejścia/wyjścia do komunikacji z uŝytkownikiem (drukarki, terminale), do komunikacji z dodatkowym sprzętem elektronicznym (dyski, taśmy, czujniki, kontrolery), urządzenia komunikacyjne (karty sieciowe, sterowniki linii cyfrowych, modemy). RóŜnice w zarządzaniu urządzeniami wejścia-wyjścia złoŝoność obsługi, wymóg dodatkowej obsługi sprzętowej (np. pamięć wirtualna na dysku), rozróŝnienie priorytetów, jednostka przepływu, reprezentacja danych, reakcja urządzeń i obsługa błędów, obsługa programowa bądź sterowana przerwaniami,

208 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 7

209 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 8 DMA Direct Memory Access Ewolucja zarządzania urządzeniami zewnętrznymi procesor zarządzał bezpośrednio urządzeniami, dodanie kontrolerów i modułów wejścia/wyjścia, dodanie przerwań kontrolerów, DMA Idea działania DMA moduły DMA kontrolują wymianę danych pomiędzy pamięcią główną a urządzeniami wejścia/wyjścia, praca procesora przerywana dopiero po przesłaniu całego bloku danych, wykorzystuje wykradanie cykli procesorowi, procesor pauzuje jeden cykl szyny systemowej, nie ma przerwań w trakcie przesyłania, nie ma zmiany kontekstu.

210 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 9

211 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 10

212 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 11

213 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 12

214 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 13 Modele organizacji wejścia/wyjścia

215 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 14 Szeregowanie dostępu do pamięci dyskowej Czas wyszukiwania - (seek time) czas ustawienia głowicy na docelowej ścieŝce, Opóźnienie rotacyjne - (rotational delay, latency) czas ustawienia głowicy na początku docelowego sektora, Czas dostępu (access time) czas wyszukiwania + opóźnienie rotacyjne to czas wyszukiwania decyduje o wydajności duŝa rola dyskowej pamięci podręcznej (algorytmy wymiany LRU, LFU),

216 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 15

217 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 16 RAID = Redundant Array of Independent Disks RAID jest zbiorem fizycznych dysków widzianych przez system operacyjny jako jeden dysk logiczny, dane są rozdystrybuowane na wszystkie dyski, redundantność przechowywanej informacji jest wykorzystywana do przechowywania informacji o parzystości, co gwarantuje odzyskanie danych w przypadku awarii elementu RAID.

218 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 17

219 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 18

220 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 19

221 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 20

222 Systemy operacyjne / Zarządzanie urządzeniami zewnętrznymi 21 Własności poziomów RAID

223 Systemy operacyjne / System plików 1 Zarządzanie plikami System plików system zarządzania plikami częścią systemu operacyjnego, dane wejściowe aplikacji pobierane z plików, dane wyjściowe aplikacji zachowywane w plikach w celu długookresowego przechowywania. Pojęcia dotyczące plików: Pole podstawowa jednostka danych, zawiera pojedynczą wartość, charakteryzująca się rozmiarem i typem danych, Rekord kolekcja powiązanych pól, traktowany jako pewna całość, Plik kolekcja podobnych rekordów, traktowany jako pewna całość identyfikowana przez unikatową nazwę pliku, dostęp do pliku moŝe być ograniczony poprzez prawa dostępu,

224 Systemy operacyjne / System plików 2 Baza danych kolekcja powiązanych danych z określonymi relacjami pomiędzy poszczególnymi danymi. Typowe operacje pobierz wszystko, pobierz jeden, pobierz następny, pobierz poprzedni, wstaw jeden, usuń jeden, zaktualizuj jeden, pobierz kilka. System zarządzania plikami system udostępniający wyłączną metodę dostępu do plików, jego istnienie uwalnia od konieczności implementacji własnych metod dostępu.

225 Systemy operacyjne / System plików 3 Zadania systemu zarządzania plikami oferowanie metod zarządzania danymi spełniających wymagania uŝytkowników, gwarantowanie prawidłowości przechowywania danych w plikach, optymalizowanie wydajności, udostępnianie obsługi wejścia/wyjścia dla jak największy klasy urządzeń do przechowywania danych, minimalizacja bądź eliminacja potencjalnych moŝliwości uszkodzenia bądź utracenia danych, udostępnianie obsługi wejścia/wyjścia dla wielu uŝytkowników,

226 Systemy operacyjne / System plików 4 Minimalny zestaw wymagań wobec systemu plików: kaŝdy uŝytkownik powinien móc tworzyć i modyfikować pliki, kaŝdy uŝytkownik powinien mieć kontrolowany dostęp do plików innych uŝytkowników, kaŝdy uŝytkownik powinien móc kontrolować dostęp do własnych plików, kaŝdy uzytkownik powinien móc zmieniać strukturę własnych plików na potrzeby aplikacji, kaŝdy uŝytkownik powinien móc przemieszczać dane między plikami, kaŝdy uŝytkownik powinien móc przechowywać i odtwarzać pliki w przypadku uszkodzenia, kaŝdy uŝytkownik powinien móc odwoływać się do plików poprzez nazwy symboliczne.

227 Systemy operacyjne / System plików 5

Systemy operacyjne Programowanie w języku powłoki sh

Systemy operacyjne Programowanie w języku powłoki sh Systemy operacyjne Programowanie w języku powłoki sh [2] Programowanie w języku powłoki sh Powłoka, interpreter poleceń angshell jest programem uruchamianym standardowo po otwarciu sesji użytkownika przez

Bardziej szczegółowo

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19 Systemy Operacyjne Programowanie w języku powłoki sh dr inż. Tomasz Jordan Kruk T.Kruk@ia.pw.edu.pl Instytut Automatyki i Informatyki Stosowanej Politechnika Warszawska Systemy operacyjne / Programowanie

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

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

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie

Bardziej szczegółowo

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

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Definicja systemu operacyjnego (1) Miejsce,

Bardziej szczegółowo

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

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Miejsce, rola i zadania systemu operacyjnego

Bardziej szczegółowo

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

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wprowadzenie Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć

Bardziej szczegółowo

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

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego Systemy operacyjne wprowadzenie 1 Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) System operacyjny jest zbiorem ręcznych i automatycznych procedur, które pozwalają grupie osób na

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie

Bardziej szczegółowo

Systemy operacyjne. Paweł Pełczyński

Systemy operacyjne. Paweł Pełczyński Systemy operacyjne Paweł Pełczyński ppelczynski@swspiz.pl 1 Program przedmiotu Wprowadzenie Struktura systemów operacyjnych Procesy i Wątki Komunikacja międzyprocesowa Szeregowanie procesów Zarządzanie

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

SYSTEMY OPERACYJNE WYKLAD 6 - procesy Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - procesy Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 Zasoby: PROCES wykonujący się program ; instancja programu

Bardziej szczegółowo

Systemy operacyjne III

Systemy operacyjne III Systemy operacyjne III WYKŁAD 2 Jan Kazimirski 1 Procesy w systemie operacyjnym 2 Proces Współczesne SO w większości są systemami wielozadaniowymi. W tym samym czasie SO obsługuje pewną liczbę zadań procesów

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej

Bardziej szczegółowo

1 Przygotował: mgr inż. Maciej Lasota

1 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 1 1/7 Język C Instrukcja laboratoryjna Temat: Programowanie w powłoce bash (shell scripting) 1 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do programowania w powłoce Skrypt powłoki

Bardziej szczegółowo

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc. Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez

Bardziej szczegółowo

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy) Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany

Bardziej szczegółowo

Wprowadzenie do systemów operacyjnych

Wprowadzenie do systemów operacyjnych SOE - Systemy Operacyjne Wykład 1 Wprowadzenie do systemów operacyjnych dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW System komputerowy Podstawowe pojęcia System operacyjny

Bardziej szczegółowo

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA, który zawiera: zmienne, konstrukcje warunkowe i iteracyjne (IF-THEN-ELSE, CASE, DO WHILE, DO UNTIL), konfigurowane środowisko użytkownika. METAZNAKI zestaw

Bardziej szczegółowo

Systemy operacyjne III

Systemy operacyjne III Systemy operacyjne III Jan Kazimirski 1 Opis zajęć Prezentacja budowy i zasad działania współczesnego systemu operacyjnego Prezentacja podstawowych elementów systemów operacyjnych i zasad ich implementacji

Bardziej szczegółowo

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

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz Podstawy informatyki System operacyjny dr inż. Adam Klimowicz System operacyjny OS (ang. Operating System) Program komputerowy bądź zbiór programów, który zarządza udostępnianiem zasobów komputera aplikacjom.

Bardziej szczegółowo

Programowanie współbieżne Wykład 2. Iwona Kochańska

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1 dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1 Cel wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działanie systemu operacyjnego

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

SYSTEMY OPERACYJNE WYKLAD 6 - wątki Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - wątki Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 1. Wątki 2. Planowanie przydziału procesora (szeregowanie

Bardziej szczegółowo

Jądro systemu operacyjnego

Jądro systemu operacyjnego Jądro systemu operacyjnego Jądro (ang. kernel) jest to podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego zadania. Zapewnia ono usługi systemowe takie jak: komunikacja między

Bardziej szczegółowo

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Informatyki Systemy sterowane przepływem argumentów Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Komputer i jego architektura Taksonomia Flynna 2 Komputer i jego architektura Taksonomia Flynna Komputer Komputer

Bardziej szczegółowo

Procesy, wątki i zasoby

Procesy, wątki i zasoby Procesy, wątki i zasoby Koncepcja procesu i zasobu, Obsługa procesów i zasobów, Cykl zmian stanów procesu i kolejkowanie, Klasyfikacja zasobów, Wątki, Procesy i wątki we współczesnych systemach operacyjnych.

Bardziej szczegółowo

LEKCJA TEMAT: Zasada działania komputera.

LEKCJA TEMAT: Zasada działania komputera. LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem

Bardziej szczegółowo

Zakład Systemów Rozproszonych

Zakład Systemów Rozproszonych Zakład Systemów Rozproszonych Politechnika Rzeszowska Moduł 1: Wprowadzenie do systemu UNIX Interpretator poleceń Interpreter poleceń użytkownika, czyli inaczej powłoka. Powłoka pośredniczy pomiędzy użytkownikiem

Bardziej szczegółowo

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI 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ą

Bardziej szczegółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

System komputerowy. System komputerowy

System komputerowy. System komputerowy System komputerowy System komputerowy System komputerowy układ współdziałających ze sobą (według pewnych zasad) dwóch składowych: sprzętu komputerowego (hardware) oraz oprogramowania (software) po to,

Bardziej szczegółowo

1.1 Definicja procesu

1.1 Definicja procesu 1 Procesy pojęcia podstawowe 1 1.1 Definicja procesu Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

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

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu Proces Procesy i wątki Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

Zarządzanie procesami i wątkami

Zarządzanie procesami i wątkami SOE - Systemy Operacyjne Wykład 4 Zarządzanie procesami i wątkami dr inŝ. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Pojęcie procesu (1) Program zbiór instrukcji dla procesora

Bardziej szczegółowo

projektowanie systemu

projektowanie systemu projektowanie systemu cel użytkownika: system operacyjny powinien być wygodny, łatwy w użyciu, prosty do nauczenia, niezawodny, bezpieczny i szybki cel producenta: system operacyjny powinien być łatwy

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

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

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci

Bardziej szczegółowo

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

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010 Tryb studiów Studia stacjonarne Kierunek studiów Informatyka Poziom studiów Pierwszego stopnia Rok studiów/semestr 2(rok)/(sem) Specjalność Bez specjalności Kod katedry/zakładu w systemie USOS 10000000

Bardziej szczegółowo

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh. Powłoka I Popularne implementacje W stylu sh (powłoki zdefiniowanej w POSIX) bash (najpopularniejsza) zsh ksh mksh W stylu csh csh tcsh 12 października 2018 1 / 16 Powłoka II Zachęta Komunikuje się z użytkownikiem

Bardziej szczegółowo

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

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy Systemy operacyjne Systemy operacyjne Dr inż. Ignacy Pardyka Literatura Siberschatz A. i inn. Podstawy systemów operacyjnych, WNT, Warszawa Skorupski A. Podstawy budowy i działania komputerów, WKiŁ, Warszawa

Bardziej szczegółowo

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski Struktura systemu operacyjnego Schemat budowy systemu operacyjnego model warstwowy Schemat budowy systemu operacyjnego części składowe Większość systemów operacyjnych opiera się o koncepcję jądra, która

Bardziej szczegółowo

Proces y i y w i ąt ą ki

Proces y i y w i ąt ą ki Procesy i wątki Proces Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

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

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Spis treści Wprowadzenie... 11 1. Architektura procesorów rodziny x86... 17 1.1. Model procesorów

Bardziej szczegółowo

Powłoka interpreter poleceń systemu UNIX

Powłoka interpreter poleceń systemu UNIX SOE - Systemy Operacyjne Wykład 4 Powłoka interpreter poleceń systemu UNIX dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Powłoka Interpreter poleceń, powłoka (ang. shell)

Bardziej szczegółowo

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak Systemy operacyjne System operacyjny Linux - wstęp Anna Wojak 1 1 Wstęp Linux jest systemem z rodziny Unix. Pierwsza wersja systemu została opracowana w 1969 roku przez K.Thompsona i D.Ritchie Jest to

Bardziej szczegółowo

Informatyka. informatyka i nauki komputerowe (computer science)

Informatyka. informatyka i nauki komputerowe (computer science) Informatyka informacja i jej reprezentacje informatyka i nauki komputerowe (computer science) algorytmika efektywność algorytmów poprawność algorytmów złożoność obliczeniowa, problemy NP-trudne (NP-zupełne)

Bardziej szczegółowo

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

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj Systemy operacyjne wykład dr Marcin Czarnota laboratorium mgr Radosław Maj Plan wykładów 1. Wprowadzenie, 2. Procesy, wątki i zasoby, 3. Planowanie przydziału procesora, 4. Zarządzanie pamięcią operacyjną,

Bardziej szczegółowo

Podstawy Informatyki Systemy operacyjne

Podstawy Informatyki Systemy operacyjne Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Definicje systemu operacyjnego Zadania systemu operacyjnego Klasyfikacja systemów operacyjnych 2 Zasoby systemu komputerowego

Bardziej szczegółowo

System operacyjny MACH

System operacyjny MACH Emulacja w systemie MCH System operacyjny MCH 4. SD Systemu V HP/UX MS-DOS VMS inne Mikrojądro Zbigniew Suski Zbigniew Suski Podstawowe cele projektu MCH! Dostarczenie podstawy do budowy innych systemów

Bardziej szczegółowo

Prezentacja systemu RTLinux

Prezentacja systemu RTLinux Prezentacja systemu RTLinux Podstawowe założenia RTLinux jest system o twardych ograniczeniach czasowych (hard real-time). Inspiracją dla twórców RTLinux a była architektura systemu MERT. W zamierzeniach

Bardziej szczegółowo

Budowa systemów komputerowych

Budowa systemów komputerowych Budowa systemów komputerowych Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Współczesny system komputerowy System komputerowy składa

Bardziej szczegółowo

Systemy operacyjne Procesy i wątki

Systemy operacyjne Procesy i wątki Systemy operacyjne Procesy i wątki [2] Proces w systemie operacyjnym Procesem nazywamy wykonujący się program wraz z jego środowiskiem obliczeniowym. Proces stanowi podstawowy obiekt dynamiczny w systemie

Bardziej szczegółowo

16. Taksonomia Flynn'a.

16. Taksonomia Flynn'a. 16. Taksonomia Flynn'a. Taksonomia systemów komputerowych według Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześćdziesiątych XX wieku przez Michaela Flynna, opierająca się

Bardziej szczegółowo

Powłoka, redyrekcja, potok

Powłoka, redyrekcja, potok UNIX POWŁOKA I POTOK WYKŁAD 5 Powłoka, redyrekcja, potok UNIX POWŁOKA POWŁOKA ( ang. SHELL) - to program interpretujący polecenia użytkownika. nazywamy powłoką. Powłoka przyjmuje polecenia od użytkownika,

Bardziej szczegółowo

2009-03-21. Paweł Skrobanek. C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl http://pawel.skrobanek.staff.iiar.pwr.wroc.pl

2009-03-21. Paweł Skrobanek. C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl http://pawel.skrobanek.staff.iiar.pwr.wroc.pl Wrocław 2007-09 SYSTEMY OPERACYJNE WYKLAD 2 Paweł Skrobanek C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl http://pawel.skrobanek.staff.iiar.pwr.wroc.pl 1 PLAN: 2. Usługi 3. Funkcje systemowe 4. Programy

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................

Bardziej szczegółowo

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci UNIX: architektura i implementacja mechanizmów bezpieczeństwa Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci Plan prezentacji: Wprowadzenie do struktury systemów rodziny UNIX

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż. Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J:

Bardziej szczegółowo

Opis efektów kształcenia dla modułu zajęć

Opis efektów kształcenia dla modułu zajęć Nazwa modułu: Projektowanie i użytkowanie systemów operacyjnych Rok akademicki: 2013/2014 Kod: EAR-2-324-n Punkty ECTS: 5 Wydział: Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Kierunek:

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

2009-03-21. Paweł Skrobanek. C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl pawel.skrobanek.staff.iiar.pwr.wroc.pl

2009-03-21. Paweł Skrobanek. C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl pawel.skrobanek.staff.iiar.pwr.wroc.pl Wrocław 2007-09 SYSTEMY OPERACYJNE WPROWADZENIE Paweł Skrobanek C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl pawel.skrobanek.staff.iiar.pwr.wroc.pl 1 PLAN: 1. Komputer (przypomnienie) 2. System operacyjny

Bardziej szczegółowo

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych Systemy operacyjne Systemy operacyjne Inżynieria obliczeniowa, II rok Krzysztof Wilk Katedra Informatyki Stosowanej i Modelowania wilk@agh.edu.pl Wykłady: 7 tygodni po 2 h, s. 209, B-4 Projekty: 2 godziny

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011 http://www.wilno.uwb.edu.

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011 http://www.wilno.uwb.edu. SYLLABUS na rok akademicki 010/011 Tryb studiów Studia stacjonarne Kierunek studiów Informatyka Poziom studiów Pierwszego stopnia Rok studiów/ semestr 1(rok)/1(sem) Specjalność Bez specjalności Kod katedry/zakładu

Bardziej szczegółowo

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Czas realizacji zajęć: 135 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Zmienne śrowiskowe oraz ich eksportowanie, argumenty

Bardziej szczegółowo

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2) Wstęp do informatyki stęp do informatyki Polecenia (cz.2) Lista procesów top Pokaż listę procesów polecenie interaktywne Procesy Uruchamianie w tle. shell nie czeka na zakończenie procesu, można wydawać

Bardziej szczegółowo

Narzędzia informatyczne w językoznawstwie

Narzędzia informatyczne w językoznawstwie Narzędzia informatyczne w językoznawstwie Wiersz poleceń - Potoki i pliki wsadowe Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 22. października 2008 Marcin

Bardziej szczegółowo

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami Rok akademicki 2015/2016, Wykład nr 6 2/21 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2015/2016

Bardziej szczegółowo

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

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu Proces Procesy i wątki Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

Projektowanie. Projektowanie mikroprocesorów

Projektowanie. Projektowanie mikroprocesorów WYKŁAD Projektowanie mikroprocesorów Projektowanie układ adów w cyfrowych - podsumowanie Algebra Boole a Bramki logiczne i przerzutniki Automat skończony System binarny i reprezentacja danych Synteza logiczna

Bardziej szczegółowo

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz] Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową

Bardziej szczegółowo

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

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22 ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH struktury procesorów ASK SP.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 Maszyny wirtualne 2 3 Literatura c Dr inż. Ignacy

Bardziej szczegółowo

Budowa komputera Komputer computer computare

Budowa komputera Komputer computer computare 11. Budowa komputera Komputer (z ang. computer od łac. computare obliczać) urządzenie elektroniczne służące do przetwarzania wszelkich informacji, które da się zapisać w formie ciągu cyfr albo sygnału

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

Bardziej szczegółowo

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska Podstawy informatyki Izabela Szczęch Politechnika Poznańska SYSTEMY OPERACYJNE 2 Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Klasyfikacja systemów operacyjnych

Bardziej szczegółowo

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

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie. Procesy i wątki Proces Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

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

Wieloprogramowanie. Systemy operacyjne / Procesy i wątki str.4/32. Proces w systemie operacyjnym. Tworzenie i kończenie procesów Wieloprogramowanie Systemy Operacyjne Procesy i wątki dr inż. Tomasz Jordan Kruk T.Kruk@ia.pw.edu.pl Instytut utomatyki i Informatyki Stosowanej Politechnika Warszawska One program counter B C D switch

Bardziej szczegółowo

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna

Bardziej szczegółowo

Podstawowe zagadnienia

Podstawowe zagadnienia SWB - Systemy operacyjne w systemach wbudowanych - wykład 14 asz 1 Podstawowe zagadnienia System operacyjny System czasu rzeczywistego Systemy wbudowane a system operacyjny Przykłady systemów operacyjnych

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Laboratorium systemów operacyjnych ćwiczenie nr 3. [ilość modułów: 1] Temat zajęć: Procesy w systemie operacyjnym

Laboratorium systemów operacyjnych ćwiczenie nr 3. [ilość modułów: 1] Temat zajęć: Procesy w systemie operacyjnym Temat zajęć: Procesy w systemie operacyjnym Czas realizacji zajęć: 45 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Pojęcie procesu, procesy w systemie, usuwanie procesów, priorytety

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

Język programowania: Lista instrukcji (IL Instruction List) Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne

Bardziej szczegółowo

Struktury systemów operacyjnych

Struktury systemów operacyjnych Struktury systemów operacyjnych Jan Tuziemski Część slajdów to zmodyfiowane slajdy ze strony os-booi.com copyright Silberschatz, Galvin and Gagne, 2013 Cele wykładu 1. Opis usług dostarczanych przez OS

Bardziej szczegółowo

Interpreter poleceń oraz zmienne środowiskowe

Interpreter poleceń oraz zmienne środowiskowe Temat zajęć Zakres materiału Skrypty powłoki Tworzenie i uruchamianie skryptów powłoki bash Interpreter poleceń oraz zmienne środowiskowe Interpreter poleceń nazywany inaczej także powłoką systemową pośredniczy

Bardziej szczegółowo

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

Skanowanie podsieci oraz wykrywanie terminali ABA-X3 Skanowanie podsieci oraz wykrywanie terminali ABA-X3 Terminale ABA-X3 od dostarczane od połowy listopada 2010 r. są wyposażane w oprogramowanie umożliwiające skanowanie podsieci w poszukiwaniu aktywnych

Bardziej szczegółowo

Procesy, zasoby i wątki

Procesy, zasoby i wątki Dariusz Wawrzyniak Koncepcja procesu i zasobu Obsługa procesów i zasobów Cykl zmian stanów procesu i kolejkowanie Klasyfikacja zasobów Wątki Procesy i wątki we współczesnych systemach operacyjnych Plan

Bardziej szczegółowo

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko Wprowadzenie do systemów operacyjnych mgr inż. Krzysztof Szałajko Co to jest system operacyjny? Co to jest system komputerowy? 2 / 37 Definicja: system operacyjny System operacyjny jest programem pośredniczącym

Bardziej szczegółowo

Procesy, zasoby i wątki

Procesy, zasoby i wątki Procesy, zasoby i wątki Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Koncepcja procesu i zasobu Obsługa procesów i zasobów Cykl zmian stanów procesu i kolejkowanie Klasyfikacja zasobów

Bardziej szczegółowo

Procesy, zasoby i wątki

Procesy, zasoby i wątki Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Koncepcja procesu i zasobu Obsługa procesów i zasobów Cykl zmian stanów procesu i kolejkowanie Klasyfikacja zasobów Wątki Procesy i wątki

Bardziej szczegółowo

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system. Wstęp Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system. Przedstawienie architektur sprzętu wykorzystywanych do

Bardziej szczegółowo

Systemy Operacyjne I: Procesy

Systemy Operacyjne I: Procesy Politechnika Poznańska 4 kwietnia 2013 Materiały Prezentacja oraz inne materiały zostały przygotowane na podstawie: Użytkowanie systemu operacyjnego UNIX - dr D.Wawrzyniak Systemy operacyjne - skrypt -

Bardziej szczegółowo

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017 Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2014-2018 realizacja w roku akademickim 2016/2017 1.1. PODSTAWOWE INFORMACJE O PRZEDMIOCIE/MODULE Nazwa przedmiotu/ modułu

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 12 Wspomaganie systemu operacyjnego: pamięć wirtualna Partycjonowanie Pamięć jest dzielona, aby mogło korzystać z niej wiele procesów. Dla jednego procesu przydzielana jest

Bardziej szczegółowo

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

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi) Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie drugie (jedne zajęcia) Temat: Procesy i sygnały w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Budowa procesu

Bardziej szczegółowo

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

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux. Kod szkolenia: Tytuł szkolenia: PS/LINUX Programowanie systemowe w Linux Dni: 5 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów tworzących aplikacje w systemie Linux, którzy chcą poznać

Bardziej szczegółowo