Struktury danych CROOK-5: Różnice pomiędzy wersjami
Linia 1: | Linia 1: | ||
= Opis procesu = | = Opis procesu = | ||
CROOK-5 | 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). Adres, pod którym należy umieścić kolejny, nowo tworzony proces, przechowywany jest pod adresem 0x291b (FREES - Free Slot). | ||
Pełna struktura opisująca kontekst procesu CROOK-a 5 w wersji 8 dla maszyny nieprzerobionej wygląda następująco: | |||
{| class="wikitable" | {| class="wikitable" | ||
Linia 67: | Linia 69: | ||
|- | |- | ||
| JLOLEN || 54 || 1 || Dlugosc ladowania | | JLOLEN || 54 || 1 || Dlugosc ladowania | ||
|} | |||
= Listy procesów = | |||
System utrzymuje 16 głównych list 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 || ? || ? | |||
|- | |||
| 1 || ? || ? | |||
|- | |||
| 2 || ? || ? | |||
|- | |||
| 3 || WTRAM || Kolejka oczekujących po bufor RAM | |||
|- | |||
| 4 || WTTM || Kolejka oczekujacych na na czas procesora (gotowe do wykonania) | |||
|- | |||
| 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? | |||
|} | |} | ||
Wersja z 18:17, 30 wrz 2013
Opis procesu
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). Adres, pod którym należy umieścić kolejny, nowo tworzony proces, przechowywany jest pod adresem 0x291b (FREES - Free Slot).
Pełna struktura opisująca kontekst procesu CROOK-a 5 w wersji 8 dla maszyny nieprzerobionej wygląda następująco:
Nazwa | Indeks | Rozmiar | Opis |
---|---|---|---|
ICE | 0 | 3 | Wektor procesu: IC, R0, SR |
REJE | 3 | 7 | Rejestry R1-R7 |
NEXT | 10 | 1 | Łącznik główny listy procesów |
NXCH | 11 | 1 | Łącznik listy procesów potomnych |
STATE | 12 | 1 | Stan procesu |
PIOR | 13 | 1 | Priorytet procesu |
PRNU | 14 | 1 | Numer procesu |
PAPR | 15 | 1 | Proces nadrzędny |
CHLS | 16 | 1 | Początek listy procesów potomnych |
ALLS | 17 | 1 | |
CHTIM | 18 | 1 | |
DEVI | 19 | 1 | Aktualne wejście |
DEVO | 20 | 1 | Aktualne wyjście |
USAL | 21 | 1 | |
ROB | 22 | 8 | Obszar roboczy |
STRLI | 30 | 1 | Początek listy strumieni? |
BUFLI | 31 | 1 | Początek listy buforów? |
LARUS | 32 | 1 | TABLICA KODOW DOSTEPU |
LISMEM | 33 | 1 | POCZ LISTY BLOKOW PAO |
CORSIZ | 34 | 1 | LICZBA BLOKOW PO 4K |
NXTMEM | 35 | 1 | LISTA PROCESOW Z PAO DO ODEBRANIA |
BAR | 36 | 1 | |
SZABME | 37 | 1 | SZABLON PRZYDZIALU PAO |
BLPASC | 38 | 1 | blokada PASC |
IC | 39 | 1 | IC, R0, SR |
REJ | 42 | 3 | Rejestry R1-R7 |
JDAD | 49 | 7 | ADRES POCZ ZRODLA LADOWANIA |
JPAD | 50 | 1 | ADRES POCZ PRG |
JACN | 51 | 1 | POZYCJA PRG W FILDIC |
JNAME | 52 | 2 | NAZWA PROGRAMU |
JLOLEN | 54 | 1 | Dlugosc ladowania |
Listy procesów
System utrzymuje 16 głównych list 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 | ? | ? |
1 | ? | ? |
2 | ? | ? |
3 | WTRAM | Kolejka oczekujących po bufor RAM |
4 | WTTM | Kolejka oczekujacych na na czas procesora (gotowe do wykonania) |
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-bit słowo stanu procesu składa się z dwóch części:
- bity 0-8 określają stan procesu
- bity 9-15 opisują przyczynę wejścia procesu w dany stan
Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9-15 |
---|---|---|---|---|---|---|---|---|---|---|
Stan | 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?
Przyczyna zatrzymania jest indeksem w tablicy list procesów oczekujących:
Nazwa | Indeks | Opis |
---|---|---|
???? | 0 | ? |
WTTM | 4 (=NMECH) | czeka na czas |
WTBU | 5 | czeka na wolny bufor |
WTCOR | 6 | czeka na pamięć |
WTCAT | 12 (=WTCOR+NOCAM+2) | czeka na wejście do obszaru działania na katalogu |
WTSI | 13 | |
WTSTR | 14 | czeka na strumień? |
WTIEC | 15 | czeka na IEC? |
JWPI | 72 (=MEMCH+NMECH+NOMT) | |
JWIEC | 73 | |
NOQ | 16 |