Struktury danych CROOK-5
Opis procesu
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:
Nazwa | Indeks N | Indeks P | Rozmiar | Opis |
---|---|---|---|---|
ICE | 0 | 0 | 3 | Wektor procesu: IC, R0, SR |
REJE | 3 | 8 | 7 | Rejestry R1-R7 |
NEXT | 10 | 15 | 1 | Łącznik główny listy procesów |
NXCH | 11 | 16 | 1 | Łącznik listy procesów potomnych |
STATE | 12 | 17 | 1 | Stan procesu |
PIOR | 13 | 18 | 1 | Priorytet procesu |
PRNU | 14 | 19 | 1 | Numer procesu |
PAPR | 15 | 20 | 1 | Proces nadrzędny |
CHLS | 16 | 21 | 1 | Początek listy procesów potomnych |
ALLS | 17 | 22 | 1 | |
CHTIM | 18 | 23 | 1 | |
DEVI | 19 | 24 | 1 | Aktualne wejście |
DEVO | 20 | 25 | 1 | Aktualne wyjście |
USAL | 21 | 26 | 1 | |
ROB | 22 | 27 | 8 | Obszar roboczy |
STRLI | 30 | 35 | 1 | Początek listy strumieni? |
BUFLI | 31 | 36 | 1 | Początek listy buforów? |
LARUS | 32 | 37 | 1 | TABLICA KODOW DOSTEPU |
LISMEM | 33 | 38 | 1 | POCZ LISTY BLOKOW PAO |
CORSIZ | 34 | 39 | 1 | LICZBA BLOKOW PO 4K |
NXTMEM | 35 | 40 | 1 | LISTA PROCESOW Z PAO DO ODEBRANIA |
BAR | 36 | 41 | 1 | |
SZABME | 37 | 42 | 1 | SZABLON PRZYDZIALU PAO |
BLPASC | 38 | 43 | 1 | blokada PASC |
IC | 39 | -4 | 3 | IC, R0, SR |
REJ | 42 | 44 | 7 | Rejestry R1-R7 |
JDAD | 49 | 51 | 1 | ADRES POCZ ZRODLA LADOWANIA |
JPAD | 50 | 52 | 1 | ADRES POCZ PRG |
JACN | 51 | 53 | 1 | POZYCJA PRG W FILDIC |
JNAME | 52 | 54 | 2 | NAZWA PROGRAMU |
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.
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):
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 WTRAM |
Kolejka procesów oczeujących na kanał pamięciowy 3 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
16-bitowe słowo stanu procesu składa się z trzech części:
- bity 0-8 określają stan procesu
- 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.
Bity | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9-15 |
---|---|---|---|---|---|---|---|---|---|---|
Zawartość | HAST | HAQJ | HAJW | HAQL | HABA | ALRS | HADV | HCAM NCOW |
Przyczyna |
Znaczenie stanów:
- HAST - zatrzymany
- HAQJ - czeka w kolejce
- HAJW - czeka na inny proces?
- HAQL
- HABA
- ALRS
- HADV - czeka na urządzenie znakowe
- HCAM - czeka na CAMAC
- NCOW
- HAPR HAQL+075
- HATO HAQL+076
- HATR HAQL+041 - czeka na zakończenie?
- HADE 040 - czeka na usunięcie?
Źródło: Opracowanie własne