Witam.
Chciałbym w moim OS'ie zaimplementować priorytety wątków. Wczoraj wymyśliłem pewien algorytm i chciałbym się zorientować co o nim sądzicie.
Najprościej będzie mi przedstawić jego działanie na konkretnym przykładzie.
W moim multitaskingu posiadam dwie listy dwukierunkowe:
- Liste procesów
- Liste wątków dla danego procesu
Załóżmy że tablice te wyglądają tak:
Proces: kernel.sys
|
+------ Wątek1: Iddle; priorytet: 4
|
+------ Wątek2: MainThread; priorytet: 4
Proces: shell.exe
|
+------ Wątek1: MainThread; priorytet: 4
Proces: test.exe
|
+------ Wątek1: MainThread; priorytet: 4
|
+------ Wątek2: HighThread; priorytet: 8
|
+------ Wątek3: LowThread; priorytet: 2
Teraz trochę wyjaśnienia co do priorytetów:
Chciałbym żeby priorytet był liczbą od 1 do 9
I teraz scheduler liczy sobie sumę wszystkich priorytetów w wątkach. Jest to ilość zmian zadań w jednym "cyklu". W wyżej wymienionym przykładzie jeden "cykl" będzie miał 26 zmian zadań. W informacji o danym wątku jest zapisane ile razy w danym cyklu wątek dostał kontrole. I teraz wątki o priorytecie 2 dostaną w ciągu 26 zmian kontrole tylko 2 razy, o priorytecie 4 cztery, itp...
Co wy sądzicie o takim sposobie zarządzania procesami i wątkami???
Pozdrawiam.