sowyk, pwr, informatyka i zarządzanie, Informatyka, Systemy operacyjne- laborki i wykład


SYSTEMY OPERACYJNE

Literatura:
(podstawowa, fragmenty wykładu powstały na bazie innych źródeł - o tym na wykładzie...)
Systemy operacyjne:
1. A. Silbershatz, J.L. Peterson, P.B. Galvin, Podstawy systemów operacyjnych, WNT 1993.
2. A.S. Tannenbaum, Rozproszone systemy operacyjne, Wyd. Nauk. PWN, 1997.
3. A.M. Lister, R.D. Eager, Wprowadzenie do systemów operacyjnych, WNT, 1994.
Omówienie zagadnień związanych z przedmiotem w kontekście UNIX'a:
4. W.R. Stevens, Programowanie zastosowań sieciowych w systemie UNIX, WNT, 1995.
5. Gabassi, Przetwarzanie rozproszone w systemie UNIX, Wyd. Lupus.
6. M.J Bach, Budowa systemu operacyjnego UNIX, WNT, 1995.

1. Wprowadzenie

1.1 System operacyjny.

System operacyjny (najprościej) - program, który pośredniczy między użytkownikiem komputera a sprzętem.

Zadania s.o:

Przykłady:

- jednolity sposób dostępu do urządzeń zewnętrznych

- zbiory bloków dyskowych widziane jako pliki o symbolicznych nazwach

- duża, szybka, dedykowana pamięć operacyjna

- współbieżne wykonanie programów (jako abstrakcja równoległości)

- zasoby to „obiekty” niezbędne do wykonania programu, np. pamięć, czas CPU, wejście-wyjście, porty komunikacyjne (wszystko co przedstawia wartość funkcjonalna dla systemu)

- strategie przydziału i odzyskiwania zasobów (zarządzanie pamięcią, zarządzanie procesorem, zarządzanie plikami, zarządzanie urządzeniami)

- efektywność zarządzania zasobami decyduje o wydajnej eksploatacji sprzętu komputerowego

- wygoda użycia (ustawianie przełączników, karty perforowane, taśmy perforowane, terminale graficzne z myszką i klawiaturą)

Składowe systemu komputerowego:

1.2 Historia

Wczesne systemy operacyjne - „goły sprzęt”:

- wielkie maszyny obsługiwane za pośrednictwem konsoli

- dla jednego użytkownika (konieczność harmonogramów pracy etc.)

- programista/użytkownik pełnił rolę operatora

· nieefektywne wykorzystanie kosztownych zasobów

- niskie wykorzystanie CPU

- pełna sekwencyjność pracy urządzeń

- przestoje sprzętu związane z wykonywaniem czynności operatorskich

-asemblery, programy ładujące, programy łączące, biblioteki typowych funkcji, kompilatory, programy sterujące urządzeń

Systemy wsadowe:

- początkowo sterowanie należy do monitora

- przekazanie sterowania do zadania

- po zakończeniu zadania sterowanie wraca do monitora

- Istotna zmiana trybu pracy z punktu widzenia użytkownika

- Zwiększona przepustowość systemu kosztem średniego czasu obrotu zadania

- Problem: niska wydajność (CPU i urządzenia we-wy nie mogą pracować równocześnie, czytnik kart bardzo wolny) Rozwiązanie: praca w trybie pośrednim (off-line)

- Przyspieszenie obliczeń poprzez ładowanie zadań do pamięci z taśm oraz czytanie kart i drukowanie wyników wykonywane off-line

- Komputer główny nie jest ograniczony prędkością pracy czytników kart i drukarek, a jedynie prędkością szybszych stacji taśmowych

- Nie są potrzebne zmiany w programach użytkowych przy przejściu do trybu pracy pośredniej

- Możliwość używania wielu systemów czytnik-taśma i taśma-drukarka dla jednego CPU

0x01 graphic

Buforowanie :

- Nie eliminuje całkowicie przestojów CPU czy urządzeń we-wy

- Wymaga przeznaczenia pamięci na systemowe bufory

- Niweluje wahania w czasie przetworzenia danych

Spooling (simultaneous peripheral operation on-line):

- Możliwe dzięki upowszechnieniu się systemów dyskowych

