Struktury danych CROOK-5

Z MERA 400 wiki
Skocz do: nawigacja, szukaj

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.

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):

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