Wykonaj program kanału

W systemach operacyjnych IBM mainframe Execute Channel Program ( EXCP ) to makro generujące wywołanie systemowe , zaimplementowane jako instrukcja wywołania nadzorcy , w celu uzyskania dostępu do urządzenia niskiego poziomu, gdzie programista jest odpowiedzialny za dostarczenie programu kanału — listy urządzeń — określone polecenia (CCW) — do wykonania przez kanały we/wy, jednostki sterujące i urządzenia. EXCP dla OS/360 i następców jest bardziej szczegółowo opisany w Podręczniku programisty systemu operacyjnego.; EXCP dla DOS/360 i następców jest bardziej szczegółowo opisany w DOS Supervisor and I/O Macros. Ten artykuł dotyczy głównie systemów od OS/360 do z/OS ; niektóre szczegóły są różne dla TOS/360 i DOS/360 do z/VSE .

Określanie zestawów danych

Korzystając z EXCP, starsze urządzenia i starsze zestawy danych mogą działać ze stosunkowo wysoką wydajnością. Urządzenia EXCP są OTWARTE (czyli udostępniane aplikacji) poprzez określenie bloku kontroli danych (DCB) dla systemu operacyjnego i DTFPH dla systemu DOS.

Określanie operacji we/wy

W przypadku systemów od OS/360 do z/OS program zapewnia blok wejścia/wyjścia (IOB) do EXCP; jeśli program wykonuje EXCP do wielu IOB, system przetwarza je w kolejności, w jakiej zostały zażądane. Dla DASD IOB zawiera adres wyszukiwania, IOBSEEK , w formacie MBBCCHHR, gdzie M to zakres, BB to pojemnik na komórkę danych, CCHH to cylinder i głowica, a R to numer rekordu.

Przydatki

„Dodatek to napisana przez programistę procedura, która zapewnia dodatkową kontrolę nad operacjami wejścia/wyjścia podczas wykonywania programu kanału”. Obszerna lista dodatków ( wyjść w kontekście EXCP) umożliwia autoryzowanym programom zastępowanie lub rozszerzanie wielu kontroli bezpieczeństwa systemu i integralności danych. Większość z tych dodatków jest obsługiwana w celu zapewnienia zgodności z wcześniejszymi wersjami systemu operacyjnego, ale funkcje kilku z nich zostały zmodyfikowane lub rozszerzone dla MVS. Dodatki są określone w DCB jako dwa ostatnie znaki nazwy modułu IGG019xx, gdzie xx = WA do Z9 włącznie. Te nazwy modułów są zarezerwowane dla dodatków napisanych podczas instalacji. Każda inna nazwa formularza IGG019xx jest zarezerwowana do użycia przez metody dostępu IBM. Dodatki muszą znajdować się w SYS1.SVCLIB (SYS1.LPALIB w SVS lub nowszych wystąpieniach systemu operacyjnego).

Integralność zbioru danych

Zwykle, gdy program otwiera DCB dla EXCP, OPEN tworzy blok danych (DEB) zawierający każdy zakres dla pierwszego woluminu powiązanego zestawu danych; jednak w przypadku montażu równoległego OPEN tworzy DEB zawierający wszystkie zakresy dla wszystkich woluminów. Każdy DEB jest połączony łańcuchowo do przodu i do tyłu z DCB, a EXCP sprawdza łańcuch jako środek bezpieczeństwa systemu, ponieważ DCB znajduje się w niechronionej pamięci użytkownika, podczas gdy DEB znajduje się w chronionej pamięci systemowej, Subpool 253; w OS/VS1 i OS/VS2 EXCP używa DEBCHK, aby upewnić się, że DEB został utworzony przez OPEN. W przypadku DASD EXCP sprawdza, czy adres wyszukiwania w IOB mieści się w jednym z zakresów i używa maski ustawiania pliku , aby np. wskazać, czy zakres jest zorientowany na cylinder, czy na ścieżkę, czy zapis jest dozwolony; zapobiega to wyszukiwaniu poza określoną ścieżkę (cylinder). Jeśli programista spróbuje odczytać poza koniec ścieżki (cylindra), sprawdzenie jednostki i naprawa błędu spowoduje ponowne uruchomienie programu kanału z następną ścieżką (cylindrem) bieżącego zakresu. Jeśli operacja wykracza poza koniec zakresu, EXCP wywołuje końca zakresu , który może zaktualizować IOB i poprosić EXCP o ponowne wysłanie żądania lub EXCP o jego zakończenie.