- Podczas wykonania jednego zadania system operacyjny czyta następne zadanie z czytnika kart na dysk (kolejka zadań) oraz np. drukuje umieszczone na dysku wyniki poprzedniego zadania

- Pula zadań - możliwość wyboru kolejnego zadania do wykonania

- Dalsza rozbudowa systemu operacyjnego (moduł wczytujący, moduł sterujący, moduł wypisujący)

0x01 graphic

Systemy z podziałem czasu:

- Interakcja użytkownika z systemem komputerowym (zadanie interakcyjne składa się z wielu krótkich działań)

- System plików dostępnych bezpośrednio (dostęp do programów i danych)

- Wymiana zadania między pamięcią i dyskiem (ang. swapping)

Systemy równoległe:

Systemy czasu rzeczywistego:

Rozwój sprzętu: (cztery generacje): lampy, tranzystory, układy scalone małej skali integracji, układy scalone dużej skali integracji

Wymagania sprzętowe dla współczesnych systemów:

- system przerwań (tablice przerwań, podczas wykonywania przerwania inne są wyłączone, ew. istnieje priorytet przerwań).

- bezpośredni dostęp do pamięci (DMA) dla szybkich urządzeń we-wy

- ochrona pamięci (operacje we-wy tylko za pośrednictwem s.o., ochrona tablicy przerwań i systemu, wzajemna ochrona zadań np. rejestry bazowy i graniczny)

- wielostanowość procesora

- rozkazy uprzywilejowane

- zegar

Generacje systemów operacyjnych:

- Lata 40. Brak systemów operacyjnych w obecnym znaczeniu tego słowa

- Lata 50. Możliwość przetwarzania wsadowego

- Wczesne lata 60. Wieloprogramowość, wieloprocesowość, niezależność urządzeń, podział czasu, przetwarzanie w czasie rzeczywistym.

- Połowa lat 60., do połowy lat 70. Systemy ogólnego przeznaczenia umożliwiające jednocześnie różne tryby pracy

- Obecnie: Komputery osobiste, stacje robocze, systemy baz danych, sieci komputerowe, systemy rozproszone

1.3 Ogólna struktura sytemu operacyjnego.

Moduły funkcjonalne systemu operacyjnego:

- zarządzanie pamięcią

- zarządzanie procesorem (na poziomie zadań i procesów - dostepne operacje na procesach: create, terminate, abort, signal, allocate/free memory)

- zarządzanie urządzeniami (operacje attach/detach, request/release, read/write)

- zarządzanie informacją (system plików - operacje: create, delete, open, close, change attributes)

- jądro (m.in. zapewnienie komunikacji między komponentami systemu oraz ochrony)

Najprostsza struktura (monolityczny s.o.)

- program złożony z wielu procedur, każda może wołać każdą, ograniczona strukturalizacja (np.

OS/360, MS-DOS, niektóre wersje Unix)

- makrojądro - wszystkie funkcje SO umieszczone w jądrze i wykonywane w trybie uprzywilejowanym (np. OS/360)

- jądro - część funkcji przeniesiona z jądra na poziom użytkownika (np. w systemie Unix: jądro i programy systemowe)

Struktura warstwowa

- każda warstwa spełnia funkcje zależne tylko od warstwy poniżej (T.H.E., RC-4000, VMS); w Multicsie odmiana struktury warstwowej - zespół koncentrycznych pierścieni. Wykorzystywane makrojądro - wszystkie warstwy są uprzywilejowane. Struktura warstwowa (system T.H.E.):

- poziom 5: programy użytkowników

- poziom 4: buforowanie urządzeń we-wy

- poziom 3: program obsługi konsoli operatora

- poziom 2: zarządzanie pamięcią

- poziom 1: planowanie przydziału procesora

- poziom 0: sprzęt

Struktura mikrojądra - mikrojądro obejmuje jedynie tworzenie procesów, komunikację międzyprocesową, mechanizmy (ale nie strategie!), zarządzanie pamięcią, procesorem i urządzeniami (na najniższym poziomie), np. Mach, QNX (ogólnie - systemy przemysłowe)

Struktura typu klient-serwer

- moduły pełnią wyodrębnione zadania, komunikują się poprzez wysyłanie komunikatów.

- Serwer: dostarcza usługę, klient: żąda usługi. Prosta adaptacja do systemów rozproszonych.

