Struktury danych CROOK-5

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

Opis procesu

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 3 IC, R0, SR
REJ 42 7 Rejestry R1-R7
JDAD 49 1 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

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