Zadanie polega na zaimplementowaniu algorytmów szeregowania procesów z
wykorzystaniem różnych strategii szeregowania zarówno w środowisku jedno-
jak i wieloprocesorowym.
Implementacja i badanie algorytmów szeregowania procesów.
Dany jest zbiór N (od 1 do 100) procesów oraz zbiór M (od 1 do 10)
procesorów. Czas nadejścia oraz czas wykonania procesu i będzie oznaczany
odpowiednio symbolem ri oraz pi.
Format danych wejściowych
Pierwszy wiersz zawiera trzy liczby naturalne oznaczające parametry: N,
M, i C, określające odpowiednio liczbę procesów, liczbę procesorów oraz
kwant czasu, po którym następuje wywłaszczenie procesora. Parametr C jest
wykorzystywany wyłącznie w strategii szeregowania RR. Jednocześnie, dla
strategii RR, parametr M jest ignorowany - należy założyć tylko 1 procesor.
Drugi i trzeci wiersz zawiera N liczb naturalnych, gdzie i-ta liczba
określa odpowiednio czas nadejścia ri (drugi wiersz) oraz czas wykonania pi
(trzeci wiersz) procesu i.
Wynik
Historia symulacji obrazujaca co dzieje sie w kolejnym chwilach czasu.
Zapis dla przykladowej chwili czasu t:
czas: 10
zad: 2 -> gotowy
zad: 3 -> gotowy
proc: 0, zad: 0 -> zakonczony
proc: 0, zad: 2 -> aktywny
proc: 1, zad: 1 -> wstrzymany
proc: 1, zad: 3 -> aktywny
Opisuje sytuację, gdzie w chwili czasu 10 pojawiły się 2 nowe zadania (2 i 3),
a na procesorze 0-wym zakończyło się zadanie 0. Następnie, zgodnie z
zaimplementowaną strategia, proces nr 2 zajął wolny procesor 0, natomiast
zadanie nr 3 umieszczono na procesorze 1, wywłaszczając zadanie nr 1.
Zadanie:
1. Zaimplementuj algorytm, który ze standardowego wejścia czyta dane, a wyniki
symulacji zapisuje na standardowe wyjscie.
Numer strategii szeregownia program pobiera jako argument wywołania (0 - FCFS,
1 - SJF, 2 - LJF, 3 - SRTF, 4 - RR).
Przykład uruchomienia:
./sched 1 < data.in > data_1.out
2. Porównaj harmonogramy wygenerowane przy użyciu każdej ze strategii.
Która ze strategii wydaje Ci się najlepsza?