Blok kontrolny jednostki
W systemach operacyjnych IBM na komputerach mainframe OS/360 i jego następcach blok sterowania jednostką ( UCB ) jest strukturą pamięci lub blokiem sterowania , który opisuje dowolne pojedyncze urządzenie peryferyjne wejścia/wyjścia ( jednostka ) lub ekspozycję (alias) na system operacyjny. Niektóre dane w UCB instruują również nadzorcę wejścia/wyjścia ( IOS ) do używania pewnych zamkniętych podprogramów oprócz normalnego przetwarzania IOS w celu dodatkowej fizycznej kontroli urządzenia.
Niektóre inne systemy operacyjne mają podobne struktury.
Przegląd
Podczas ładowania programu początkowego (IPL) obecnych systemów MVS program inicjalizacji jądra (NIP) odczytuje niezbędne informacje z pliku definicji wejścia/wyjścia (IODF) i wykorzystuje je do zbudowania UCB. UCB są przechowywane w pamięci systemowej, w rozszerzonym obszarze kolejek systemowych ( ESQA ). Po zakończeniu IPL UCB są własnością działu obsługi wejścia/wyjścia. Niektóre dane przechowywane w UCB to: typ urządzenia (np. dysk, taśma, drukarka, terminal), adres urządzenia (np. 1002 ), identyfikator podkanału i numer urządzenia, identyfikator ścieżki kanału (CHPID), który określa ścieżkę do urządzenia, w przypadku niektórych urządzeń numer seryjny woluminu (VOLSER) oraz wiele innych informacji, w tym dane dotyczące zarządzania zadaniami systemu operacyjnego.
Podczas gdy zawartość UCB zmieniała się wraz z ewolucją MVS, koncepcja nie. Jest to reprezentacja dla systemu operacyjnego urządzenia zewnętrznego. Wewnątrz każdego UCB znajduje się wskaźnik UCBIOQ do bieżącego elementu kolejki IOS (IOQ), wskaźniki UCBIOQF i UCBIOQL do kolejki IOQ (IOQ) oraz numer podkanału dla słowa identyfikującego podkanał używanego w instrukcji start subchannel (SSCH) do uruchomienia program kanału (łańcuch słów poleceń kanału (CCW)).
UCB ewoluowało, by być kotwicą do przechowywania informacji i stanów o urządzeniu. UCB ma obecnie pięć obszarów używanych do zewnętrznego interfejsu: Device Class Extension, UCB Common Extension, UCB Prefix Stub, UCB Common Segment i UCB Device Dependent Segment. Pozostałe obszary są przeznaczone wyłącznie do użytku wewnętrznego. Informacje te można odczytać i wykorzystać do ustalenia informacji o urządzeniu.
W najwcześniejszych implementacjach OS/360 UCB (fundamenty i rozszerzenia) były montowane podczas SYSGEN i znajdowały się w pierwszych 64 KB obszaru systemu, ponieważ tablica wyszukiwania urządzeń we/wy składała się z 16-bitowych adresów. Późniejsze udoskonalenia pozwoliły rozszerzeniom znajdować się powyżej linii 64 kilobajtów (65 536 bajtów), oszczędzając w ten sposób miejsce na dodatkowe podstawy UCB poniżej linii 64 kilobajtów, a także zachowując w ten sposób architekturę tabeli wyszukiwania UCB (konwersja CUu na podstawę UCB adres). Ostatecznie instalacja może zdecydować się na umieszczenie UCB powyżej linii linii 16 MiB, chociaż w procesie zwanym cieniowaniem UCB System operacyjny tworzy tymczasową lokalną kopię UCB podczas przydzielania pliku bez opcji XTIOT .
Obsługa równoległych operacji we/wy
UCB zostały wprowadzone w latach 60. wraz z systemem OS/360. Wtedy urządzenie adresowane przez UCB było zwykle dyskiem twardym z ruchomą głowicą lub napędem taśmowym , bez wewnętrznej pamięci podręcznej . Bez niego urządzenie było zwykle rażąco lepsze od procesora kanałowego komputera mainframe . W związku z tym nie było powodu, aby wykonywać na nim wiele operacji wejścia/wyjścia w tym samym czasie, ponieważ fizycznie byłoby to niemożliwe dla urządzenia. W 1968 roku IBM wprowadził dyski o stałej głowicy 2305-1 i 2305-2, które miały wykrywanie pozycji obrotowej (RPS) i osiem ekspozycji (adresy aliasów) na dysk; obsługa OS / 360 zapewniała UCB na ekspozycję, aby umożliwić wiele równoczesnych programów kanałów. Podobnie późniejsze systemy wywodzące się z OS / 360 wymagały dodatkowego UCB dla każdego przydzielonego woluminu wirtualnego w IBM 3850 Mass Storage System (MSS) oraz dla każdej ekspozycji w 3880-11 i jego następcach.
Woluminy o dostępie równoległym (PAV)
Ponieważ tylko jeden zestaw poleceń kanału lub wejścia/wyjścia może być uruchomiony jednocześnie. Było to w porządku w latach 60., kiedy procesory były wolne, a operacje we/wy można było przetwarzać tylko tak szybko, jak procesory mogły je przetwarzać. W miarę jak systemy dojrzewały, a szybkość procesora znacznie przekraczała możliwości wejścia/wyjścia, dostęp do urządzenia, które zostało zserializowane na poziomie UCB, stał się poważnym wąskim gardłem.
Wolumen dostępu równoległego ( PAV ) pozwala UCB klonować się, aby umożliwić jednoczesne działanie wielu wejść/wyjść. Przy odpowiednim wsparciu sprzętu DASD, PAV zapewnia obsługę więcej niż jednego wejścia/wyjścia do jednego urządzenia na raz. Aby zachować kompatybilność wsteczną , operacje są nadal serializowane poniżej poziomu UCB. Ale PAV pozwala na zdefiniowanie dodatkowych UCB dla tego samego urządzenia logicznego, z których każdy używa dodatkowego aliasu . Na przykład urządzenie DASD w bazie adres 1000, mógłby mieć adresy aliasów 1001, 1002 i 1003. Każdy z tych adresów aliasów miałby swój własny UCB. Ponieważ obecnie do jednego urządzenia przypisane są cztery UCB, możliwe są cztery jednoczesne wejścia/wyjścia. Zapisy w tym samym zakresie, obszar dysku przypisany do jednego ciągłego obszaru pliku, są nadal serializowane, ale inne odczyty i zapisy odbywają się jednocześnie. Pierwsza wersja PAV, kontroler dysku przypisuje PAV do UCB. W drugiej wersji przetwarzania PAV, Workload Manager (WLM) od czasu do czasu ponownie przypisuje PAV do nowych UCB. W trzeciej wersji przetwarzania PAV, z serii IBM DS8000 , każde wejście/wyjście wykorzystuje dowolny dostępny PAV z potrzebnym mu UCB.
Efektem netto PAV jest zmniejszenie składnika czasu IOSQ czasu odpowiedzi dysku, często do zera. Od 2007 r. Jedynymi ograniczeniami dotyczącymi PAV są liczba adresów aliasów, 255 na adres podstawowy, oraz ogólna liczba urządzeń na logiczną jednostkę sterującą, licząc 256 baz i aliasów.
Statyczne i dynamiczne PAV
Istnieją dwa typy adresów aliasów PAV, statyczne i dynamiczne. Statyczny adres aliasu jest zdefiniowany zarówno w sprzęcie DASD, jak iw systemie z/OS, aby odnosił się do określonego pojedynczego adresu podstawowego. Dynamiczny oznacza, że liczba adresów aliasów przypisanych do określonego adresu bazowego zmienia się w zależności od potrzeb. Zarządzanie tymi dynamicznymi aliasami pozostawia się WLM działającemu w trybie docelowym (co zawsze ma miejsce w przypadku obsługiwanych poziomów systemu z/OS ). W większości systemów, które implementują PAV, zwykle występuje mieszanka obu typów PAV. Jeden, może dwa aliasy statyczne są definiowane dla każdego podstawowego UCB, a kilka aliasów dynamicznych jest zdefiniowanych, którymi WLM może zarządzać według własnego uznania.
Gdy WLM czuwa nad aktywnością we/wy w systemie, WLM określa, czy istnieje duże obciążenie pracą, które jest opóźnione z powodu dużej rywalizacji o określone urządzenie obsługujące PAV. W szczególności w przypadku urządzenia dyskowego podstawowe i aliasowe UCB muszą być niewystarczające, aby wyeliminować czas kolejki IOS. Jeśli rywalizacja jest duża, a WLM szacuje, że pomogłoby to obciążeniu w łatwiejszym osiągnięciu jego celów, spróbuje przenieść aliasy z innego adresu podstawowego na to urządzenie.
Innym problemem może być nieosiągnięcie określonych celów wydajności, określonych przez klasy usług WLM. Następnie WLM wyszuka UCB aliasów, które przetwarzają pracę dla mniej ważnych zadań (klasa usług), i jeśli to konieczne, WLM ponownie powiąże aliasy z adresami bazowymi związanymi z ważniejszymi zadaniami.
HyperPAV
Działania WLM polegające na przenoszeniu aliasów z jednego urządzenia dyskowego na drugie wymagają kilku sekund, aby efekty były widoczne. W wielu sytuacjach nie jest to wystarczająco szybkie. HyperPAV są znacznie bardziej responsywne, ponieważ pozyskują UCB z puli na czas trwania pojedynczej operacji we/wy, zanim zwrócą ją do puli. W związku z tym do obsługi tego samego obciążenia wymagana jest mniejsza liczba UCB w porównaniu z dynamicznymi PAV. Nie ma opóźnienia w oczekiwaniu na reakcję WLM.
W innych systemach operacyjnych
VMS firmy Digital wykorzystuje identycznie nazwaną strukturę, UCB, do podobnych celów. Dla każdego urządzenia I/O tworzony jest UCB. Dane w UCB obejmują numer jednostki urządzenia (część nazwy urządzenia) oraz nagłówek listy, do którego oczekujące żądania we/wy mogą być umieszczane w kolejce. UCB może mieć rozszerzenie zdefiniowane przez sterownik urządzenia, w którym sterownik może przechowywać dane zdefiniowane przez sterownik, które są tworzone dla każdego urządzenia.