Struktury danych CROOK-5

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania

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, 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).

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