[OSDev]Zarządzanie zadaniami

0

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:

  1. Liste procesów
  2. 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.
0

Nie jest zle jak na poczatek. A pomyslales na jaki czas watki dostana procesor i ile czasu beda potrzebowac do zakonczenia? :)

0

Hmmm
Mam PIT'a ustwaionego na 100Hz, kod zmiany zadania w przerwaniu zegarowym, więc zmiana ort! odbywa się co 0,01sek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1