- konieczny bezpołączeniowy protokół typu pytanie-odpowiedź

- jądro można zredukować do 2 odwołań do systemu (nadaj/odbierz komunikat)

- łatwa realizacja rozpraszania

Koncepcja maszyny wirtualnej:

- każdy proces otrzymuje (wirtualną) kopię komputera będącego podstawą systemu; każda wirtualna maszyna jest identyczna z rzeczywistym sprzętem, więc każda może wykonywać dowolny system operacyjny; np. VM dla dużych komputerów firmy IBM

- Korzyści: każda część systemu jest dużo mniejsza, bardziej elastyczna i łatwiejsza w utrzymaniu.

0x01 graphic

CMS - system operacyjny dla indywidualnego użytkownika

2. Procesy i wątki.

2.1 Proces.

Proces - program (kod binarny) w czasie wykonania; wykonanie przebiega sekwencyjnie (wyjątek: procesy wielowątkowe - patrz niżej).

- nowy: proces został utworzony

- wykonywany: są wykonywane instrukcje procesu

- oczekujący: proces czeka na wystąpienie zdarzenia

- gotowy: proces czeka na przydzielenie procesora

- zakończony: proces zakończył wykonanie

0x01 graphic

Reprezentacja procesu w systemie (zawartość bloku kontrolnego procesu):

- stan procesu

