Laborutorium linux - zadanie_16
Do tematu: Zarządzanie procesami
Zadanie 16 - Zarządzanie procesami
Zadanie:
Zadanie polega na zaprogramowaniu funkcji systemowych i programu umożliwiającego
śledzenie algorytmu szeregowania procesów w jądrze systemu Linux.
W systemie Linux za szeregowanie procesów jest odpowiedzialna funkcja
schedule(). Algorytm tam wykonywany
nie jest
dokładnym odwzorowaniem algorytmu opisanego w książce M.J. Bacha "Budowa systemu
operacyjnego UNIX", dlatego też proponuję wykonanie pracy umożliwiającej
prześledzenie następujących rzeczy:
jakie procesy uzyskują procesor (jakie mają wartości pól count i priority)
w jakich sytuacjach procesy są wywłaszczane
jak często następuje przełączanie kontekstu
jak wygląda szeregowanie procesów czasu rzeczywistego
Napisanie tego zadania umożliwi porównanie działania standardowego algorytmu
szeregowania procesów z algorytmem zaproponowanym w zadaniu:
zadanie_02.html
Szczegóły implementacyjne:
Zadanie składa się z dwóch części: wykonania funkcji zbierającej informacje o
szeregowanych procesach oraz z napisania programu umożliwiającego prześledzenie
przebiegu algorytmu szeregowania. Ze względu na ogromny narzut związany z śledzeniem
szeregowania procesów na bieżąco, proponuję aby proces śledzenia przebiegał
dwuetapowo:
Etap 1: śledzenie szeregowania procesów i zapisanie wyników do
plików systemowych
Etap 2: analiza wyników śledzenia i wykonanie statystyk
Etap 1:
Funkcja służąca do śledzenia powinna być następującej postaci:
inline void watch(task_struct *prev,task_struct *next);
parametry:
task_struct * prev - dowiązanie do
procesu, który był wykonywany w procesorze przed uruchomieniem funkcji schedule()
task_struct * next - dowiązanie do
procesu, który pozostanie w procesorze po zakończeniu funkcji schedule()
w szczególności jeśli prev = next to w wyniku działania funkcji schedule() proces
utrzymał swoje prawo do procesora
Funkcja watch() powinna na podstawie wiadomości o procesie uzyskującym i procesie
tracącym procesor, wykonać zestawienie następujących informacji dla każdego procesu:
counter- czas pozostały procesowi do podjęcia próby wywłaszczenia
priority- priorytet procesu
policy- metoda szeregowania procesu
state- stan w jakim znajduje się proces (ważne w przypadku procesu
tracącego procesor)
A także informacji jiffies (czasu zegara systemowego)
Wszystkie informacje można umieszczać w jednym z plików systemowych (message lub
syslog) za pomocą funkcji printk(). Powinny one być łatwe do rozpoznania przez program
wykonujący analizę i dobrze spakowane ze względu na dużą częstość zapisów
szeregowanych procesach.
Można także rozważyć utworzenie specjalnego bufora na przechowywane informacje o
stałej 1-2 Mb wielkości i pozostawienie tam informacji.
Funkcja watch() powinna zacząć śledzenie w momencie, w którym trafi do niej proces
wywołany z pliku o nazwie watch_start i zakończyć gdy się pojawi proces watch_stop.
Rozpoznanie procesu powinno następować na podstawie badania parametru comm struktury
task_struct.
Funkcja watch() powinna być umieszczona w pliku watch.h taka implementacja, umożliwi
łatwe jej zastosowanie w różnych algorytmach szeregowania procesów.
Funkcja watch() może być zastosowana w standardowym algorytmie szeregowania procesów
jądra 2.0.32 tuż przed zestawem funkcji dokonujących przełączenia kontekstów.
Będzie także możliwe umieszczenie jej na końcu funkcji szeregowania, realizowanej w
ramach zadania: zadanie_02.
Etap 2:
Wykonanie programu dokonującego analizy wyników szeregowania procesów.
Program taki powinien udostępniać następujące wyniki:
kolejność szeregowanych procesów wraz z wartościami count, priority, status
procesów wchodzących i wychodzących z procesora, a także z czasem, jaki proces miał
przydzielony procesor oraz powodem stracenia dostępu do procesora.
ogólny czas, jaki każdy proces spędził w procesorze, jak często tracił procesor i
jakie były tego powody
jak często był zmieniany kontekst
Rozwiązanie zadania powinno zawierać testy, analizę działania szeregowania
procesów w jądrze linux. Warto zwrócić uwagę na przebieg szeregowania równorzędnych
procesów, procesów uprzywilejowanych przez nadanie innego priorytetu oraz analizę
procesów zasypiających w oczekiwaniu na przerwanie i takich, które wykonują działanie
ciągłe.
Autor:
Michał Tabor
Wyszukiwarka
Podobne podstrony:
ZADANIE (11)zadaniegz 11ZADANIE (11)Analiza Zadania 11ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)zadanie 11ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)więcej podobnych podstron