Zadanie nr 9 z procesów - zmiana szeregowania
Zadanie nr 9 z procesów - zmiana szeregowania
Wstęp
Kiedy Linux nie jest obciążony, czyli niewiele zadań jest gotowych do
wykonania,
bo np. czekają na naciśnięcie klawisza lub ogólnie komunikat od urządzenia
wejścia/wyjścia, wpisywane komendy wykonują się szybko i sprawnie, a wpisywane z
klawiatury znaki natychmiast pojawiają się na ekranie.
Czasem jednak zdarza się, że system musi wykonywać wiele
zadań jednocześnie - mówimy wtedy, że jest bardzo obciążony.
W takiej sytuacji system rzadko oddaje czas programowi, którym jesteśmy
najbardziej
zainteresowani (np. konsoli), za to na dłużej. Nie zawsze nam to odpowiada
- wolelibyśmy,
aby nasz proces dostawał procesor częściej, nawet jeśli na krótszy czas.
Zapewnia to nieco
większą responsywność systemu - wpisywane znaki pojawiają się szybciej
pojedynczo na
ekranie, a nie co jakiś czas porcjami po kilka znaków.
Konsola jest tu tylko przykładem - równie dobrze może chodzić o programik
wypisujący
coś dokładnie raz na sekundę, ale nie częściej. Nietrudno zgadnąć, że przy dużym
obciążeniu systemu standardowy algorytm szeregowania nie spełni naszych oczekiwań -
programik będzie rzadziej coś wypisywał, choć gdyby dostawał procesor raz na
sekundę, ale na krótko, działałby zgodnie z naszymi intencjami.
Opis zadania
Dokonać takich zmian w jądrze Linuxa, aby w przypadku dużego obciążenia odstęp czasowy
między kolejnymi przydziałami procesora każdemu z procesów przy dużym (względne określenie)
obciążeniu systemu był znacząco mniejszy niż w przypadku
standardowego algorytmu szeregowania, przy którym taki odstęp rośnie praktycznie
liniowo wraz z liczbą aktywnych procesów. Dobrze byłoby, aby taki odstęp nie
przekraczał pewnej ustalonej granicy, np. 0,5s.
Tak ulepszona procedura szeregująca powinna odznaczać się dość szybką
reakcją, ale nie
absolutnie natychmiastową, bo na czas krótszy niż sekunda raczej nie warto zmieniać zasad
szeregowania.
Zauważmy, że takie skrócenie cyklu ma tylko sens przy dużym obciążeniu systemu -
czynności związane ze zmianą wykonywanych procesów takie jak zmiana kontekstu,
zabierają cenny
czas. Wobec tego najlepiej byłoby, żeby przy bardzo niskim obciążeniu systemu - 2-3 procesy
aktywne - cykl ten nawet nieco wydłużyć.
Wskazówki
Zadanie można rozwiązać zaglądając tylko do pliku kernel/sched.c. Warto zwłaszcza
zwrócić uwagę na główną procedurę szeregującą procesy i na to, od czego zależy w niej
długość "cyklu", w którym procesor jest przydzielany "zwykłym" procesom.
Pomocne będą też strony projektów Linux i LabLinux dotyczące szeregowania i rzeczy
związanych z tym plikiem.
Mateusz Lipczyński
Wyszukiwarka
Podobne podstrony:
zadania 1 5 10ZADANIE (10)CAD ZADANIA 4 6 10ZADANIE (10)cw3 zadanie 10ZADANIE (10)stat zadania1 10zadania 10ZADANIE (10)Analiza Zadania 10ZADANIE (10)ZADANIE (10)ZADANIE (10)ZADANIE (10)Zadanie20 10 11Zadanie20 10 11więcej podobnych podstron