- identyfikator (unikalny numer - w UNIX'ie - PID)

- licznik rozkazów

- rejestry procesora

- wskaźnik do kolejki procesów

- informacje o pamięci zajętej przez proces

- wykaz otwartych (używanych plików)

Tworzenie procesu:

Zakończenie procesu:

2.2 Wątek

Wątek sterowania (tzw. lekki proces): sekwencja instrukcji; tradycyjnie proces = jeden wątek sterowania, jednak czasami (w niektórych systemach) w przestrzeni adresowej procesu dopuszcza więcej wykonywanych współbieżnie wątków sterowania.

Wątek

Proces

licznik rozkazów

przestrzeń adresowa

stos

otwarte pliki, semafory

rejestry procesora

zmienne globalne

lista wątków potomnych

lista proc. potomnych

(1) model dyspozytor-pracownik

(2) model zespołu

(3) model potoku

0x01 graphic

Wątki statyczne/dynamiczne:

- struktura wątków procesu jest ustalona (w kodzie źr. procesu) lub też proces może dowolnie tworzyć/usuwać swoje wątki

Implementacja wątków w systemie operacyjnym:

3. Procesy - zagadnienia planowania

3.1 Planowanie

Planowanie - przydział procesora gwarantujący jego optymalne wykorzystanie (np. gdy proces czeka na urządzenie we-wy; sterowanie przechodzi do następnego.

1. przechodzi ze stanu wykonywany do stanu oczekujący

2. przechodzi ze stanu wykonywany do stanu gotowy

3. przechodzi ze stanu oczekujący do stanu gotowy

4. kończy się

Życie procesu: dwie fazy (cykliczne) : 1. procesora, 2. we-wy (oczekiwania na urządzenie)

Kryteria planowania (różne możliwości - maxymalizacja, minimalizacja):

będziemy minimalizować średni czas oczekiwania w kolejkach

3.2 Algorytmy planowania

FCFS (First Come First Served)

SJF (Shortest Job First)

tn+1 = Σi=0n a(1-a)i tn-i gdzie a<1.

Planowanie Priorytetowe:

- zewnętrznie (przez funkcję systemową)

- wewn. przez deklarację samego procesu (na podstawie np. wymagań: pamięć, procesor etc...)

Planowanie Rotacyjne (Round Robin - RR, pol. karuzelowe)

- gdy Q rośnie nieograniczenie; planowanie rotacyjne FCFS

- gdy Q zmierza do 0 zachodzi dzielenie procesora - każdy proces dysponuje procesorem o prędkości 1/N rzeczywistego.

- wskazany jest długi kwant czasu w porównaniu z przełączaniem kontekstu (wpp zła wydajność)

- reguła doświadczalna: kwant czasu powinien być dłuższy niż 80% faz procesora dla optymalnej wydajności.

3.3 Struktura kolejek w systemie operacyjnym (planowanie wielopoziomowe).

- procesów piewszoplanowych (systemowe, interakcyjne)

- procesów drugoplanowych (wsadowe)

- procesy piewszoplanowe - strategia karuzelowa (RR)

- procesy drugoplanowe - FIFO

- Ustalone, np. obsługuj najpierw wszystkie procesy pierwszoplanowe, potem drugoplanowe; możliwość zagłodzenia

- Kwant czasu: każda kolejka otrzymuje ustaloną część czasu CPU do podziału pomiędzy swoje procesy, np. 80% dla pierwszoplanowych z RR, 20% dla drugoplanowych z FCFS

- Procesy mogą się przemieszczać pomiędzy kolejkami

- liczba kolejek

- algorytm szeregowania dla każdej kolejki

- metoda awansu/degradacji procesów (do kolejki o odpowiednio niższym/wyższym priorytecie)

- metoda wybierania kolejki dla nowego procesu

0x01 graphic

- rozkład faz jest na ogół w rzeczywistych systemach wykładniczy

- jeśli średnia długość kolejki = n, średni czas obsługi = T, tempo przybywania nowych
procesów = λ, to n = λT (tw. Little'a; stosuje się ogólnie do stabilnych systemów kolejkowych)

- dzielenie (osobna kolejka i algorytm dla każdego procesora) lub...

- wspólna kolejka:

- każdy procesor sam wybiera proces do wykonania

- jeden procesor przydziela procesy do procesorów

(tzw. wieloprzetwarzanie asymetryczne)

4. Koordynacja procesów

4.1 Sekcje krytyczne

- wzajemne wyłączanie SK

- ograniczone (skończone) czekanie na wejście do SK

repeat

while x<>0 do nic (sekcja wejściowa)

<SK> (SK)

x:=1 (sekcja wyjściowa)

<reszta kodu procesu>

until false (narzucone naprzemienne (czyli nie spełniające warunku postępu) wykonanie SK dla 2(może być więcej) procesów)

var flaga: array[o..1] of Boolean

numer: 0..1

repeat

flaga[i]:=TRUE (chcę wejść)

numer:=j (założenie, że drugi chce wejść)

while (flaga[j] AND numer:=j)do nic

<SK>

flaga[i]:=FALSE

<reszta kodu procesu>

until false (bez zmiennej numer możliwe byłoby ustawienie obu flag przez procesy w dwóch kolejnych instrukcjach procesora (po pechowym przełączeniu kontekstu) i wieczne ich zapętlenie...)

4.2 Semafory

- czekaj(s): while s <= 0 do nic; s := s-1;

- sygnalizuj(s): s := s+1;

- na pojedynczym CPU - zablokowanie przerwań na czas operacji

- w systemie wieloprocesorowym instrukcja procesora TEST&SET

s:=1

repeat

czekaj(s)

<SK>

sygnalizuj(s)

<reszta kodu procesu>

until false

s:=0

1proces: op1; 2proces: czekaj(s);

sygnalizuj(s); op2;

4.3 Blokady.

np.:

Semafory A i B mają wartość 1:

P0: wait(A); wait(B)

P1: wait(B); wait(A)

  1. Wzajemne wyłączanie (co najmniej 1 zasób musi być niepodzielny)

  2. Przetrzymywanie i oczekiwanie (proces przetrzymujący co najmniej jeden zasób czeka na przydział dodatkowych zasobów będących w posiadaniu innych procesów).

  3. Nie ma wywłaszczania z zasobów.

  4. Cykliczne czekanie (istnieje zbiór czekających procesów {P0, P1, Pn }, takich że P 0 czeka na zasób przetrzymywany przez P1 , P1 czeka na zasób przetrzymywany przez P2 , ..., P n czeka na zasób przetrzymywany przez P0 .

(4 implikuje 2, więc podane warunki nie są niezależne)

0x01 graphic

4.4 Zapobieganie i unikanie blokad.

powyższe metody zawsze ograniczają przepustowość systemu...

Założenia:

n - liczba procesów

m - liczba typów zasobów

int Dostępne[m] - liczba zasobów określonego typu (np. Dostępne[3]=5 to 5 zasobów typu 3)

int Maks[n][m] - maksymalne żądania procesów

int Przydzielone[n][m] - przydzielone zasoby

int Potrzebne[n][m] - potrzebne zasoby (z tym, że Potrzebne[i][j]=Maks[i][j]-Przydzielone[i][j])

int Zamówienia[n][m] - aktualne zamówienia procesu.

Algorytm:

  1. Jeśli Zamówienia[i] <= Potrzebne[i] to wykonaj krok 2. Wpp błąd - proces przekroczył deklarowane zapotrzebowanie.

  2. Jeśli Zamówienia[i] <= Dostępne wykonaj krok 3. Wpp proces i musi czekać.

  3. System próbuje przydzielić żądane zasoby procesowi i zmieniając stan systemu w następujący sposób:
    Dostępne = Dostępne - Zamówienia[i]

Przydzielone[i] = Przydzielone[i] + Zamówienia[i]

Potrzebne[i] = Potrzebne[i] - Zamówienia[i]

Jeśli stan po zmianie jest bezpieczny, transakcja dochodzi do skutku. Jeśli nie - proces i musi czekać...

Algorytm bezpieczeństwa:

  1. int Praca[m]; int Koniec[n]

  2. Praca = Dostępne; Koniec[i] = FALSE dla wszystkich i

  3. Znajdujemy i takie że Koniec[i]=FALSE oraz Potrzebne[i] <= Praca; Jeśli nie ma takiego i do kroku 5.

  4. Praca = Praca + Przydzielone[i]; Koniec[i] = TRUE; przejdź do kroku 2.

  5. Jeśli Koniec[i] = TRUE dla wszystkich i, to system jest w stanie bezpiecznym...

Koszt stwierdzenia czy system jest bezp. = m x n2

4.5 Wykrywanie i wychodzenie z blokady.

całej pętli (znaczny koszt, utrata częściowych wyników)

kolejno (wywołanie szukania cykli po każdym usunięciu)

- różne kryteria wyboru ofiary (priorytet, typ, posiadane zasoby...)

- zasoby wewnętrzne (bloki kontr. itp...) uporządkowanie zasobów

- pamięć głowna

- urządzenie i pliki unikanie blokad

5. Zarządzanie pamięcią

5.1 Założenia wstępne:

Różne mechanizmy:

- kompilacji (przy założeniu że proces rozpoczyna się od adresu X - np. pliki *.com w dos)

- ładowania (po przemieszczeniu kodu trzeba przeładować)

- wykonania (możliwe przemieszczenia)

ponieważ procesy wykonują się wyłącznie w pamięci, nie zawsze wszystkie się mieszczą. Więc:

    1. Wymiana.

... no i w tym miejscu nastąpił niespodziewany koniec wakacji...

Systemy operacyjne - notatki do wykładu

2

0x01 graphic

0x01 graphic



Wyszukiwarka

Podobne podstrony:
zadania-egzaminacyjne, Studia WIT - Informatyka, Systemy operacyjne
WŁASNY SERWER FTP WINDOWS XP, ۞ Nauka i Technika, Informatyka, Systemy operacyjne, OS MS Windows, Si
Podstawy informatyki, Systemy operacyjne, PODSTAWY INFORMATYKI (KONTYNUACJA SYSTEMÓW OPERACYJNYCH)
prog z1, Studia WIT - Informatyka, Systemy operacyjne 2
Edytor Vi, studia wsiz, semestr 1 2, Systemy operacyjne, SYSTEMY OPERACYJNE, systemy operacyjne LABO
Zarządzanie Partycjami, Systemy Operacyjne i Sieci Komputerowe
SUSE POLECENIA, studia wsiz, semestr 1 2, Systemy operacyjne, SYSTEMY OPERACYJNE, systemy operacyjne
2006 08 Zarządzanie pamięcią w systemach operacyjnych [Inzynieria Oprogramowania]
SO Zarządzanie pamięcią w systemach operacyjnych
informatyczne systemy zarzadzan Nieznany
Rafał Polak 12k2 lab8, Inżynieria Oprogramowania - Informatyka, Semestr III, Systemy Operacyjne, Spr
cw 0 1, pwr, informatyka i zarządzanie, Informatyka, algorytmy i struktury danych
Systemy operacyjne - wykłady, Administracja, Administracja, Administracja i samorząd, Polityka spole

więcej podobnych podstron