Struktury danych CROOK-5: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
(Nie pokazano 16 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
= Opis procesu = | = 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: | |||
{| class="wikitable" | {| class="wikitable" | ||
! Nazwa !! Indeks !! Rozmiar !! Opis | ! 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: | Struktura drzewa procesów opisana jest w następujący sposób: | ||
Linia 75: | Linia 77: | ||
* W polu PAPR znajduje się wskaźnik na kontekst procesu nadrzędnego. Dla procesu INI jest to -1. | * 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 | * W polu CHLS znajduje się wskaźnik na pierwszy na liście proces potomny | ||
** Pierwszy proces potomny wskazuje na | ** 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 | ** 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. | 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. | 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. | ||
[[File:Crook-procesy.png]] | [[File:Crook-procesy.png]] | ||
Linia 86: | Linia 88: | ||
= Kolejki procesów = | = 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): | |||
{| class="wikitable" | {| class="wikitable" | ||
Linia 92: | Linia 95: | ||
! Pozycja !! Nazwa !! Opis | ! Pozycja !! Nazwa !! Opis | ||
|- | |- | ||
| 0 || | | 0 || 0 || Kolejka procesów oczeujących na kanał pamięciowy 0 | ||
|- | |- | ||
| 1 || | | 1 || 1 || Kolejka procesów oczeujących na kanał pamięciowy 1 | ||
|- | |- | ||
| 2 || | | 2 || 2 || Kolejka procesów oczeujących na kanał pamięciowy 2 | ||
|- | |- | ||
| 3 || WTRAM || Kolejka oczekujących po bufor RAM | | 3 || 3<br/>''WTRAM'' || Kolejka procesów oczeujących na kanał pamięciowy 3<br />''w wersji 8: Kolejka oczekujących po bufor RAM'' | ||
|- | |- | ||
| 4 || WTTM || Kolejka oczekujacych na | | 4 || WTTM || Kolejka oczekujacych na określony czas zegarowy | ||
|- | |- | ||
| 5 || WTBU || czeka na wolny bufor | | 5 || WTBU || czeka na wolny bufor | ||
Linia 119: | Linia 122: | ||
16-bitowe słowo stanu procesu składa się z trzech części: | 16-bitowe słowo stanu procesu składa się z trzech części: | ||
* bity 0-8 określają stan procesu | * bity 0-8 określają stan procesu | ||
* bity 9 | * 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. | |||
{| class="wikitable" | {| class="wikitable" | ||
! width=30 | Bity !! width=30 | 0 !! width=30 | 1 !! width=30 | 2 !! width=30 | 3 !! width=30 | 4 !! width=30 | 5 !! width=30 | 6 !! width=30 | 7 !! width=30 | 8 !! 9 | ! width=30 | Bity !! width=30 | 0 !! width=30 | 1 !! width=30 | 2 !! width=30 | 3 !! width=30 | 4 !! width=30 | 5 !! width=30 | 6 !! width=30 | 7 !! width=30 | 8 !! 9-15 | ||
|- | |- | ||
| '''Zawartość''' || HAST || HAQJ || || HAJW || HAQL || HABA || ALRS || HADV || HCAM<br/>NCOW || | | '''Zawartość''' || HAST || HAQJ || || HAJW || HAQL || HABA || ALRS || HADV || HCAM<br/>NCOW || Przyczyna | ||
|} | |} | ||
Linia 143: | Linia 147: | ||
* HATR HAQL+041 - czeka na zakończenie? | * HATR HAQL+041 - czeka na zakończenie? | ||
* HADE 040 - czeka na usunięcie? | * HADE 040 - czeka na usunięcie? | ||
{{source|title=Opracowanie własne}} |
Aktualna wersja na dzień 12:16, 8 sty 2015
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