Mechanizmy stosowane w systemach operacyjnych - system dydaktyczny Simulator of Operating System Sebastian Świerczyna Promotor: dr inż. Jarosław Bilski Politechnika Częstochowska Wydział Inżynierii Mechanicznej i Informatyki Kierunek Informatyka Specjalność Inżynieria Oprogramowania i Systemy Informatyczne
21
Embed
Mechanizmy stosowane w systemach operacyjnych system ...kik.pcz.pl/soold/laboratorium/SOS/Prezentacja.pdf · Przenoszenie procesów między kolejkami systemowymi Szeregowanie zada
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Mechanizmy stosowane w systemach operacyjnych system dydaktyczny
Simulator of Operating System
Sebastian Świerczyna
Promotor: dr inż. Jarosław Bilski
Politechnika CzęstochowskaWydział Inżynierii Mechanicznej i Informatyki
Przedstawiciele: WINDOWS NT, AIX,GNU Hurd, Minix, MorphOS, QNX, BeOS
Struktury systemów operacyjnych (3/3)
- struktura mikrojądraAplikacja
Win32
Serwer
Win32 Komunikaty
Aplikacja
POSIX
Serwer
POSIX
MIKROJĄDRO
Komunikaty
Zadania:
Podział czasu procesora pomiędzy współistniejące procesy
Maksymalne wykorzystanie czasu procesora
Mechanizmy:
Zmiana aktualnie wykonywanego procesu dyspozytor (ang. dispatcher)
Wybór procesu, który ma być wykonywanyplanista (ang. scheduler)
Szeregowanie zadań
Szeregowanie zadańgraf stanów procesu
KOLEJKA
PROCESORA
PROCESORY
CENTRALNE
KOLEJKI
POD
SEMAFORAMI
Nowe
procesy
Procesy
wykonane
Procesy częściowo
wykonane
Procesy wybrane
przez dyspozytora
Procesy
wykonywalne
Procesy
wykonywane
Procesy
zablokowane Proces zgłosił zamówienie, które nie może zostać
zrealizowane
Zamówienie
może być zrealizowane
Algorytmy szeregowania zadań:
SCHED_FIFO – przydzielanie czasu procesom z kolejki procesów gotowych zgodnie z zasadami kolejki FIFO (ang. First In First Out).Proces, który otrzymał procesor przetrzymuje go, do czasu aż sam go zwolni, albo przejdzie w stan “niewykonywalny”
SCHED_RR – podobnie jak SCHED_FIFO, z tą różnicą, że proces otrzymuje pewien kwant czasu, po którego upływie zostaje przeniesiony na koniec kolejki procesów gotowych
SCHED_OTHER – podobnie jak SHED_RR, z tą różnicą, że priorytet procesu jest obliczany dynamicznie. Jest on sumą priorytetu statycznego oraz czasu, jaki pozostał procesowi z jego kwantu
Szeregowanie zadańUNIX (1/2)
Klasy procesów:
idle – proces jałowy
procesy zwykłe – znakomita większość procesów w systemie. Szeregowane według polityki SCHED_OTHER
procesy czasu rzeczywistego – wymagają bardzo szybkiej obsługi,procesy tego typu może tworzyć tylko administrator.Szeregowane według polityki SCHED_RR, SCHED_FIFO
Szeregowanie zadańUNIX (2/2)
Wartości priorytetów:
0 – proces jałowy
115 – procesy użytkownika
1631 – procesy czasu rzeczywistego
Szczególne własności:
Algorytm szeregowania działa na poziomie wątków
Mechanizm “doładowania i zaniku” polega na zwiększeniu priorytetu wątku, który obudził się z oczekiwania na jakieś zdarzenie.Takie doładowanie stopniowo zanika. Za każdym razem, gdy wątekw pełni wykorzysta swój kwant czasu, jego priorytet zmniejszy się o 1
Szeregowanie zadańWINDOWS NT
Tworzenie procesów:
fork – utworzenie kopii procesu
execve – podmienienie programu wykonywanego przez proces
Komunikaty:
msgget – utworzenie lub otwarcie kolejki wiadomości
msgsnd – umieszczenie w kolejce komunikatów nowej wiadomości
msgrcv – pobranie wiadomości z kolejki komunikatów
Funkcje systemowe – UNIX (1/2)
Semafory:
semget – utworzenie lub uzyskanie dostępu do zestawu semaforów
semop – wykonanie operacji typu czekaj/sygnalizuj na zestawie semaforów
Urządzenia:
open – utworzenie lub otwarcie urządzenia
close – zamknięcie urządzenia
read – odczyt danych z urządzenia
write – zapis danych do urządzenia
lseek – odczyt lub zmiana pozycji kursora urządzenia
Funkcje systemowe – UNIX (2/2)
Tworzenie procesów:CreateProcess – utworzenie nowego procesu na podstawie programu
CreateProcessAsUser – podobnie jak funkcja CreateProcess. Dodatkowo możliwe jest ustawienie kontekstu w jakim zostanie utworzony proces
Komunikaty:SendMessage – wysłanie komunikatu do okna (lub grupy okien).Proces wysyłający jest wstrzymywany do momentu obsłużenia wiadomości.
SendNotifyMessage – podobnie jak SendMessage, z tą różnicą, że funkcja powraca natychmiast, nie oczekując na obsłużenie wiadomości
GetMessage – pobranie wiadomości z kolejki komunikatów, jeśli nie ma odpowiedniej wiadomości proces jest wstrzymywany
PeekMessage – podobnie jak GetMessage, jeśli nie ma odpowiedniej wiadomości funkcja powraca natychmiast
Funkcje systemowe – Windows NT (1/2)
Semafory:
CreateSemaphore – utworzenie nowego lub otwarcie semafora
WaitForSingleObject – wykonanie operacji czekaj
RelaseSemaphore – wykonanie operacji sygnalizuj lub pobranie bieżącej wartości semafora
Urządzenia:
CreateFile – utworzenie nowego lub otwarcie istniejącego urządzenia
ReadFile – odczyt danych z urządzenia
WriteFile – zapis danych do urządzenia
SetFilePointer – odczyt lub zmiana pozycji kursora urządzenia
Funkcje systemowe – Windows NT (2/2)
Podstawowe własności:
Wzorowany na języku C
Trzy typy zmiennych: INT, FLOAT, STRING
Instrukcje iteracyjne: FOR, IF
Instrukcje blokowe – zbiory rozkazów zamknięte w nawiasy klamrowe
Komentarze
Komunikacja z użytkownikiem za pomocą funkcji do obsługi konsoli
Wyposażony w funkcje biblioteczne poszerzające możliwości języka: mechanizmy komunikacji międzyprocesowej, mechanizmy umożliwiające synchronizacje procesów, narzędzia do obsługi urządzeń,
Wewnętrzny język SOS
Obsługa procesów:CREATE_PROCES – utworzenie nowego procesu na podstawie programu
GET_MY_ID – pobranie PID'u procesu
Komunikaty:SEND – wysłanie komunikatu do procesu lub grupy procesów.
BLOCK_SEND – podobnie jak SEND, z tą różnicą, że funkcja blokuje proces do momentu jej odebrania
RECEIVE – pobranie wiadomości z kolejki komunikatów
BLOCK_RECEIVE – podobnie jak RECEIVE, z tą różnicą, że funkcja blokuje proces, do momentu, gdy w kolejce znajdzie się odpowiednia wiadomość
MSG_RESULT – rezultat ostanio wykonanej funkcji
Wewnętrzny język SOSfunkcje biblioteczne (1/3)
Semafory:CREATE_SEMAPHORE – utworzenie nowego semafora
RELASE_SEMAPHORE – usunięcie semafora
OPEN_SEMAPHORE – pobranie uchwytu do semafora
WAIT – wykonanie operacji czekaj na semaforze
WAIT_MULTIPLE – wykonanie operacji czekaj na zestawie semaforów
SIGNALIZE – wykonanie operacji sygnalizuj na semaforze
SEM_RESULT – rezultat ostanio wykonanej funkcji
Wewnętrzny język SOSfunkcje biblioteczne (2/3)
Urządzenia:MAKE_DEVICE – utworzenie nowego urządzenia
RELASE_DEVICE – usunięcie urządzenia
OPEN_DEVICE – otwarcie urządzenia w żądanym trybie
CLOSE_DEVICE – zamknięcie urządzenia
CLEAR_DEVICE – usunięcie danych z urządzenia
DEV_READ – odczyt danych z urządzenia
WRITE – zapis danych do urządzenia
SEEK – zmiana pozycji kursora urządzenia
POS – odczytanie bieżącej pozycji kursora urządzenia
SIZE – pobranie ilości danych w urządzeniu
DEV_RESULT – rezultat ostanio wykonanej funkcji
Wewnętrzny język SOSfunkcje biblioteczne (3/3)
INT(i); # deklaracja zmiennej typu całkowitego
FLOAT(f); # deklaracja zmiennej typu zmiennoprzecinkowego
STRING(s); # deklaracja zmiennej typu łańcuchowego
i=2; # operacje przypisania
f=0.123;
s="123.456";
f=STRTOFLOAT(s); # funkcja konwertująca łańcuch > liczba
s=FLOATTOSTR(f); # funkcja konwertująca liczba > łańcuch
s=s+" tu string"; # konkatenacja łańcuchów
i=f; # podstawienie wartości innej zmiennej
f=(3+3/i+f*2)3; # przykład operacji arytmetycznej
i=((1>=1)||(1!=2))&&(i==l); # zastosowanie operatorów logicznych