Tylko starsze zestawy danych

EXCP jest czasami mylony z metodą bezpośredniego dostępu do urządzenia pamięci masowej, ale nie dotyczy wyłącznie urządzeń pamięci masowej z bezpośrednim dostępem; jest to raczej interfejs dostępu do urządzeń niskiego poziomu ogólnego przeznaczenia, który obsługuje każdy starszy typ urządzenia i dowolną starszą organizację zbioru danych. Aby uzyskać dostęp do wszystkich typów urządzeń i wszystkich organizacji zbiorów danych, bardziej ogólny interfejs Start Input/Output (STARTIO) jest dostępny w MVS/370 i kolejnych instancjach systemu operacyjnego, chociaż nie jest to oficjalnie obsługiwany interfejs.

Uproszczone operacje na zbiorach danych o dostępie bezpośrednim

Odmianą EXCP jest Execute Direct Access Program (XDAP), który służy wyłącznie do uzyskiwania dostępu do pamięci o dostępie bezpośrednim i służy do odczytywania i aktualizowania istniejących rekordów pamięci o dostępie bezpośrednim. XDAP nie może być używany do dodawania rekordów, ale XDAP może być używany wraz z BSAM lub BPAM do dodawania rekordów do takich zestawów danych, a kilka komponentów systemu operacyjnego wykorzystuje XDAP w ten sposób (w szczególności Linkage Editor, IEWL).

Dostęp do urządzeń telekomunikacyjnych

EXCP może być również używany do uzyskiwania dostępu do urządzeń komunikacyjnych podłączonych do kontrolerów komunikacyjnych IBM 2701 , 2702 i 2703 oraz procesorów front-end IBM 370x lub Amdahl 470x (i ich odpowiednich kontynuacji) działających w trybie emulatora (EP) lub trybie partycjonowanego emulatora (PEP) ).

Stosunek do przełożonego

Front-end EXCP jest zawsze w trybie bloku kontroli zadań (TCB), normalnym trybie dla aplikacji, ponieważ EXCP to SVC typu 1 .

W MVS/370 i kolejnych instancjach systemu operacyjnego procesor EXCP wywołuje STARTIO w celu zaplanowania wykonania programu kanału. Chociaż zaplecze procesora EXCP jest zawsze w Service Request Block (SRB), zaplecze zawiera kod emulacji, który umożliwia dodatkom opracowanym dla wcześniejszych instancji systemu operacyjnego sprzed MVS, w szczególności dla EXCP, działanie w dużej mierze tak jak wcześniej i tym samym sprawiać wrażenie, jakby był w trybie TCB, dla którego te dodatki zostały pierwotnie zaprojektowane. To rozróżnienie może skomplikować konwersję niektórych własnych metod i aplikacji dostępu do MVS.

Programy kanałów

Programy kanałowe System/360 to sekwencje poleceń, które są wykonywane przez kanał i urządzenie I/O. Programy kanałów mogą być umieszczane w dowolnym miejscu w pamięci głównej. Program kanału jest sekwencją słów poleceń kanału (CCW), które mogą być wykonywane sekwencyjnie, chyba że zostanie wykonane rozgałęzienie zwane Transfer In Channel (TIC) lub kanał zwróci modyfikator statusu . Każde CCW jest podwójnym słowem (osiem bajtów) w następujący sposób:

bit 0 7 8 31 +--------+--------+ |Polecenie | Adres danych | +--------+---------+ 32 36 40 47 48 63 +------+-- -+--------+------------+ |Flagi |000|zarezerwowane| liczyć | +------+---+--------+------------+ Sześć poleceń jest zdefiniowanych w najmniej znaczących bitach pola poleceń ( 0-7). Cztery (lub sześć) bitów wyższego rzędu to „modyfikatory” („M”) niektórych poleceń lub są ignorowane. Polecenia to: 0100 — Sense 1000 — Transfer in Channel (TIC) 1100 — Read back --01 — Write --10 — Read --11 — Control

Adres danych (8-31) to 24-bitowy adres obszaru bufora pamięci głównej, do którego lub z którego dane mają być przesyłane.

Bity flagi (32-36) są zdefiniowane w następujący sposób:

