3013
edycji
Nie podano opisu zmian |
|||
(Nie pokazano 26 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
= Opis procesu = | = Opis procesu = | ||
CROOK-5 | Struktura opisująca kontekst procesu CROOK-a 5 dla jądra w wersji 8 dla maszyny nieprzerobionej (N) i przerobionej (P) wygląda następująco: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Nazwa !! Indeks !! Rozmiar !! Opis | ! Nazwa !! Indeks N !! Indeks P !! Rozmiar !! Opis | ||
|- | |- | ||
| ICE || 0 || 3 || Wektor procesu: IC, R0, SR | | ICE || 0 || 0 || 3 || Wektor procesu: IC, R0, SR | ||
|- | |- | ||
| REJE || 3 || 7 || Rejestry R1-R7 | | REJE || 3 || 8 || 7 || Rejestry R1-R7 | ||
|- | |- | ||
| NEXT || 10 || 1 || Łącznik główny listy procesów | | NEXT || 10 || 15 || 1 || Łącznik główny listy procesów | ||
|- | |- | ||
| NXCH || 11 || 1 || Łącznik listy procesów potomnych | | NXCH || 11 || 16 || 1 || Łącznik listy procesów potomnych | ||
|- | |- | ||
| STATE || 12 || 1 || Stan procesu | | STATE || 12 || 17 || 1 || Stan procesu | ||
|- | |- | ||
| PIOR || 13 || 1 || Priorytet procesu | | PIOR || 13 || 18 || 1 || Priorytet procesu | ||
|- | |- | ||
| PRNU || 14 || 1 || Numer procesu | | PRNU || 14 || 19 || 1 || Numer procesu | ||
|- | |- | ||
| PAPR || 15 || 1 || Proces nadrzędny | | PAPR || 15 || 20 || 1 || Proces nadrzędny | ||
|- | |- | ||
| CHLS || 16 || 1 || Początek listy procesów potomnych | | CHLS || 16 || 21 || 1 || Początek listy procesów potomnych | ||
|- | |- | ||
| ALLS || 17 || 1 || | | ALLS || 17 || 22 || 1 || | ||
|- | |- | ||
| CHTIM || 18 || 1 || | | CHTIM || 18 || 23 || 1 || | ||
|- | |- | ||
| DEVI || 19 || 1 || Aktualne wejście | | DEVI || 19 || 24 || 1 || Aktualne wejście | ||
|- | |- | ||
| DEVO || 20 || 1 || Aktualne wyjście | | DEVO || 20 || 25 || 1 || Aktualne wyjście | ||
|- | |- | ||
| USAL || 21 || 1 || | | USAL || 21 || 26 || 1 || | ||
|- | |- | ||
| ROB || 22 || 8 || Obszar roboczy | | ROB || 22 || 27 || 8 || Obszar roboczy | ||
|- | |- | ||
| STRLI || 30 || 1 || Początek listy strumieni? | | STRLI || 30 || 35 || 1 || Początek listy strumieni? | ||
|- | |- | ||
| BUFLI || 31 || 1 || Początek listy buforów? | | BUFLI || 31 || 36 || 1 || Początek listy buforów? | ||
|- | |- | ||
| LARUS || 32 || 1 || TABLICA KODOW DOSTEPU | | LARUS || 32 || 37 || 1 || TABLICA KODOW DOSTEPU | ||
|- | |- | ||
| LISMEM || 33 || 1 || POCZ LISTY BLOKOW PAO | | LISMEM || 33 || 38 || 1 || POCZ LISTY BLOKOW PAO | ||
|- | |- | ||
| CORSIZ || 34 || 1 || LICZBA BLOKOW PO 4K | | CORSIZ || 34 || 39 || 1 || LICZBA BLOKOW PO 4K | ||
|- | |- | ||
| NXTMEM || 35 || 1 || LISTA PROCESOW Z PAO DO ODEBRANIA | | NXTMEM || 35 || 40 || 1 || LISTA PROCESOW Z PAO DO ODEBRANIA | ||
|- | |- | ||
| BAR || 36 || 1 || | | BAR || 36 || 41 || 1 || | ||
|- | |- | ||
| SZABME || 37 || 1 || SZABLON PRZYDZIALU PAO | | SZABME || 37 || 42 || 1 || SZABLON PRZYDZIALU PAO | ||
|- | |- | ||
| BLPASC || 38 || 1 || blokada PASC | | BLPASC || 38 || 43 || 1 || blokada PASC | ||
|- | |- | ||
| IC || 39 || | | IC || 39 || -4 || 3 || IC, R0, SR | ||
|- | |- | ||
| REJ || 42 || | | REJ || 42 || 44 || 7 || Rejestry R1-R7 | ||
|- | |- | ||
| JDAD || 49 || | | JDAD || 49 || 51 || 1 || ADRES POCZ ZRODLA LADOWANIA | ||
|- | |- | ||
| JPAD || 50 || 1 || ADRES POCZ PRG | | JPAD || 50 || 52 || 1 || ADRES POCZ PRG | ||
|- | |- | ||
| JACN || 51 || 1 || POZYCJA PRG W FILDIC | | JACN || 51 || 53 || 1 || POZYCJA PRG W FILDIC | ||
|- | |- | ||
| JNAME || 52 || 2 || NAZWA PROGRAMU | | JNAME || 52 || 54 || 2 || NAZWA PROGRAMU | ||
|- | |- | ||
| JLOLEN || 54 || 1 || Dlugosc ladowania | | JLOLEN || 54 || 56 || 1 || Dlugosc ladowania | ||
|- | |||
| TABUJB || 55 || 61 || || Całkowity rozmiar struktury | |||
|} | |||
Proces pierwotny INI tworzony jest w trakcie startu systemu, a adres jego kontekstu przechowywany jest pod adresem 0x2919 (ADINI - ADdres INI). Dla jądra nieprzerobionego w wersji 8 jest to 0x3c0c. Kolejne tworzone procesy umieszczane są w tablicy procesów na pozycjach będących wielokrotnościami -55 (rozmiar kontekstu procesu, procesy lokowane są od 0x3c0c w stronę malejących adresów). Adres, pod którym należy umieścić kolejny, nowo tworzony proces, przechowywany jest pod adresem 0x291b (FREES - Free Slot). | |||
Struktura drzewa procesów opisana jest w następujący sposób: | |||
* W polu PAPR znajduje się wskaźnik na kontekst procesu nadrzędnego. Dla procesu INI jest to -1. | |||
* W polu CHLS znajduje się wskaźnik na pierwszy na liście proces potomny | |||
** Pierwszy proces potomny wskazuje na kolejny proces potomny polem NXCH, itd. | |||
** Każdy proces potomny w polu CHLS wskazuje na początek własnej listy procesów potomnych | |||
Oprócz tego, pole NEXT służy to zbudowania listy procesów w danej kolejce. | |||
Przykład drzewa procesów wraz ze wzajemnymi zależnościami pokazuje rysunek poniżej. Strzałkami koloru czarnego oznaczone zostały relacje potomek-przodek. Strzałkami niebieskimi i zielonymi oznaczono listy potomków procesów (odpowiednio) INI i P1. Kolorem czerwonym i różowym oznaczono przykładową zawartość list procesów w kolejkach WTTM i WTRAM. | |||
[[File:Crook-procesy.png]] | |||
= Kolejki procesów = | |||
Pod adresem 0x62 (BPROG - Bieżący PROGram) system przechowuje wskaźnik na kontekst aktualnie wykonywanego procesu. Jest to jednocześnie czoło listy procesów gotowych do wykonania, łączonej dalej polem NEXT. | |||
Oprócz tej listy, system utrzymuje 16 głównych kolejek procesów. Proces może znajdować się w jednej z nich, w zależności od tego, na jaki zasób bądź zdarzenie oczekuje. Początki list zajmują 16 (NOQ - Number Of Queues) kolejnych słów od adresu 0x2846 (QJW - Queue of Jobs Waiting): | |||
{| class="wikitable" | |||
|- | |||
! Pozycja !! Nazwa !! Opis | |||
|- | |||
| 0 || 0 || Kolejka procesów oczeujących na kanał pamięciowy 0 | |||
|- | |||
| 1 || 1 || Kolejka procesów oczeujących na kanał pamięciowy 1 | |||
|- | |||
| 2 || 2 || Kolejka procesów oczeujących na kanał pamięciowy 2 | |||
|- | |||
| 3 || 3<br/>''WTRAM'' || Kolejka procesów oczeujących na kanał pamięciowy 3<br />''w wersji 8: Kolejka oczekujących po bufor RAM'' | |||
|- | |||
| 4 || WTTM || Kolejka oczekujacych na określony czas zegarowy | |||
|- | |||
| 5 || WTBU || czeka na wolny bufor | |||
|- | |||
| 6 || WTCOR || czeka na pamięć | |||
|- | |||
| 12 || WTCAT || czeka na wejście do obszaru działania na katalogu | |||
|- | |||
| 13 || WTSI || ?? | |||
|- | |||
| 14 || WTSTR || czeka na strumień? | |||
|- | |||
| 15 || WTIEC || czeka na IEC? | |||
|} | |} | ||
= Stan procesu = | = Stan procesu = | ||
16- | 16-bitowe słowo stanu procesu składa się z trzech części: | ||
* bity 0-8 określają stan procesu | * bity 0-8 określają stan procesu | ||
* bity 9-15 opisują przyczynę | * bity 9-15 opisują przyczynę przejścia procesu do danego stanu, (numer kolejki, w której proces oczekuje, numer urządzenia, na które czeka, ...) | ||
Proces gotowy do wykonania ma stan 0. | |||
{| class="wikitable" | {| class="wikitable" | ||
! width=30 | | ! width=30 | Bity !! width=30 | 0 !! width=30 | 1 !! width=30 | 2 !! width=30 | 3 !! width=30 | 4 !! width=30 | 5 !! width=30 | 6 !! width=30 | 7 !! width=30 | 8 !! 9-15 | ||
|- | |- | ||
| ''' | | '''Zawartość''' || HAST || HAQJ || || HAJW || HAQL || HABA || ALRS || HADV || HCAM<br/>NCOW || Przyczyna | ||
|} | |} | ||
Linia 97: | Linia 148: | ||
* HADE 040 - czeka na usunięcie? | * HADE 040 - czeka na usunięcie? | ||
{{source|title=Opracowanie własne}} | |||
{| | |||