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.
- Bibliografia _ Komputery i programowanie: podejście do języka asemblera System / 360-370 . Houghtona Mifflina. P. 431. ISBN 978-0-395-16796-0 .
- ^ 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 .
- ^ Robert H. Johnson (czerwiec 1989). MVS: koncepcje i wyposażenie . Publikacje intertekstowe. P. 558. ISBN 978-0-07-032673-6 .
- ^ „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.
- ^ Podręcznik programisty systemu operacyjnego IBM System / 360 (PDF) . IBM. Marzec 1967. C28-6550-2.
- ^ Gary A. Stotts (1 sierpnia 1990). DOS/VSE: Wprowadzenie do systemu operacyjnego . Nauki informacyjne QED. P. 18. ISBN 978-0-89435-332-1 .
- ^ DOS Supervisor i makra we / wy (PDF) . IBM. GC24-S037-12.
- ^ IBM z/VSE wersja 6 wydanie 1 Podręcznik użytkownika makr systemowych (PDF) . IBM. 2015. SC34-2709-00.
- ^ „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 .
- ^ DFSMSdfp , s. 199–200, dodatki EXCP i EXCPVR .
- ^ DFSMSdfp , Lista autoryzowanych dodatków (IEAAPP00) , pp=201-202.
- ^ IGG = przedrostek komponentu obsługi we / wy; 019 = Otwarty komponent podrzędny SVC; xx = funkcja podrzędna
- ^ a b Oprogramowanie AG. „Naturalne przetwarzanie zIIP: TCB, SRB i enklawy” . Źródło 22 marca 2021 r .
- ^ IBM Corporation (styczeń 1967). IBM System/360 Zasady działania (PDF) . s. 84–121 . Źródło 4 grudnia 2019 r .
- ^ 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 . .