Fragment ID Nazwa Opis
32 płyta CD Dane łańcuchowe Użyj obszaru przechowywania określonego w następnym CCW, aby kontynuować to polecenie
33 CC Komenda łańcuchowa
Wykonaj następną sekwencję CCW po zakończeniu tego polecenia, jeśli CC lub CD nie są ustawione, program kanału kończy się po wykonaniu tego polecenia
34 SLI Ukryj wskazanie długości Zignoruj ​​niepoprawną długość tego polecenia
35 POMINĄĆ Pominąć Wstrzymaj przesyłanie danych dla tego polecenia
36 PCI Przerwa sterowana programem Wygeneruj przerwanie, gdy to polecenie rozpocznie wykonywanie

Pole licznika (48-63) wskazuje liczbę bajtów, które mają zostać przesłane przez to polecenie.

Wszystkie osiem bitów poleceń inicjujących operacje we/wy jest przekazywanych do urządzenia. „Bity modyfikujące określają urządzeniu sposób wykonania polecenia”. Na przykład dla IBM 2305 DASD polecenie zapisu ('MMMMMM01'BX) może mieć następujące wartości:

Wartość bitowa Szesnastkowy Opis
0001 1001 '19'X Napisz adres domowy
0001 0101 '15'X Zapisz rekord 0
0001 0001 '11'X Usuwać
0001 1101 '1D'X Zapisz liczbę, klucz i dane
0000 0001 '01'X Napisz specjalną liczbę, klucz i dane
0000 0101 '05'X Zapisz dane
0000 1101 '0D'X Zapisz klucz i dane

Notatki

DFSMSdfp
z/OS wersja 2 wydanie 4 DFSMSdfp Zaawansowane usługi . IBM. Sierpień 2020. SC23-6861-40.
  1. Bibliografia   _ Komputery i programowanie: podejście do języka asemblera System / 360-370 . Houghtona Mifflina. P. 431. ISBN 978-0-395-16796-0 .
  2. ^   Gopal K. Kapur (1 stycznia 1970). Programowanie w języku asemblera IBM 360 . John Wiley & Synowie. s. 453–454, 456–459, 461 . ISBN 978-0-471-45840-1 .
  3. ^   Robert H. Johnson (czerwiec 1989). MVS: koncepcje i wyposażenie . Publikacje intertekstowe. P. 558. ISBN 978-0-07-032673-6 .
  4. ^ „Rozdział 4. Wykonywanie własnych programów kanałów” (PDF) . z/OS wersja 2 wydanie 4 DFSMSdfp Zaawansowane usługi (PDF) . IBM. sierpień 2020. s. 151–210. SC23-6861-40.
  5. ^ Podręcznik programisty systemu operacyjnego IBM System / 360 (PDF) . IBM. Marzec 1967. C28-6550-2.
  6. ^   Gary A. Stotts (1 sierpnia 1990). DOS/VSE: Wprowadzenie do systemu operacyjnego . Nauki informacyjne QED. P. 18. ISBN 978-0-89435-332-1 .
  7. ^ DOS Supervisor i makra we / wy (PDF) . IBM. GC24-S037-12.
  8. ^ IBM z/VSE wersja 6 wydanie 1 Podręcznik użytkownika makr systemowych (PDF) . IBM. 2015. SC34-2709-00.
  9. ^ „Dodatki” (PDF) . Zarządzanie danymi systemu operacyjnego dla programistów systemowych — wydanie 21 (PDF) . Systems Reference Library (wydanie dwunaste). Firma IBM. kwiecień 1973. s. 46. ​​GC28-6550-11 . Źródło 28 czerwca 2022 r .
  10. ^ DFSMSdfp , s. 199–200, dodatki EXCP i EXCPVR .
  11. ^ DFSMSdfp , Lista autoryzowanych dodatków (IEAAPP00) , pp=201-202.
  12. ^ IGG = przedrostek komponentu obsługi we / wy; 019 = Otwarty komponent podrzędny SVC; xx = funkcja podrzędna
  13. ^ a b Oprogramowanie AG. „Naturalne przetwarzanie zIIP: TCB, SRB i enklawy” . Źródło 22 marca 2021 r .
  14. ^ IBM Corporation (styczeń 1967). IBM System/360 Zasady działania (PDF) . s. 84–121 . Źródło 4 grudnia 2019 r .
  15. ^ IBM Corporation (sierpień 1971). Podręcznik referencyjny dla IBM 2835 Storage Control i IBM 2305 Fixed Head Storage Module (PDF) . P. 17 . Źródło 5 grudnia 2019 r . .