В данной главе будут рассмотрены фундаментальные функции z/OS,
реализуемые с помощью базовой управляющей программы (BCP) и входящих в
ее состав модулей.
Управление памятью
Управление основной памятью в z/OS базируется на концепции виртуальной
памяти, основные принципы которой были изложены при рассмотрении
эволюции системы в п. 5.1.1. Важно подчеркнуть, что в z/OS фактически
сохранена архитектура, реализованная в MVS/ESA и развитая в дальнейшем
в OS/390. Конечно, расширение разрядности адреса (и, следовательно,
объема адресного пространства) не могло не привести к целому ряду
нововведений, о которых далее и пойдет речь. Но начнем, однако, с общих
понятий и терминов, принятых в MVS, OS/390 и z/OS и необходимых для
понимания механизмов управления памятью , .
В соответствии с концепцией MVS, каждая прикладная программа, а также
некоторые системные функции получают в свое распоряжение отдельное виртуальное адресное пространство (virtual address space), размер
которого для OS/390 составлял 231 байт, а для z/OS увеличился до 264
байт. Виртуальная память (virtual storage) является воображаемым
объектом и фактически представлена в системе как совокупность
специальных структур (таблиц), описывающих размещение данных и кода
программы в выделенном для нее адресном пространстве. В реальности же
выполнение приложений может осуществляться только тогда, когда данные и
код загружены в основную память. На рис. 5.8 представлен обобщенный
механизм реализации технологии виртуальной памяти.
(рис 5.8) Элементы системы управления памятьюНекоторое приложение (MYPROG) "размещается" операционной системой в
выделенном для него виртуальном адресном пространстве, занимая
некоторое количество блоков памяти фиксированной длины, называемых страницами (page). Размер каждой страницы равен 4 KB. Приложение
использует виртуальные страничные адреса, и ему доступна любая область
собственного адресного пространства.
Чтобы начать выполнение приложения, система загружает его виртуальные
страницы в основную память (Central storage), отмечая их местоположение
в специальной таблице страниц (page table). Основная память также
представлена в виде набора блоков размером 4 KB, называемых фреймами
(frame). При загрузке значения виртуальных адресов сохраняются в
неизменном виде. Понятно, что при обращении к памяти требуются реальные
физические адреса. Для преобразования виртуальных адресов в физические
используется специальный аппаратный механизм динамического
преобразования адресов DAT (Dynamic Address Translation), который
учитывает реальное размещение виртуальных страниц в основной памяти в
момент выполнения адресных команд. Механизм DAT подробно описан в п.
2.1.3. Напомним, что для повышения эффективности управления в системе
поддерживается иерархическая модель сегментации виртуальной памяти, в
соответствии с которой страницы объединяются в сегменты размером 1 MB
(256 страниц на сегмент), а те в свою очередь - в более крупные разделы
виртуальной памяти, называемые регионами.
При нехватке основной памяти некоторые страницы могут быть временно
перемещены в специальные страничные наборы данных (page data set) во
внешнюю вспомогательную память (Auxiliary storage) на магнитных дисках.
Блок памяти в страничных наборах получил название слот (slot) и также
имеет размер 4 KB. Вытесненные во вспомогательную память страницы
находятся там до тех пор, пока не возникнет необходимость в их
использовании при выполнении приложения. В этом случае генерируется
программное прерывание по отсутствию страницы (page fault) и, при
наличии свободных фреймов, запускается процедура "подкачки" страницы из
вспомогательной памяти. При занятии страницей свободного фрейма в
таблицу страниц вносится его указатель и затем формируется физический
адрес.
Конечно, возможна ситуация, когда в основной памяти для загрузки
отсутствующей страницы не осталось ни одного свободного фрейма. В этом
случае запускается процедура изъятия страниц (page stealing), в
результате которой одна или несколько виртуальных страниц
"откачиваются" из основной памяти во вспомогательную, чтобы освободить
место. Выбор изымаемых страниц основан на классическом методе LRU,
использующем формируемые аппаратно биты ключа защиты памяти: бит
обращения R и бит изменения С (см. п. 2.1.3).
Перемещение страниц приложения из основной памяти во вспомогательную и
обратно называют страничным обменом (paging), который может происходить
многократно в течение всего времени выполнения. При этом следует
обратить внимание, что для работы программ вовсе не требуется
одновременное присутствие в основной памяти всех ее страниц, равно как
и размещение этих страниц в соседних фреймах. Некоторые страницы,
содержащие важную системную информацию, могут не участвовать в
страничном обмене. Они имеют статус неперемещаемых (fixed) и постоянно
находятся в основной памяти. Остальные же страницы считаются перемещаемыми (pagable).
Наряду со страничным обменом в z/OS поддерживается еще одна процедура,
управляющая перемещением страниц, - свопинг (swapping). В некоторые
критические моменты работы системы (например, при нехватке ресурсов или
когда приложение долгое время не проявляет активности) операционная
система по инициативе менеджера управления рабочей нагрузкой WLM может
принять решение о выгрузке (swap out) всех страниц адресного
пространства приложения из основной памяти во вспомогательную. Для этой
цели могут создаваться специальные наборы данных свопинга (swap data
set). Вытесненным таким образом приложениям не предоставляется
процессорное время до тех пор, пока не будет выполнена операция swap
in, возвращающая страницы приложения в основную память.
Необходимо отметить, что в операционных системах MVS/ESA и OS/390 для
повышения эффективности страничного обмена применялась так называемая расширенная память (Expanded storage), которая, являясь фактическим
продолжением основной памяти, использовалась для хранения вытесненных
оттуда страниц. Это позволило существенно уменьшить время страничного
обмена по сравнению с использованием для той же цели дисковой памяти.
Благодаря применяемой для расширенной памяти блочной (а не побайтной)
адресации (размер блока - 4 KB), объем расширенной памяти мог достигать
8 GB, в то время как основная память была ограничена размером 2 GB. В
z/OS необходимость в поддержке расширенной памяти отпала, поскольку
появилась возможность просто увеличить объем основной памяти (в z900 до
64 GB)!
Таким образом, можно увидеть, что в z/OS виртуальные страницы
приложения в процессе выполнения могут быть физически размещены
частично в основной, а частично во вспомогательной памяти. Для учета
текущего местонахождения и хранения атрибутов виртуальных страниц
операционная система создает специальные таблицы, называемые таблицами
страниц, сегментов и регионов. В любой момент при необходимости
некоторые виртуальные страницы могут сменить "место жительства" на
основе страничного обмена или свопинга.
Для управления памятью в базовой управляющей программе z/OS
представлены три менеджера памяти (VSM, RSM, ASM), каждый из которых
отвечает за свой участок работы (рис. 5.8).
Менеджер виртуальной памяти VSM (Virtual Storage Manager) осуществляет
постраничное размещение данных и кода приложений в виртуальном адресном
пространстве по запросу, определяет структуру адресных пространств,
предоставляет необходимую информацию об использовании виртуальной
памяти менеджеру управления нагрузкой WLM. Для этих целей VSM, как и
другие менеджеры памяти, предоставляет программисту набор специальных
макросредств. Для каждого виртуального адресного пространства VSM
строит управляющий блок, получивший название блок управления адресным
пространством ASCB (Address Space Control Block). Этот блок содержит
информацию и указатели, используемые при управлении адресным
пространством. Для идентификации каждое создаваемое адресное
пространство получает уникальный номер (идентификатор) ASID (Address
Space IDentificator).
Менеджер физической памяти RSM (Real Storage Manager) производит
размещение виртуальных страниц в основной памяти, создает и
корректирует таблицы страниц, сегментов и регионов, управляет
страничным обменом и свопингом. В OS/390 RSM также брал на себя функции
управления расширенной памятью.
Менеджер вспомогательной памяти ASM (Auxiliary Storage Manager)
предназначен для создания и управления наборами данных страничного
обмена и свопинга на DASD, а также для перемещения виртуальных страниц
между основной и вспомогательной памятью по указанию RSM.
Следующим важным вопросом является структура виртуального адресного
пространства. Ранее отмечалось, что адресное пространство MVS включает общую область (common area), в которой размещаются доступные всем
приложениям системные программы и данные, и защищенную приватную
область (private area), используемую для размещения кода и данных
приложения, а также ассоциированных с приложением системных структур.
Начиная с MVS/XA, когда состоялся переход на 31-разрядную архитектуру,
включая OS/390, структура виртуальной памяти приложения выглядит так,
как представлено на . Эта структура полностью
соответствует структуре младших 2 GB виртуальной памяти z/OS, поэтому
рассмотрим ее подробнее.
Для поддержки 24-разрядных приложений структура виртуального адресного
пространства в младших 16 MB соответствует требованиям архитектуры
MVS/370. Свыше границы 16 MB размещаются расширенная общая область
(Extended Common), как продолжение общей области MVS/370, и расширенная
приватная область (Extended Private), которая может использоваться
31-разрядными приложениями. Следует отметить, что содержимое общей
области, включая расширенную ее часть, для всех адресных пространств
совпадает. Фактически это достигается путем создания в системе единого
набора виртуальных страниц с определенными виртуальными адресами,
разделяемого всеми адресными пространствами. Содержимое же приватной
области для каждого адресного пространства уникально.
Общая область представлена совокупностью областей, каждая из которых
предназначена для определенных целей:
область ядра - Nucleus;
область системных очередей - SQA (System Queue Area);
область загрузки модулей - LPA (Link Pack Area);
область общих сервисов - CSA (Common Service Area);
область префиксации - PSA (Prefix Save Area).
В расширенной общей области выделяется дополнительная виртуальная
память для перечисленных областей с расположением относительно границы
16 MB в зеркальном порядке.
Область ядра Nucleus/Extended Nucleus содержит базовый системный код и
дополнительные элементы ядра z/OS, формируемые в процессе начальной
загрузки системы (IPL) на основе набора данных SYS1.NUCLEUS. Состав
ядра определяется системным программистом путем настройки раздела NUCLST системного реестра SYS1.PARMLIB. Виртульные страницы области
ядра являются неперемещаемыми, то есть всегда загружены в основную
память и в страничном обмене не участвуют.
Область системных очередей SQA/ESQA служит для размещения общесистемных
таблиц, блоков управления и очередей, состав и содержание которых
определяется конфигурацией системы и общим количеством создаваемых в
процессе работы адресных пространств. Настройка размера области SQA
(ESQA) осуществляется с помощью параметра SQA в разделе IEASYS реестра SYS1.PARMLIB или с консоли оператора. При нехватке памяти для SQA
система пытается "занять" необходимое пространство в области CSA.
Страницы SQA (ESQA) также являются неперемещаемыми и всегда остаются в
основной памяти.
Область загрузки модулей LPA/ELPA предназначена для размещения
дополнительных реентерабельных загрузочных модулей ядра, включая
SVC-программы и методы доступа, а также некоторые пользовательские
приложения. Все указанные программы могут одновременно вызываться
множеством задач, работающих в различных адресных пространствах.
Модули, загружаемые в LPA/ELPA, должны быть предварительно записаны в
библиотечный набор данных SYS1.LPALIB или другие наборы данных,
определяемые в разделе LPALST реестра SYS1.PARMLIB. Таким образом,
размер области LPA/ELPA зависит от количества размещаемых модулей.
Учитывая особую роль модулей LPA, система требует их авторизации на
основе технологии APF (Authorized Program Facility). Авторизованные
модули получают право обращаться к защищенным областям системной и
приватной памяти.
Область LPA/ELPA в свою очередь делится на три подобласти:
Pageable LPA (PLPA/EPLPA) - содержит перемещаемые модули;
Fixed LPA (FLPA/EFLPA) - содержит неперемещаемые модули;
Modified LPA (MLPA/EMLPA) - может использоваться на этапе начальной
загрузки системы для временного хранения модифицируемых или обновляемых
модулей PLPA.
Область общих сервисов CSA/ECSA служит для размещения общих данных,
используемых несколькими активными адресными пространствами, и в том
числе для организации обмена (межпространственной связи) между
адресными пространствами. Размер области CSA/ECSA устанавливается с
помощью параметра CSA в разделе IEASYS реестра SYS1.PARMLIB или с
консоли оператора. По умолчанию страницы CSA являются перемещаемыми.
Область префиксации PSA служит для хранения содержимого регистра PSW
(старого и нового) при реализации механизма обработки прерываний, а
также содержит указатели на важные системные управляющие блоки и
таблицы. Данная область поддерживается аппаратно, всегда привязана к
началу виртуального адресного пространства и имеет размер 4 KB в
системах с архитектурой S/370, 370/XA, ESA/390 и 8 KB в системах с
z/Architecture.
Для знакомства со структурой приватной области сначала рассмотрим, как
она выглядит в OS/390, то есть в режиме 31-разрядной адресации (рис.
5.9). Мы уже отмечали, что часть виртуальной памяти в пределах первых 2
GB сохранила свою структуру в z/OS. В приватной области выделяются
следующие элементы:
регион пользователя - User Region и Extended User Region;
область локальных системных очередей - LSQA (Local System Queue Area)
и ELSQA (Extended Local System Queue Area);
область планировщика работ - SWA (Scheduler Work Area) и ESWA
(Extended Scheduler Work Area);
подпулы (Subpools) 229, 230 и 249;
системный регион - System Region.
(рис 5.9) Структура 31-разрядного виртуального адресного пространстваРегион пользователя предназначен для размещения пользовательских
приложений и данных. После загрузки программ в регион пользователя
система исключает из использования оставшиеся незанятыми страницы до
поступления запроса на выделение дополнительных страниц в данном
регионе. У пользователя есть возможность управлять размером региона с
помощью одноименного параметра REGION операторов языка управления
заданиями JOB и EXEC (см. п. 5.1.5).
Область локальных системных очередей LSQA/ELSQA содержит таблицы и
очереди, ассоциируемые с текущим адресным пространством и выполняемыми
в нем приложениями. В частности, здесь хранятся таблицы страниц,
сегментов и регионов, формируемые менеджером физической памяти RSM.
Отметим, что указанные таблицы участвуют в страничном обмене наряду с
прочими перемещаемыми страницами.
Область планировщика работ SWA/ESWA служит для размещения блоков
управления задачами (TCB) и других блоков управления, создаваемых для
обслуживания приложений адресного пространства. Назначение блоков
управления будет рассмотрено позднее.
Подпулы (Subpools) 229, 230 и 249 предоставляют локальную память,
доступ к которой реализуется на основе запрашиваемых ключей защиты. Эта
область служит для размещения управляющих блоков, которые могут
использовать только авторизованные программы, имеющие соответствующее
значение ключа. Эти управляющие блоки создаются системными компонентами
для нужд пользовательских приложений.
LSQA, SWA и подпулы фактически разделяют одну область виртуальной
памяти, которая примыкает к границе области CSA, а ELSQA, ESWA - к
границе 2 GB. Эти области могут увеличиваться за счет незанятых страниц
региона пользователя. Следует отметить, что подпулы могут выделяться и
в других областях виртуальной памяти. Они служат для группирования
логически связанных между собой блоков виртуальной памяти, например по
значению ключа защиты, по возможности откачки или свопинга и т.п.
Системный регион System Region резервирует 16 KB виртуальной памяти для
хранения служебной информации при выполнении некоторых системных
функций.
Рассмотрим далее, какова структура 64-разрядного виртуального адресного
пространства, впервые реализованного в z/OS, начиная с версии V1R2. В
64-разрядных пространствах исполняемый программный код по-прежнему
может размещаться только в границах младших 2 GB, однако данные, к
которым эти программы обращаются, могут быть загружены в виртуальную
память свыше 2 GB. В настоящий момент при запуске приложения
первоначально создается адресное пространство размером 2 GB, однако по
запросу программы оно может быть увеличено (для этого предусмотрена
специальная макрокоманда IARV64).
(рис 5.10) Структура 64-разрядного виртуального адресного пространстваНа рис. 5.10 представлена структура 64-разрядного виртуального
адресного пространства, которая включает следующие области:
от 0 до 2 GB - сохраняет ранее рассмотренную структуру (см.
рис. 5.9) и служит для размещения программного кода и данных для всех
типов приложений;
от 2 GB до 4 GB - не используемая по архитектурным соображениям
область, получившая название BarТермин Bar можно перевести как <пробел>, <планка>, <барьер> - кому что нравится. Появились также термины <above the bar> и <below the bar> для обозначения областей виртуальной памяти, лежащих соответственно выше Bar-области (для доступа требуется 64-разрядный адрес) и ниже (достаточно 31-разрядного адреса). ;
от 4 GB до 2 TB - нижний регион пользователя (low user region).
Используется первым для предоставления памяти свыше границы 2 GB под
данные;
от 2 TB до 512 TB - разделяемая область (shared area) для совместного
использования различными адресными пространствами. В настоящее время не
поддерживается;
от 512 TB до 16 EB - верхний регион пользователя (high user region).
Используется при нехватке памяти в нижнем регионе.
При освоении новых объемов памяти полезно напомнить используемые
единицы измерения: 1 терабайт (TB) равен 240 байт или 1024 GB, 1
петабайт (PB) равен 250 байт или 1024 TB, 1 экзабайт (EB) равен 260
байт или 1024 PB.
Для управления объемом выделяемой виртуальной памяти свыше 2 GB в
рамках языка управления заданиями для операторов JOB и EXEC реализован
новый параметр MEMLIMIT.
Как отмечалось ранее, при переходе к 64-разрядной виртуальной памяти
z/OS механизм динамического преобразования адресов DAT модернизируется
путем расширения иерархической модели сегментации за счет образования
наряду с сегментами более крупных разделов виртуальной памяти. Эти
разделы получили название первый (RF), второй (RS) и третий (RT)
регионы (region first, region second, region third). Самый маленький по
размеру третий регион объединяет 2048 мегабайтных сегментов и, таким
образом, имеет объем 2 GB. Второй регион объединяет 2048 третьих
регионов и имеет объем 4 TB. И наконец, регионы первого типа объединяют
2048 вторых регионов и занимают объем 8 PB каждый. Всего в 64-разрядном
виртуальном адресном пространстве может быть создано 2048 первых
регионов.
Для управления виртуальной памятью в каждом из дополнительных регионов
z/OS формирует три типа таблиц: RTT, RST и RFT. Таблицы третьего
региона (RTT) содержат 2048 указателей на размещение "своих" таблиц
сегментов (SGT), таблицы второго региона (RST) - указатели на таблицы
третьего региона, таблица первого региона (одна на 64-разрядное
виртуальное адресное пространство) - указатели на таблицы второго
региона. Очевидно, что пятиступенчатый механизм преобразования адресов
требует значительных накладных расходов (памяти и времени). В связи с
этим разработчики предусмотрели гибкую схему создания и использования
таблиц регионов, реализуемую менеджером физической памяти RSM. Если
приложение не требует больше 2 GB памяти, то таблицы регионов не
используются вообще, и применяется "старая" 31-разрядная процедура DAT,
в которой используются только таблица сегментов и таблицы страниц.
Когда приложение запрашивает виртуальную память свыше 2 GB ("за
барьером") но не более 4 TB, создается таблица третьего региона (RTT) и
соответствующее количество таблиц сегментов. Теперь первой в процедуре
DAT будет обрабатываться RTT. Менеджер RSM будет создавать все новые
уровни таблиц регионов по мере увеличения объема виртуальной памяти,
запрашиваемой приложениями. Для управления доступом к памяти на основе
механизма DAT в z/OS используется специальная структура, получившая
название управляющий элемент адресного пространства ASCE (Address Space
Control Element), размещаемый в аппаратных регистрах. ASCE определяет,
в частности, какой уровень таблиц региона является старшим для данного
адресного пространства.
Начальная загрузка и инициализация z/OS
Начальная загрузка z/OS производится с помощью универсальной программы
начальной загрузки IPL (Initial Program Load), которая находит и
считывает в память модули ядра операционной системы и запускает программу инициализации ядра NIP (Nucleus Initialization Program)
, .
Нужно, чтобы к моменту загрузки были подготовлены и размещены на томах
прямого доступа необходимые наборы данных, содержащие системный код,
конфигурационные параметры, процедуры, а также страничные наборы данных
и наборы данных, предназначенные для хранения генерируемой системой
информации (статистика, журналы).
Базовый системный код (ядро z/OS) представлен в библиотечном наборе
данных SYS1.NUCLEUS, который всегда размещается на так называемом
системном резидентном томе ( SYSRES ), где должна находиться и программа
начальной загрузки IPL. SYS1.NUCLEUS может включать несколько различных
вариантов загрузки ядра, каждый из которых представлен в разделе IEANUC0n (n=1-9), а также программу инициализации ядра (NIP) и
указатель на главный каталог. Главный каталог (Master Catalog) должен
содержать информацию о размещении всех наборов данных, используемых в
процессе загрузки.
Дальнейшая загрузка осуществляется под управлением программы
инициализации ядра NIP, которая работает в режиме диалога с оператором
и использует информацию, представленную в библиотечном наборе данных SYS1.PARMLIB. Этот набор данных состоит из множества разделов, каждый
из которых содержит описание параметров конфигурации и настройки
операционной системы в виде позиционного текста. Например, в разделе IEASYS содержатся значения основных системных параметров z/OS, в
разделе BPXPRM - параметры настройки z/OS UNIX, в CONSOL -
характеристики консолей и т.п. Набор данных SYS1.PARMLIB можно назвать
системным реестром z/OS. Необходимые при загрузке параметры аппаратной
конфигурации системы и характеристики устройств ввода-вывода
извлекаются из VSAM набора данных IODF (Input/Output Definition File).
Этот набор данных используется для создания в COMMON области блоков
управления устройствами (UCB), а также таблицы назначения групповых
имен устройствам (Eligible Device Table, EDT).
Кроме указанных наборов данных, на этапе загрузки формируются или
используются следующие системные наборы данных:
страничные наборы данных для временного хранения данных, вытесненных
при страничном обмене и свопинге;
SYS1.PROCLIB - системная библиотека каталогизированных процедур
(содержит готовые программы на языке управления заданиями);
SYS1.LINKLIB - системная библиотека загрузочных модулей, а также
другие библиотеки, описанные в разделе LNKLST набора данных SYS1.PARMLIB (содержат нерезидентные системные программы: утилиты,
программы обслуживания, редактор связей и др.);
SYS1.LPALIB - библиотечный набор данных, содержащий дополнительные
модули z/OS, загружаемые в область LPA, включая системные процедуры,
SVC-программы, базовые системные программы методов доступа, некоторые
TSO-модули и др. Для загрузки в LPA возможно использование других
библиотек, описанных в разделе LPALST набора данных SYS1.PARMLIB ;
SYS1.MANx - VSAM набор данных, служащий для хранения статистической
информации, собираемой модулем SMF ( x=A-Z,0-9 );
SYS1.LOGREC - системный журнал ошибок и сбоев оборудования;
SYS1.DUMPxx - системный дамп (содержимое виртуальной памяти),
формируемый в случае ошибок при выполнении системных программ
( хх=00..99 ).
На заключительном этапе инициализации системы создается первое
виртуальное адресное пространство Master Scheduler ("главный
планировщик"), которое, в частности, служит для создания новых
системных адресных пространств с помощью специальной программы ACS
(Address Space Create). Системные адресные пространства создаются с
целью разместить системный код не в общей области, а в приватной. Можно
выделить четыре группы системных адресных пространств в зависимости от
способа их создания и использования (рис. 5.11):
SYSTEM - системные адресные пространства, создаваемые на этапе
инициализации автоматически с помощью главного планировщика;
START - адресные пространства, создаваемые по команде оператора
START, вводимой с системной консоли или формируемой автоматически для
запуска процедур JCL;
TSO - адресные пространства, создаваемые для каждого сеанса
пользователя TSO, открываемого по команде LOGON ;
Batch Job - адресные пространства, принадлежащие пакетным инициаторам
подсистемы управления заданиями JES и используемые для выполнения
пакетных заданий.
(рис 5.11) Адресные пространства z/OSСписок основных системных, а также запускаемых автоматически при
инициализации операционной системы адресных пространств представлен в
таблице 5.3.
Основные системные адресные пространства z/OS
| Наименование | Назначение |
| *MASTER* |
Главный планировщик Master Scheduler |
| ALLOCAS |
Создание адресных пространств и пространств данных |
| APPC, ASCH |
Поддержка сетевого протокола APPC |
| CATALOG (CAS) |
Функции каталога |
| BPXOINIT |
Инициализация системного сервиса UNIX |
| CONSOLE |
Поддержка консольных устройств |
| DFM, DFMCAS, GDEDFM |
Управление распределенными файлами (Distributed File Manager) |
| DLF |
Средства использования гиперпространств |
| DUMPSRV |
Средства формирования дампов |
| HSM, ABARS, ABARxxxx |
Менеджер иерархической памяти DFSMShsm, средства резервного копирования и восстановления |
| FTPSERVE |
FTP-сервер |
| GRS |
Средства глобальной синхронизации ресурсов |
| IOSAS |
Супервизор ввода-вывода, поддержка ESCON |
| IXGLOGR |
Системный регистратор |
| JES2, JES2AUX, JES2MON |
Подсистема управления заданиями JES2 |
| LLA |
Средства кэширования оглавлений библиотек в виртуальной памяти |
| NFS |
Сетевая файловая система NFS |
| OAM |
Сервер данных для ленточных библиотек IBM 3494 и IBM 3495 |
| OMVS |
Системный сервис UNIX |
| PCAUTH |
Поддержка межпространственной связи |
| RASP |
Менеджер реальной памяти RSM |
| RMM |
Менеджер управления сменными носителями DFSMSrmm |
| RRS |
Служба восстановления ресурсов |
| SMF |
Средства управления системой SMF (статистика и измерение производительности) |
| SMS |
Подсистема управления внешней памятью |
| SMXC, SYSBMAS |
Дополнительные средства управления PDSE наборами данных |
| TCPIP |
Средства поддержки TCP/IP |
| TRACE |
Трассировка системы |
| VLF |
Средства кэширования наборов данных в виртуальной памяти |
| XCFAS |
Средства Parallel Sysplex |
| VTAM |
Средства поддержки сети SNA/VTAM |
| WLM |
Менеджер управления рабочей нагрузкой |
Управление созданными адресными пространствами и выполняющимися в них
приложениями осуществляется на основе создаваемых z/OS управляющих
блоков (control blocks). Управляющие блоки представляют связанные между
собой структуры данных определенного формата, которые используются для
описания всех ресурсов и процессов z/OS и хранятся в виртуальной
памяти. Важнейшим из них является так называемая таблица векторов
связей CVT (Communications Vector Table), которая хранится в области
ядра и содержит указатели на основные управляющие блоки и системные
таблицы, используемые базовой управляющей программой BCP.
Местоположение CVT определяется по указателю, записанному в области
PSA. Одним из векторов в таблице CVT является указатель на таблицу
векторов адресных пространств ASVT (Address Space Vector Table),
которая хранится в подпуле 245 и содержит список указателей на
управляющие блоки ASCB всех доступных адресных пространств. Как уже
отмечалось ранее, блок управления адресным пространством ASCB содержит
информацию и указатели, необходимые для управления адресным
пространством.
После того как произведен начальный запуск операционной системы z/OS,
поддерживается три варианта перезагрузки:
холодная перезагрузка (cold start) - выполняется как начальная
загрузка с полной перестройкой содержимого областей виртуальной памяти;
быстрая перезагрузка (quick start) - не перестраивается содержимое
PLPA; временные наборы данных, размещенные в виртуальной памяти (так
называемые VIO), не сохраняются;
теплая перезагрузка (warm start) - содержимое PLPA не
перестраивается, наборы данных VIO сохраняются.
Управление задачами
Напомним, что задача (task) представляет собой минимальную единицу
работы, которой система предоставляет процессорные кванты. Задачи
порождаются по инициативе приложений (с помощью макровызова ATTACH) для
распараллеливания выполнения отдельных фрагментов кода программы. Любая
программа, как минимум, представляет собой одну задачу, но может быть
построена в виде совокупности параллельно выполняемых задач.
Для каждой задачи z/OS строит специальный управляющий блок - блок
управления задачей TCB (Task Control Block), который содержит основные
атрибуты задачи и размещается в адресном пространстве соответствующего
приложения (в области планировщика работ SWA/ESWA пользовательского
региона). В общем случае с каждым адресным пространством ассоциируется
несколько TCB, включая некоторые системные задачи, обслуживающие
выполнение пользовательских приложений. Все блоки TCB связаны между
собой в иерархическую цепочку с помощью специальных указателей.
Наряду с задачами в z/OS существует еще один тип работ - так называемые
" запросы на выполнение сервисных программ ". Эти запросы инициируются
системным кодом, исполняемым в некотором адресном пространстве, для
выполнения действий, затрагивающих другое адресное пространство.
Запросы выполняются в невытесняющем режиме и имеют ряд ограничений,
связанных с невозможностью применения системных вызовов
(SVC-прерываний) и использования памяти вне области SQA. Для каждого
такого запроса система строит управляющий блок, получивший название SRB
(System Request Block).
Таким образом, в любой момент времени в системе присутствует некоторое
количество работ в виде задач и запросов, которые готовы к выполнению и
нуждаются в предоставлении процессорного времени. Проблема
распределения процессорного времени решается с помощью специальной
системной программы, тесно связанной с процедурой обработки прерываний,
которая называется .
Диспетчер формирует очереди работ WUQ (Work Unit Queue) из числа вновь
созданных, а также готовых к выполнению, но ранее прерванных задач и
запросов (рис. 5.12). Очереди имеют двухуровневую организацию. На
первом уровне формируется цепочка ASCB - управляющих блоков адресных
пространств, страницы которых представлены в физической памяти (swap
in) и у которых имеется хотя бы одна задача или запрос, готовые к
выполнению (т.е. не ожидающие завершения какого-либо события). ASCB
упорядочены в соответствии с диспетчерскими приоритетами,
установленными для различных адресных пространств с помощью менеджера
управления рабочей нагрузкой WLM. Каждое адресное пространство
располагает собственной очередью готовых к выполнению задач и запросов
в виде цепочки управляющих блоков TCB и SRB, на которую имеется
указатель в ASCB (очередь второго уровня). SRB всегда имеют
преимущество перед TCB. Любое событие, изменяющее статус адресного
пространства и его работ, приводит к изменению очереди.
(рис 5.12) Диспетчеризация работДиспетчер получает управление каждый раз, когда освобождается один из
процессоров, то есть либо завершается выполнение очередной работы, либо
истекает квант отведенного для некоторой работы процессорного времени,
либо работа переходит в состояние ожидания (блокируется) до наступления
какого-либо события. При получении управления диспетчер выбирает из
очереди наиболее приоритетную работу и производит "переключение
процессора", предоставляя возможность начать или продолжить выполнение
этой работы.
Переключение поддерживается аппаратно, при этом в полной мере
используется механизм обработки прерываний, который включает следующие
шаги (п. 2.1.4):
загрузка адреса таблицы сегментов в управляющий регистр CR;
восстановление ранее сохраненных регистров процессора;
восстановление старого PSW и передача управления следующей работе.
Управление вводом-выводом
В основе системы организации ввода-вывода в z/OS лежит канальная
архитектура и связанные с ней аппаратные компоненты, описанные в главе
2. На уровне операционной системы представлены две группы средств,
обеспечивающих поддержку выполнения операций ввода-вывода: средства
описания и конфигурирования устройств и средства управления потоками
данных.
Для описания конфигурации подключенного оборудования и устройств
ввода-вывода, а также их динамической реконфигурации используются
упоминавшиеся ранее диалоговые компоненты HCD или HCM. Результатом их
применения является построение набора данных IODF (Input/Output
Definition File), в котором определены параметры устройств
ввода-вывода, используемые канальной подсистемой и z/OS. Канальная
подсистема получает необходимую для работы информацию с помощью
программы для описания оборудования IOCP (Input/Output Configuration
Program), которая на основе IODF формирует конфигурационный набор
данных параметров оборудования, подключенного к канальной подсистеме
IOCDS (Input/Output Configuration Data Set). z/OS использует содержимое
IODF на этапе начальной загрузки и инициализации (см. выше).
Управление потоками данных при вводе-выводе построено на основе гибкой
многоуровневой модели . На рис. 5.13 показана типичная схема
обработки запросов ввода-вывода на примере приложения, использующего
данные, хранящиеся на устройстве DASD.
(рис 5.13) Средства управления потоками данных при вводе-выводеПриложение MYPRG, представленное в адресном пространстве AS,
запускается с помощью пакетного задания, которое содержит описание
используемого набора данных с именем MYDATA (оператор DD ). Операции
ввода-вывода представлены в тексте приложения в виде макровызовов OPEN, GET, PUT, CLOSE. На языках высокого уровня данные макровызовы
генерируются компилятором при обращении к соответствующим функциям
ввода-вывода. Макровызов OPEN выполняется перед началом процесса
ввода-вывода для построения специальных управляющих блоков - блока
управления данными DCB (Data Control Block) и блока размещения данных
DEB (Data Extent Block). DCB содержит информацию о параметрах набора
данных (имя, тип, устройство и т.п.), представленную в специальном
одноименном макровызове DCB. Эти параметры могут быть дополнены и
откорректированы в операторе языка управления заданиями DD, связанном с
соответствующим DCB. DEB содержит информацию о размещении набора
данных, включая адрес устройства и характеристики выделенного набору
данных пространства внешней памяти.
Указанные управляющие блоки используются при выполнении операций
ввода-вывода, которые осуществляются с помощью макровызовов чтения
(ввода) GET и записи (вывода) PUT. Исполнение макросов GET/PUT
начинается с передачи управления программе метода доступа, указатель на
которую хранится в DCB. Метод доступа (access method) представляет
собой своеобразный интерфейс между приложением и его данными, благодаря
которому приложение работает на логическом уровне представления данных,
вне зависимости от их физической организации. Программа метода доступа
размещается в области LPA адресного пространства и берет на себя
выполнение множества важных функций, таких как:
создание буферов ввода-вывода в адресном пространстве приложения;
синхронизация операций ввода-вывода;
построение канальной программы;
оптимизация характеристик производительности контроллера (например,
за счет организации кэширования данных);
сжатие и распаковка данных;
восстановление программ при возникновении ошибок;
обмен данными с приложением.
В z/OS поддерживается несколько методов доступа, предназначенных для
обслуживания наборов данных и устройств определенного типа. Чаще всего
используются следующие методы доступа:
QSAM, BSAM - для обработки последовательных наборов данных и
разделов библиотек;
BPAM - для обработки библиотечных наборов данных (PDS и PDSE);
VSAM - для обработки наборов данных VSAM;
OAM - для обработки не разделенных на логические записи потоков
данных (объектов), хранящихся в СУБД DB2 и на оптических носителях;
VTAM - для организации сетевого ввода-вывода.
Каждый из представленных методов доступа реализует собственный алгоритм
записи/чтения данных и располагает специфическим набором макрокоманд и
утилит для организации ввода-вывода.
Наряду с выполнением представленных выше функций программа метода
доступа создает управляющие блоки IOB и ECB. Управляющий блок
ввода-вывода IOB (Input/Output Block) содержит указатели на все
связанные с данной операцией ввода-вывода управляющие блоки и, самое
важное, - на канальную программу. Канальная программа (channel program)
создается программой метода доступа и состоит из последовательности
канальных команд CCW, описывающих всю процедуру ввода-вывода, включая
адреса области памяти, куда (откуда) пересылаются данные, а также объем
передаваемых данных (см. п. 2.2).
Далее через вызов соответствующего SVC прерывания управление передается драйверу, который реализует интерфейс между методом доступа и
супервизором ввода-вывода IOS. Блок управления событиями ECB (Event
Control Block) служит для синхронизации работы метода доступа и
драйвера. Когда в следующий раз метод доступа получит управление от
диспетчера, он с помощью макровызова WAIT будет ждать сигнала от
драйвера о завершении операции ввода-вывода.
Для большинства методов доступа, не использующих наборы данных VSAM,
применяется так называемый драйвер EXCP (EXecute Channel Program),
вызываемый одноименной макрокомандой. Драйвер резервирует в основной
памяти страницы, которые будут использоваться для перемещения данных и
размещения канальной программы и объявляет их фиксированными
(неперемещаемыми) на время выполнения операций, корректируя
соответствующим образом адреса канальной программы.
Затем управление передается супервизору ввода-вывода IOS (Input Output
Supervisor), который обеспечивает взаимодействие z/OS c канальной
подсистемой, выполняя следующие функции:
проверка доступности устройства и определение оптимального канального
пути;
формирование очереди ожидания, если есть запросы от других
приложений;
запуск канальной программы с помощью машинной команды SSCH.
Канальная подсистема выполняет канальную программу, обеспечивая
физический перенос данных между основной памятью и устройством с
помощью аппаратного контроллера (CU) и канальных путей. Завершая
операцию, канальная подсистема формирует прерывание ввода-вывода,
предварительно записав код завершения операции в специальный
управляющий блок IRB (Interrupt Response Block). Обработчик прерывания
через SRB-запрос запускает программу оповещения супервизора
ввода-вывода IOS, которая передает управление драйверу. Драйвер
сигнализирует методу доступа о завершении операции ввода-вывода,
который, в свою очередь, получив управление от диспетчера, возвращает
управление пользовательскому приложению. После этого приложение,
наконец, может продолжить свою работу. При наличии ошибок могут
срабатывать программы восстановления, представленные в составе
супервизора.
Следует отметить, что данный пример демонстрирует общие принципы
обработки запросов на ввод-вывод средствами операционной системы z/OS,
хотя в отдельных случаях могут быть некоторые отличия от представленной
схемы.
Управление рабочей нагрузкой
Одна из важнейших функций базовой управляющей программы z/OS связана с
решением задачи эффективного динамического перераспределения системных
ресурсов (процессорного времени, основной памяти, каналов и устройств)
между всеми видами выполняемых в системе работ с учетом их важности. В
состав выполняемых работ включаются пакетные задания, запускаемые
процедуры STC и программы поддержки интерактивных пользовательских
сеансов TSO, приложения и команды, запускаемые в рамках сеансов
TSO/ISPF, команды и утилиты UNIX shell, транзакции CICS, DB2 и др.
Иногда такую задачу называют "балансировкой рабочей нагрузки",
поскольку в условиях постоянно меняющегося объема выполняемых в системе
работ, с одной стороны, требуется поддерживать приемлемый или заданный
уровень пропускной способности (или времени реакции), а с другой -
обеспечить максимальную загрузку имеющихся ресурсов, не допуская при
этом ситуаций, когда какого-либо ресурса недостает. Решение этой задачи
возложено на менеджера управления рабочей нагрузкой WLM (WorkLoad
Manager), который впервые был представлен в MVS SP V5. Возможности WLM
распространяются на множество работ, выполняемых в том числе и в
кластере Parallel Sysplex.
WLM реализует эффективную модель управления нагрузкой, получившую
название " целевой режим " (goal mode) и основанную на выборе и описании
ожидаемых целей функционирования для каждой из выполняемых работ .
Отметим, что одновременно вплоть до z/OS V1R2 поддерживался и так
называемый " режим совместимости " (compatibility mode) - ныне не
применяемая модель управления, ориентированная на низкоуровневые
средства настройки и контроля использования ресурсов с помощью менеджера системных ресурсов SRM (System Resource Manager).
Рассмотрим основные принципы управления рабочей нагрузкой в целевом
режиме WLM. Все выполняемые в системе работы делятся на
непересекающиеся группы, называемые классами обслуживания (service
class). Принадлежность конкретной работы к тому или иному классу
определяется по ее атрибутам, таким как тип работы (пакетное задание,
транзакция и т.п.), идентификатор пользователя, учетная информация,
используемая подсистема (среда) выполнения и др. Атрибуты каждого
класса обслуживания назначаются системным администратором при настройке
системы или устанавливаются по умолчанию. Таким образом, в каждом
классе объединяются работы с идентичными характеристиками с точки
зрения используемых ресурсов и требуемой производительности.
С каждым классом обслуживания ассоциируется определенная цель
выполнения (goal) и показатель важности (importance). С помощью WLM
могут быть определены три типа целей выполнения, условно обозначаемых
как время отклика, избирательность и скорость выполнения.
Цель типа " время отклика " (response time) означает установку желаемой
длительности выполнения работы, которая измеряется от момента запуска
(ввода) запроса до получения результата. Эта цель обычно выбирается для
коротких транзакций, поступающих от интерактивных пользователей, и
может быть задана двумя способами. Первый способ заключается в
установке среднего времени отклика: например, 0,5 с для всех работ
данного класса обслуживания. Второй способ позволяет дополнительно
указать долю работ, для которых необходимо обеспечить требуемое время
реакции: например, 80% работ данного класса обслуживания должны быть
выполнены не более чем за 0,5 с.
Цель " избирательность " (discretionary) устанавливается для работ, у
которых нет жестких ограничений по длительности выполнения. В этом
случае система может предоставлять таким работам ресурсы по принципу
"разумной достаточности" - только в периоды невысокой общей нагрузки и
когда другие работы достигли своих целей. Данная цель может быть
назначена, например, для низкоприоритетных пакетных заданий, которым
система лишь гарантирует завершение (рано или поздно).
Цель " скорость выполнения " (velocity) назначается для работ, для
которых первые две цели неприемлемы. К этой категории относятся,
например, длительные или "бесконечные" по времени выполнения работы,
которые тем не менее нельзя отнести к низкоприоритетным. Скорость
выполнения задается целым числом в диапазоне 1-99. Чем выше уровень
установленной скорости, тем больше вероятность получить необходимые
ресурсы без предварительного ожидания.
Показатель важности класса обслуживания характеризует, насколько важно
для работ данного класса достичь установленной цели. Данный показатель,
принимающий целочисленные значения в диапазоне от 1 до 5, применяют в
тех случаях, когда в системе возникает дефицит ресурсов и требуется
"пожертвовать" какими-то работами (то есть заставить их ждать). При
разрешении коллизий работы класса обслуживания с показателем важности 1
будут иметь преимущество перед работами всех остальных классов. Для
классов, имеющих цель "избирательность", показатель важности не
назначается.
Выполнение работ каждого класса обслуживания представляется в виде
последовательности периодов (period), для каждого из которых могут быть
заданы различные цели и показатели важности. Продолжительность периода
определяется по условному количеству выделенных для периода ресурсов,
измеряемому в так называемых единицах обслуживания (service units). Эта
величина зависит от количества использованных процессорных квантов для
выполняемых задач (TCB и SRB), числа запросов на доступ к памяти и
ввод-вывод, а также типов используемых устройств и оборудования.
Каждые четыре секунды WLM производит сбор данных о производительности
для каждого класса обслуживания. На основе полученных данных
осуществляется корректировка текущего распределения ресурсов, с тем
чтобы приблизить более приоритетные работы к установленной цели. Если
несколько работ конкурируют за получение одного и того же ресурса, то
WLM производит выбор путем их "взвешивания" на основе заданных целей и
показателей важности. Менеджер управления рабочей нагрузкой принимает
участие в реализации всех важнейших системных механизмов, включая:
управление созданием новых адресных пространств;
управление страничным обменом (предотвращение нехватки памяти,
откачка страниц);
организацию свопинга (временное высвобождение ресурсов от
низкоприоритетных работ);
блокировку приема пакетных, STC и TSU заданий при повышенной нагрузке
(нехватка свободных страниц в страничных наборах или в центральной
памяти, пробуксовка страниц и т.п.)
управление диспетчерскими приоритетами задач;
управление пакетными инициаторами, обеспечивающими выполнение
пакетных заданий;
управление приоритетами при вводе-выводе;
управление распределением наборов данных по устройствам.
Еще одно важное понятие, используемое WLM, - стратегия обслуживания
(service policy), которая позволяет динамически изменять параметры
(цели, периоды, показатели важности) для установленных классов
обслуживания в течение рабочего дня или в зависимости от дня недели и
иных критериев.
Настройка параметров WLM осуществляется системным программистом на
основе специальной диалоговой программы, доступной в TSO/ISPF.
Ранее отмечалось, что в z/OS появился новый компонент для динамического
управления ресурсами в режиме LPAR с учетом рабочей нагрузки - интеллектуальный менеджер ресурсов IRD (Intelligent Resource Director)
. IRD расширяет концепцию целевого режима управления рабочей
нагрузкой, реализуемую WLM, путем предоставления ресурсов логических
разделов LPAR, размещенных как на одном физическом сервере, так и в
рамках сисплекса (так называемый кластер LPAR). Новые возможности IRD
затрагивают решение следующих основных задач применительно к целевому
режиму управления:
динамическое изменение доли процессорного времени (processor weight),
выделяемого логическому разделу (LPAR CPU management);
динамическое переопределение канальных путей между LPAR для повышения
эффективности ввода-вывода с учетом целевых критериев выполняемых работ
(dynamic channel path management, DCM);
организация доступных всем LPAR дополнительных очередей на ввод-вывод
с учетом целевых критериев выполняемых работ (channel subsystem
priority queuing, CSSPQ).
При управлении ресурсами системы существенную роль играют еще два
компонента z/OS: SMF и RMF.
Компонент SMF (System Management Facility) входит в состав базовой
управляющей программы и предназначен для сбора и регистрации
информации, касающейся функционирования z/OS и приложений. SMF работает
в собственном адресном пространстве. Собранная информация накапливается
в виде так называемых SMF-записей в специальных VSAM - наборах данных с
именами SYS1.MANx ( х - целое число). Различают два типа записей: с
системной и пользовательской информацией. SMF-записи с системной
информацией включают, например, сведения о конфигурации системы,
активности страничного обмена, рабочей нагрузке и интенсивности
использования различных ресурсов. SMF-записи с пользовательской
информацией содержат данные об использовании процессоров и устройств (в
первую очередь DASD) для каждого шага задания и задания в целом, а
также для пользовательских сеансов TSO. Собранная SMF информация
используется различными компонентами z/OS, включая WLM, а также
доступна пользователю непосредственно или с помощью рассматриваемого
ниже компонента RMF. Настройка SMF осуществляется с помощью раздела SMFPRM реестра SYS1.PARMLIB.
Менеджер сбора данных о ресурсах RMF (Resource Measurement Facility)
принадлежит к числу опциональных компонентов z/OS и содержит средства
для сбора данных и формирования отчетов об использовании ресурсов и
производительности системы. Отчеты, формируемые RMF, могут
использоваться для анализа текущего состояния системы, выявления узких
мест, а также выбора наиболее эффективной стратегии управления
ресурсами и нагрузкой и планирования развития аппаратного обеспечения
системы.
В состав RMF входят три программных монитора.
Монитор III - предназначен для сбора и анализа информации на коротком
отрезке времени (сбор первичных данных с периодом 1 с, консолидация
собранных данных с сохранением результатов - каждые 100 с). Позволяет
получить сведения о значениях времени отклика и скорости выполнения
работ, информацию о задержках, сказавшихся на производительности.
Монитор II - предназначен для сбора и анализа информации об
использовании конкретного ресурса (например, процессоров, дискового
тома, основной памяти) либо об активности и потребляемых ресурсах
применительно к указанному адресному пространству или заданию в текущий
момент времени. Может осуществляться непрерывный контроль состояния
адресного пространства или задания.
Монитор I - предназначен для сбора и анализа информации о рабочей
нагрузке и использовании ресурсов на длительном (указанном) отрезке
времени (по умолчанию период сбора - 1 с, период консолидации - 30
мин). Значения временных периодов могут быть заданы пользователем. В
остальном - то же, что и монитор III.
Для хранения собранной информации все три типа мониторов могут
задействовать наборы данных SMF, а монитор III, кроме того, использует
собственный набор данных VSAM. Использование RMF осуществляется через
диалоговый интерфейс, доступный в TSO/ISPF, однако существует
возможность запуска мониторов RMF в пакетном режиме с выводом отчетов в
указанный набор данных. При этом можно получать сообщения о возникающих
проблемах.
В данной главе будут рассмотрены фундаментальные функции z/OS,
реализуемые с помощью базовой управляющей программы (BCP) и входящих в
ее состав модулей.
Управление памятью
Управление основной памятью в z/OS базируется на концепции виртуальной
памяти, основные принципы которой были изложены при рассмотрении
эволюции системы в п. 5.1.1. Важно подчеркнуть, что в z/OS фактически
сохранена архитектура, реализованная в MVS/ESA и развитая в дальнейшем
в OS/390. Конечно, расширение разрядности адреса (и, следовательно,
объема адресного пространства) не могло не привести к целому ряду
нововведений, о которых далее и пойдет речь. Но начнем, однако, с общих
понятий и терминов, принятых в MVS, OS/390 и z/OS и необходимых для
понимания механизмов управления памятью , .
В соответствии с концепцией MVS, каждая прикладная программа, а также
некоторые системные функции получают в свое распоряжение отдельное виртуальное адресное пространство (virtual address space), размер
которого для OS/390 составлял 231 байт, а для z/OS увеличился до 264
байт. Виртуальная память (virtual storage) является воображаемым
объектом и фактически представлена в системе как совокупность
специальных структур (таблиц), описывающих размещение данных и кода
программы в выделенном для нее адресном пространстве. В реальности же
выполнение приложений может осуществляться только тогда, когда данные и
код загружены в основную память. На рис. 5.8 представлен обобщенный
механизм реализации технологии виртуальной памяти.
(рис 5.8) Элементы системы управления памятьюНекоторое приложение (MYPROG) "размещается" операционной системой в
выделенном для него виртуальном адресном пространстве, занимая
некоторое количество блоков памяти фиксированной длины, называемых страницами (page). Размер каждой страницы равен 4 KB. Приложение
использует виртуальные страничные адреса, и ему доступна любая область
собственного адресного пространства.
Чтобы начать выполнение приложения, система загружает его виртуальные
страницы в основную память (Central storage), отмечая их местоположение
в специальной таблице страниц (page table). Основная память также
представлена в виде набора блоков размером 4 KB, называемых фреймами
(frame). При загрузке значения виртуальных адресов сохраняются в
неизменном виде. Понятно, что при обращении к памяти требуются реальные
физические адреса. Для преобразования виртуальных адресов в физические
используется специальный аппаратный механизм динамического
преобразования адресов DAT (Dynamic Address Translation), который
учитывает реальное размещение виртуальных страниц в основной памяти в
момент выполнения адресных команд. Механизм DAT подробно описан в п.
2.1.3. Напомним, что для повышения эффективности управления в системе
поддерживается иерархическая модель сегментации виртуальной памяти, в
соответствии с которой страницы объединяются в сегменты размером 1 MB
(256 страниц на сегмент), а те в свою очередь - в более крупные разделы
виртуальной памяти, называемые регионами.
При нехватке основной памяти некоторые страницы могут быть временно
перемещены в специальные страничные наборы данных (page data set) во
внешнюю вспомогательную память (Auxiliary storage) на магнитных дисках.
Блок памяти в страничных наборах получил название слот (slot) и также
имеет размер 4 KB. Вытесненные во вспомогательную память страницы
находятся там до тех пор, пока не возникнет необходимость в их
использовании при выполнении приложения. В этом случае генерируется
программное прерывание по отсутствию страницы (page fault) и, при
наличии свободных фреймов, запускается процедура "подкачки" страницы из
вспомогательной памяти. При занятии страницей свободного фрейма в
таблицу страниц вносится его указатель и затем формируется физический
адрес.
Конечно, возможна ситуация, когда в основной памяти для загрузки
отсутствующей страницы не осталось ни одного свободного фрейма. В этом
случае запускается процедура изъятия страниц (page stealing), в
результате которой одна или несколько виртуальных страниц
"откачиваются" из основной памяти во вспомогательную, чтобы освободить
место. Выбор изымаемых страниц основан на классическом методе LRU,
использующем формируемые аппаратно биты ключа защиты памяти: бит
обращения R и бит изменения С (см. п. 2.1.3).
Перемещение страниц приложения из основной памяти во вспомогательную и
обратно называют страничным обменом (paging), который может происходить
многократно в течение всего времени выполнения. При этом следует
обратить внимание, что для работы программ вовсе не требуется
одновременное присутствие в основной памяти всех ее страниц, равно как
и размещение этих страниц в соседних фреймах. Некоторые страницы,
содержащие важную системную информацию, могут не участвовать в
страничном обмене. Они имеют статус неперемещаемых (fixed) и постоянно
находятся в основной памяти. Остальные же страницы считаются перемещаемыми (pagable).
Наряду со страничным обменом в z/OS поддерживается еще одна процедура,
управляющая перемещением страниц, - свопинг (swapping). В некоторые
критические моменты работы системы (например, при нехватке ресурсов или
когда приложение долгое время не проявляет активности) операционная
система по инициативе менеджера управления рабочей нагрузкой WLM может
принять решение о выгрузке (swap out) всех страниц адресного
пространства приложения из основной памяти во вспомогательную. Для этой
цели могут создаваться специальные наборы данных свопинга (swap data
set). Вытесненным таким образом приложениям не предоставляется
процессорное время до тех пор, пока не будет выполнена операция swap
in, возвращающая страницы приложения в основную память.
Необходимо отметить, что в операционных системах MVS/ESA и OS/390 для
повышения эффективности страничного обмена применялась так называемая расширенная память (Expanded storage), которая, являясь фактическим
продолжением основной памяти, использовалась для хранения вытесненных
оттуда страниц. Это позволило существенно уменьшить время страничного
обмена по сравнению с использованием для той же цели дисковой памяти.
Благодаря применяемой для расширенной памяти блочной (а не побайтной)
адресации (размер блока - 4 KB), объем расширенной памяти мог достигать
8 GB, в то время как основная память была ограничена размером 2 GB. В
z/OS необходимость в поддержке расширенной памяти отпала, поскольку
появилась возможность просто увеличить объем основной памяти (в z900 до
64 GB)!
Таким образом, можно увидеть, что в z/OS виртуальные страницы
приложения в процессе выполнения могут быть физически размещены
частично в основной, а частично во вспомогательной памяти. Для учета
текущего местонахождения и хранения атрибутов виртуальных страниц
операционная система создает специальные таблицы, называемые таблицами
страниц, сегментов и регионов. В любой момент при необходимости
некоторые виртуальные страницы могут сменить "место жительства" на
основе страничного обмена или свопинга.
Для управления памятью в базовой управляющей программе z/OS
представлены три менеджера памяти (VSM, RSM, ASM), каждый из которых
отвечает за свой участок работы (рис. 5.8).
Менеджер виртуальной памяти VSM (Virtual Storage Manager) осуществляет
постраничное размещение данных и кода приложений в виртуальном адресном
пространстве по запросу, определяет структуру адресных пространств,
предоставляет необходимую информацию об использовании виртуальной
памяти менеджеру управления нагрузкой WLM. Для этих целей VSM, как и
другие менеджеры памяти, предоставляет программисту набор специальных
макросредств. Для каждого виртуального адресного пространства VSM
строит управляющий блок, получивший название блок управления адресным
пространством ASCB (Address Space Control Block). Этот блок содержит
информацию и указатели, используемые при управлении адресным
пространством. Для идентификации каждое создаваемое адресное
пространство получает уникальный номер (идентификатор) ASID (Address
Space IDentificator).
Менеджер физической памяти RSM (Real Storage Manager) производит
размещение виртуальных страниц в основной памяти, создает и
корректирует таблицы страниц, сегментов и регионов, управляет
страничным обменом и свопингом. В OS/390 RSM также брал на себя функции
управления расширенной памятью.
Менеджер вспомогательной памяти ASM (Auxiliary Storage Manager)
предназначен для создания и управления наборами данных страничного
обмена и свопинга на DASD, а также для перемещения виртуальных страниц
между основной и вспомогательной памятью по указанию RSM.
Следующим важным вопросом является структура виртуального адресного
пространства. Ранее отмечалось, что адресное пространство MVS включает общую область (common area), в которой размещаются доступные всем
приложениям системные программы и данные, и защищенную приватную
область (private area), используемую для размещения кода и данных
приложения, а также ассоциированных с приложением системных структур.
Начиная с MVS/XA, когда состоялся переход на 31-разрядную архитектуру,
включая OS/390, структура виртуальной памяти приложения выглядит так,
как представлено на . Эта структура полностью
соответствует структуре младших 2 GB виртуальной памяти z/OS, поэтому
рассмотрим ее подробнее.
Для поддержки 24-разрядных приложений структура виртуального адресного
пространства в младших 16 MB соответствует требованиям архитектуры
MVS/370. Свыше границы 16 MB размещаются расширенная общая область
(Extended Common), как продолжение общей области MVS/370, и расширенная
приватная область (Extended Private), которая может использоваться
31-разрядными приложениями. Следует отметить, что содержимое общей
области, включая расширенную ее часть, для всех адресных пространств
совпадает. Фактически это достигается путем создания в системе единого
набора виртуальных страниц с определенными виртуальными адресами,
разделяемого всеми адресными пространствами. Содержимое же приватной
области для каждого адресного пространства уникально.
Общая область представлена совокупностью областей, каждая из которых
предназначена для определенных целей:
область ядра - Nucleus;
область системных очередей - SQA (System Queue Area);
область загрузки модулей - LPA (Link Pack Area);
область общих сервисов - CSA (Common Service Area);
область префиксации - PSA (Prefix Save Area).
В расширенной общей области выделяется дополнительная виртуальная
память для перечисленных областей с расположением относительно границы
16 MB в зеркальном порядке.
Область ядра Nucleus/Extended Nucleus содержит базовый системный код и
дополнительные элементы ядра z/OS, формируемые в процессе начальной
загрузки системы (IPL) на основе набора данных SYS1.NUCLEUS. Состав
ядра определяется системным программистом путем настройки раздела NUCLST системного реестра SYS1.PARMLIB. Виртульные страницы области
ядра являются неперемещаемыми, то есть всегда загружены в основную
память и в страничном обмене не участвуют.
Область системных очередей SQA/ESQA служит для размещения общесистемных
таблиц, блоков управления и очередей, состав и содержание которых
определяется конфигурацией системы и общим количеством создаваемых в
процессе работы адресных пространств. Настройка размера области SQA
(ESQA) осуществляется с помощью параметра SQA в разделе IEASYS реестра SYS1.PARMLIB или с консоли оператора. При нехватке памяти для SQA
система пытается "занять" необходимое пространство в области CSA.
Страницы SQA (ESQA) также являются неперемещаемыми и всегда остаются в
основной памяти.
Область загрузки модулей LPA/ELPA предназначена для размещения
дополнительных реентерабельных загрузочных модулей ядра, включая
SVC-программы и методы доступа, а также некоторые пользовательские
приложения. Все указанные программы могут одновременно вызываться
множеством задач, работающих в различных адресных пространствах.
Модули, загружаемые в LPA/ELPA, должны быть предварительно записаны в
библиотечный набор данных SYS1.LPALIB или другие наборы данных,
определяемые в разделе LPALST реестра SYS1.PARMLIB. Таким образом,
размер области LPA/ELPA зависит от количества размещаемых модулей.
Учитывая особую роль модулей LPA, система требует их авторизации на
основе технологии APF (Authorized Program Facility). Авторизованные
модули получают право обращаться к защищенным областям системной и
приватной памяти.
Область LPA/ELPA в свою очередь делится на три подобласти:
Pageable LPA (PLPA/EPLPA) - содержит перемещаемые модули;
Fixed LPA (FLPA/EFLPA) - содержит неперемещаемые модули;
Modified LPA (MLPA/EMLPA) - может использоваться на этапе начальной
загрузки системы для временного хранения модифицируемых или обновляемых
модулей PLPA.
Область общих сервисов CSA/ECSA служит для размещения общих данных,
используемых несколькими активными адресными пространствами, и в том
числе для организации обмена (межпространственной связи) между
адресными пространствами. Размер области CSA/ECSA устанавливается с
помощью параметра CSA в разделе IEASYS реестра SYS1.PARMLIB или с
консоли оператора. По умолчанию страницы CSA являются перемещаемыми.
Область префиксации PSA служит для хранения содержимого регистра PSW
(старого и нового) при реализации механизма обработки прерываний, а
также содержит указатели на важные системные управляющие блоки и
таблицы. Данная область поддерживается аппаратно, всегда привязана к
началу виртуального адресного пространства и имеет размер 4 KB в
системах с архитектурой S/370, 370/XA, ESA/390 и 8 KB в системах с
z/Architecture.
Для знакомства со структурой приватной области сначала рассмотрим, как
она выглядит в OS/390, то есть в режиме 31-разрядной адресации (рис.
5.9). Мы уже отмечали, что часть виртуальной памяти в пределах первых 2
GB сохранила свою структуру в z/OS. В приватной области выделяются
следующие элементы:
регион пользователя - User Region и Extended User Region;
область локальных системных очередей - LSQA (Local System Queue Area)
и ELSQA (Extended Local System Queue Area);
область планировщика работ - SWA (Scheduler Work Area) и ESWA
(Extended Scheduler Work Area);
подпулы (Subpools) 229, 230 и 249;
системный регион - System Region.
(рис 5.9) Структура 31-разрядного виртуального адресного пространстваРегион пользователя предназначен для размещения пользовательских
приложений и данных. После загрузки программ в регион пользователя
система исключает из использования оставшиеся незанятыми страницы до
поступления запроса на выделение дополнительных страниц в данном
регионе. У пользователя есть возможность управлять размером региона с
помощью одноименного параметра REGION операторов языка управления
заданиями JOB и EXEC (см. п. 5.1.5).
Область локальных системных очередей LSQA/ELSQA содержит таблицы и
очереди, ассоциируемые с текущим адресным пространством и выполняемыми
в нем приложениями. В частности, здесь хранятся таблицы страниц,
сегментов и регионов, формируемые менеджером физической памяти RSM.
Отметим, что указанные таблицы участвуют в страничном обмене наряду с
прочими перемещаемыми страницами.
Область планировщика работ SWA/ESWA служит для размещения блоков
управления задачами (TCB) и других блоков управления, создаваемых для
обслуживания приложений адресного пространства. Назначение блоков
управления будет рассмотрено позднее.
Подпулы (Subpools) 229, 230 и 249 предоставляют локальную память,
доступ к которой реализуется на основе запрашиваемых ключей защиты. Эта
область служит для размещения управляющих блоков, которые могут
использовать только авторизованные программы, имеющие соответствующее
значение ключа. Эти управляющие блоки создаются системными компонентами
для нужд пользовательских приложений.
LSQA, SWA и подпулы фактически разделяют одну область виртуальной
памяти, которая примыкает к границе области CSA, а ELSQA, ESWA - к
границе 2 GB. Эти области могут увеличиваться за счет незанятых страниц
региона пользователя. Следует отметить, что подпулы могут выделяться и
в других областях виртуальной памяти. Они служат для группирования
логически связанных между собой блоков виртуальной памяти, например по
значению ключа защиты, по возможности откачки или свопинга и т.п.
Системный регион System Region резервирует 16 KB виртуальной памяти для
хранения служебной информации при выполнении некоторых системных
функций.
Рассмотрим далее, какова структура 64-разрядного виртуального адресного
пространства, впервые реализованного в z/OS, начиная с версии V1R2. В
64-разрядных пространствах исполняемый программный код по-прежнему
может размещаться только в границах младших 2 GB, однако данные, к
которым эти программы обращаются, могут быть загружены в виртуальную
память свыше 2 GB. В настоящий момент при запуске приложения
первоначально создается адресное пространство размером 2 GB, однако по
запросу программы оно может быть увеличено (для этого предусмотрена
специальная макрокоманда IARV64).
(рис 5.10) Структура 64-разрядного виртуального адресного пространстваНа рис. 5.10 представлена структура 64-разрядного виртуального
адресного пространства, которая включает следующие области:
от 0 до 2 GB - сохраняет ранее рассмотренную структуру (см.
рис. 5.9) и служит для размещения программного кода и данных для всех
типов приложений;
от 2 GB до 4 GB - не используемая по архитектурным соображениям
область, получившая название BarТермин Bar можно перевести как <пробел>, <планка>, <барьер> - кому что нравится. Появились также термины <above the bar> и <below the bar> для обозначения областей виртуальной памяти, лежащих соответственно выше Bar-области (для доступа требуется 64-разрядный адрес) и ниже (достаточно 31-разрядного адреса). ;
от 4 GB до 2 TB - нижний регион пользователя (low user region).
Используется первым для предоставления памяти свыше границы 2 GB под
данные;
от 2 TB до 512 TB - разделяемая область (shared area) для совместного
использования различными адресными пространствами. В настоящее время не
поддерживается;
от 512 TB до 16 EB - верхний регион пользователя (high user region).
Используется при нехватке памяти в нижнем регионе.
При освоении новых объемов памяти полезно напомнить используемые
единицы измерения: 1 терабайт (TB) равен 240 байт или 1024 GB, 1
петабайт (PB) равен 250 байт или 1024 TB, 1 экзабайт (EB) равен 260
байт или 1024 PB.
Для управления объемом выделяемой виртуальной памяти свыше 2 GB в
рамках языка управления заданиями для операторов JOB и EXEC реализован
новый параметр MEMLIMIT.
Как отмечалось ранее, при переходе к 64-разрядной виртуальной памяти
z/OS механизм динамического преобразования адресов DAT модернизируется
путем расширения иерархической модели сегментации за счет образования
наряду с сегментами более крупных разделов виртуальной памяти. Эти
разделы получили название первый (RF), второй (RS) и третий (RT)
регионы (region first, region second, region third). Самый маленький по
размеру третий регион объединяет 2048 мегабайтных сегментов и, таким
образом, имеет объем 2 GB. Второй регион объединяет 2048 третьих
регионов и имеет объем 4 TB. И наконец, регионы первого типа объединяют
2048 вторых регионов и занимают объем 8 PB каждый. Всего в 64-разрядном
виртуальном адресном пространстве может быть создано 2048 первых
регионов.
Для управления виртуальной памятью в каждом из дополнительных регионов
z/OS формирует три типа таблиц: RTT, RST и RFT. Таблицы третьего
региона (RTT) содержат 2048 указателей на размещение "своих" таблиц
сегментов (SGT), таблицы второго региона (RST) - указатели на таблицы
третьего региона, таблица первого региона (одна на 64-разрядное
виртуальное адресное пространство) - указатели на таблицы второго
региона. Очевидно, что пятиступенчатый механизм преобразования адресов
требует значительных накладных расходов (памяти и времени). В связи с
этим разработчики предусмотрели гибкую схему создания и использования
таблиц регионов, реализуемую менеджером физической памяти RSM. Если
приложение не требует больше 2 GB памяти, то таблицы регионов не
используются вообще, и применяется "старая" 31-разрядная процедура DAT,
в которой используются только таблица сегментов и таблицы страниц.
Когда приложение запрашивает виртуальную память свыше 2 GB ("за
барьером") но не более 4 TB, создается таблица третьего региона (RTT) и
соответствующее количество таблиц сегментов. Теперь первой в процедуре
DAT будет обрабатываться RTT. Менеджер RSM будет создавать все новые
уровни таблиц регионов по мере увеличения объема виртуальной памяти,
запрашиваемой приложениями. Для управления доступом к памяти на основе
механизма DAT в z/OS используется специальная структура, получившая
название управляющий элемент адресного пространства ASCE (Address Space
Control Element), размещаемый в аппаратных регистрах. ASCE определяет,
в частности, какой уровень таблиц региона является старшим для данного
адресного пространства.
Начальная загрузка и инициализация z/OS
Начальная загрузка z/OS производится с помощью универсальной программы
начальной загрузки IPL (Initial Program Load), которая находит и
считывает в память модули ядра операционной системы и запускает программу инициализации ядра NIP (Nucleus Initialization Program)
, .
Нужно, чтобы к моменту загрузки были подготовлены и размещены на томах
прямого доступа необходимые наборы данных, содержащие системный код,
конфигурационные параметры, процедуры, а также страничные наборы данных
и наборы данных, предназначенные для хранения генерируемой системой
информации (статистика, журналы).
Базовый системный код (ядро z/OS) представлен в библиотечном наборе
данных SYS1.NUCLEUS, который всегда размещается на так называемом
системном резидентном томе ( SYSRES ), где должна находиться и программа
начальной загрузки IPL. SYS1.NUCLEUS может включать несколько различных
вариантов загрузки ядра, каждый из которых представлен в разделе IEANUC0n (n=1-9), а также программу инициализации ядра (NIP) и
указатель на главный каталог. Главный каталог (Master Catalog) должен
содержать информацию о размещении всех наборов данных, используемых в
процессе загрузки.
Дальнейшая загрузка осуществляется под управлением программы
инициализации ядра NIP, которая работает в режиме диалога с оператором
и использует информацию, представленную в библиотечном наборе данных SYS1.PARMLIB. Этот набор данных состоит из множества разделов, каждый
из которых содержит описание параметров конфигурации и настройки
операционной системы в виде позиционного текста. Например, в разделе IEASYS содержатся значения основных системных параметров z/OS, в
разделе BPXPRM - параметры настройки z/OS UNIX, в CONSOL -
характеристики консолей и т.п. Набор данных SYS1.PARMLIB можно назвать
системным реестром z/OS. Необходимые при загрузке параметры аппаратной
конфигурации системы и характеристики устройств ввода-вывода
извлекаются из VSAM набора данных IODF (Input/Output Definition File).
Этот набор данных используется для создания в COMMON области блоков
управления устройствами (UCB), а также таблицы назначения групповых
имен устройствам (Eligible Device Table, EDT).
Кроме указанных наборов данных, на этапе загрузки формируются или
используются следующие системные наборы данных:
страничные наборы данных для временного хранения данных, вытесненных
при страничном обмене и свопинге;
SYS1.PROCLIB - системная библиотека каталогизированных процедур
(содержит готовые программы на языке управления заданиями);
SYS1.LINKLIB - системная библиотека загрузочных модулей, а также
другие библиотеки, описанные в разделе LNKLST набора данных SYS1.PARMLIB (содержат нерезидентные системные программы: утилиты,
программы обслуживания, редактор связей и др.);
SYS1.LPALIB - библиотечный набор данных, содержащий дополнительные
модули z/OS, загружаемые в область LPA, включая системные процедуры,
SVC-программы, базовые системные программы методов доступа, некоторые
TSO-модули и др. Для загрузки в LPA возможно использование других
библиотек, описанных в разделе LPALST набора данных SYS1.PARMLIB ;
SYS1.MANx - VSAM набор данных, служащий для хранения статистической
информации, собираемой модулем SMF ( x=A-Z,0-9 );
SYS1.LOGREC - системный журнал ошибок и сбоев оборудования;
SYS1.DUMPxx - системный дамп (содержимое виртуальной памяти),
формируемый в случае ошибок при выполнении системных программ
( хх=00..99 ).
На заключительном этапе инициализации системы создается первое
виртуальное адресное пространство Master Scheduler ("главный
планировщик"), которое, в частности, служит для создания новых
системных адресных пространств с помощью специальной программы ACS
(Address Space Create). Системные адресные пространства создаются с
целью разместить системный код не в общей области, а в приватной. Можно
выделить четыре группы системных адресных пространств в зависимости от
способа их создания и использования (рис. 5.11):
SYSTEM - системные адресные пространства, создаваемые на этапе
инициализации автоматически с помощью главного планировщика;
START - адресные пространства, создаваемые по команде оператора
START, вводимой с системной консоли или формируемой автоматически для
запуска процедур JCL;
TSO - адресные пространства, создаваемые для каждого сеанса
пользователя TSO, открываемого по команде LOGON ;
Batch Job - адресные пространства, принадлежащие пакетным инициаторам
подсистемы управления заданиями JES и используемые для выполнения
пакетных заданий.
(рис 5.11) Адресные пространства z/OSСписок основных системных, а также запускаемых автоматически при
инициализации операционной системы адресных пространств представлен в
таблице 5.3.
Основные системные адресные пространства z/OS
| Наименование | Назначение |
| *MASTER* |
Главный планировщик Master Scheduler |
| ALLOCAS |
Создание адресных пространств и пространств данных |
| APPC, ASCH |
Поддержка сетевого протокола APPC |
| CATALOG (CAS) |
Функции каталога |
| BPXOINIT |
Инициализация системного сервиса UNIX |
| CONSOLE |
Поддержка консольных устройств |
| DFM, DFMCAS, GDEDFM |
Управление распределенными файлами (Distributed File Manager) |
| DLF |
Средства использования гиперпространств |
| DUMPSRV |
Средства формирования дампов |
| HSM, ABARS, ABARxxxx |
Менеджер иерархической памяти DFSMShsm, средства резервного копирования и восстановления |
| FTPSERVE |
FTP-сервер |
| GRS |
Средства глобальной синхронизации ресурсов |
| IOSAS |
Супервизор ввода-вывода, поддержка ESCON |
| IXGLOGR |
Системный регистратор |
| JES2, JES2AUX, JES2MON |
Подсистема управления заданиями JES2 |
| LLA |
Средства кэширования оглавлений библиотек в виртуальной памяти |
| NFS |
Сетевая файловая система NFS |
| OAM |
Сервер данных для ленточных библиотек IBM 3494 и IBM 3495 |
| OMVS |
Системный сервис UNIX |
| PCAUTH |
Поддержка межпространственной связи |
| RASP |
Менеджер реальной памяти RSM |
| RMM |
Менеджер управления сменными носителями DFSMSrmm |
| RRS |
Служба восстановления ресурсов |
| SMF |
Средства управления системой SMF (статистика и измерение производительности) |
| SMS |
Подсистема управления внешней памятью |
| SMXC, SYSBMAS |
Дополнительные средства управления PDSE наборами данных |
| TCPIP |
Средства поддержки TCP/IP |
| TRACE |
Трассировка системы |
| VLF |
Средства кэширования наборов данных в виртуальной памяти |
| XCFAS |
Средства Parallel Sysplex |
| VTAM |
Средства поддержки сети SNA/VTAM |
| WLM |
Менеджер управления рабочей нагрузкой |
Управление созданными адресными пространствами и выполняющимися в них
приложениями осуществляется на основе создаваемых z/OS управляющих
блоков (control blocks). Управляющие блоки представляют связанные между
собой структуры данных определенного формата, которые используются для
описания всех ресурсов и процессов z/OS и хранятся в виртуальной
памяти. Важнейшим из них является так называемая таблица векторов
связей CVT (Communications Vector Table), которая хранится в области
ядра и содержит указатели на основные управляющие блоки и системные
таблицы, используемые базовой управляющей программой BCP.
Местоположение CVT определяется по указателю, записанному в области
PSA. Одним из векторов в таблице CVT является указатель на таблицу
векторов адресных пространств ASVT (Address Space Vector Table),
которая хранится в подпуле 245 и содержит список указателей на
управляющие блоки ASCB всех доступных адресных пространств. Как уже
отмечалось ранее, блок управления адресным пространством ASCB содержит
информацию и указатели, необходимые для управления адресным
пространством.
После того как произведен начальный запуск операционной системы z/OS,
поддерживается три варианта перезагрузки:
холодная перезагрузка (cold start) - выполняется как начальная
загрузка с полной перестройкой содержимого областей виртуальной памяти;
быстрая перезагрузка (quick start) - не перестраивается содержимое
PLPA; временные наборы данных, размещенные в виртуальной памяти (так
называемые VIO), не сохраняются;
теплая перезагрузка (warm start) - содержимое PLPA не
перестраивается, наборы данных VIO сохраняются.
Управление задачами
Напомним, что задача (task) представляет собой минимальную единицу
работы, которой система предоставляет процессорные кванты. Задачи
порождаются по инициативе приложений (с помощью макровызова ATTACH) для
распараллеливания выполнения отдельных фрагментов кода программы. Любая
программа, как минимум, представляет собой одну задачу, но может быть
построена в виде совокупности параллельно выполняемых задач.
Для каждой задачи z/OS строит специальный управляющий блок - блок
управления задачей TCB (Task Control Block), который содержит основные
атрибуты задачи и размещается в адресном пространстве соответствующего
приложения (в области планировщика работ SWA/ESWA пользовательского
региона). В общем случае с каждым адресным пространством ассоциируется
несколько TCB, включая некоторые системные задачи, обслуживающие
выполнение пользовательских приложений. Все блоки TCB связаны между
собой в иерархическую цепочку с помощью специальных указателей.
Наряду с задачами в z/OS существует еще один тип работ - так называемые
" запросы на выполнение сервисных программ ". Эти запросы инициируются
системным кодом, исполняемым в некотором адресном пространстве, для
выполнения действий, затрагивающих другое адресное пространство.
Запросы выполняются в невытесняющем режиме и имеют ряд ограничений,
связанных с невозможностью применения системных вызовов
(SVC-прерываний) и использования памяти вне области SQA. Для каждого
такого запроса система строит управляющий блок, получивший название SRB
(System Request Block).
Таким образом, в любой момент времени в системе присутствует некоторое
количество работ в виде задач и запросов, которые готовы к выполнению и
нуждаются в предоставлении процессорного времени. Проблема
распределения процессорного времени решается с помощью специальной
системной программы, тесно связанной с процедурой обработки прерываний,
которая называется .
Диспетчер формирует очереди работ WUQ (Work Unit Queue) из числа вновь
созданных, а также готовых к выполнению, но ранее прерванных задач и
запросов (рис. 5.12). Очереди имеют двухуровневую организацию. На
первом уровне формируется цепочка ASCB - управляющих блоков адресных
пространств, страницы которых представлены в физической памяти (swap
in) и у которых имеется хотя бы одна задача или запрос, готовые к
выполнению (т.е. не ожидающие завершения какого-либо события). ASCB
упорядочены в соответствии с диспетчерскими приоритетами,
установленными для различных адресных пространств с помощью менеджера
управления рабочей нагрузкой WLM. Каждое адресное пространство
располагает собственной очередью готовых к выполнению задач и запросов
в виде цепочки управляющих блоков TCB и SRB, на которую имеется
указатель в ASCB (очередь второго уровня). SRB всегда имеют
преимущество перед TCB. Любое событие, изменяющее статус адресного
пространства и его работ, приводит к изменению очереди.
(рис 5.12) Диспетчеризация работДиспетчер получает управление каждый раз, когда освобождается один из
процессоров, то есть либо завершается выполнение очередной работы, либо
истекает квант отведенного для некоторой работы процессорного времени,
либо работа переходит в состояние ожидания (блокируется) до наступления
какого-либо события. При получении управления диспетчер выбирает из
очереди наиболее приоритетную работу и производит "переключение
процессора", предоставляя возможность начать или продолжить выполнение
этой работы.
Переключение поддерживается аппаратно, при этом в полной мере
используется механизм обработки прерываний, который включает следующие
шаги (п. 2.1.4):
загрузка адреса таблицы сегментов в управляющий регистр CR;
восстановление ранее сохраненных регистров процессора;
восстановление старого PSW и передача управления следующей работе.
Управление вводом-выводом
В основе системы организации ввода-вывода в z/OS лежит канальная
архитектура и связанные с ней аппаратные компоненты, описанные в главе
2. На уровне операционной системы представлены две группы средств,
обеспечивающих поддержку выполнения операций ввода-вывода: средства
описания и конфигурирования устройств и средства управления потоками
данных.
Для описания конфигурации подключенного оборудования и устройств
ввода-вывода, а также их динамической реконфигурации используются
упоминавшиеся ранее диалоговые компоненты HCD или HCM. Результатом их
применения является построение набора данных IODF (Input/Output
Definition File), в котором определены параметры устройств
ввода-вывода, используемые канальной подсистемой и z/OS. Канальная
подсистема получает необходимую для работы информацию с помощью
программы для описания оборудования IOCP (Input/Output Configuration
Program), которая на основе IODF формирует конфигурационный набор
данных параметров оборудования, подключенного к канальной подсистеме
IOCDS (Input/Output Configuration Data Set). z/OS использует содержимое
IODF на этапе начальной загрузки и инициализации (см. выше).
Управление потоками данных при вводе-выводе построено на основе гибкой
многоуровневой модели . На рис. 5.13 показана типичная схема
обработки запросов ввода-вывода на примере приложения, использующего
данные, хранящиеся на устройстве DASD.
(рис 5.13) Средства управления потоками данных при вводе-выводеПриложение MYPRG, представленное в адресном пространстве AS,
запускается с помощью пакетного задания, которое содержит описание
используемого набора данных с именем MYDATA (оператор DD ). Операции
ввода-вывода представлены в тексте приложения в виде макровызовов OPEN, GET, PUT, CLOSE. На языках высокого уровня данные макровызовы
генерируются компилятором при обращении к соответствующим функциям
ввода-вывода. Макровызов OPEN выполняется перед началом процесса
ввода-вывода для построения специальных управляющих блоков - блока
управления данными DCB (Data Control Block) и блока размещения данных
DEB (Data Extent Block). DCB содержит информацию о параметрах набора
данных (имя, тип, устройство и т.п.), представленную в специальном
одноименном макровызове DCB. Эти параметры могут быть дополнены и
откорректированы в операторе языка управления заданиями DD, связанном с
соответствующим DCB. DEB содержит информацию о размещении набора
данных, включая адрес устройства и характеристики выделенного набору
данных пространства внешней памяти.
Указанные управляющие блоки используются при выполнении операций
ввода-вывода, которые осуществляются с помощью макровызовов чтения
(ввода) GET и записи (вывода) PUT. Исполнение макросов GET/PUT
начинается с передачи управления программе метода доступа, указатель на
которую хранится в DCB. Метод доступа (access method) представляет
собой своеобразный интерфейс между приложением и его данными, благодаря
которому приложение работает на логическом уровне представления данных,
вне зависимости от их физической организации. Программа метода доступа
размещается в области LPA адресного пространства и берет на себя
выполнение множества важных функций, таких как:
создание буферов ввода-вывода в адресном пространстве приложения;
синхронизация операций ввода-вывода;
построение канальной программы;
оптимизация характеристик производительности контроллера (например,
за счет организации кэширования данных);
сжатие и распаковка данных;
восстановление программ при возникновении ошибок;
обмен данными с приложением.
В z/OS поддерживается несколько методов доступа, предназначенных для
обслуживания наборов данных и устройств определенного типа. Чаще всего
используются следующие методы доступа:
QSAM, BSAM - для обработки последовательных наборов данных и
разделов библиотек;
BPAM - для обработки библиотечных наборов данных (PDS и PDSE);
VSAM - для обработки наборов данных VSAM;
OAM - для обработки не разделенных на логические записи потоков
данных (объектов), хранящихся в СУБД DB2 и на оптических носителях;
VTAM - для организации сетевого ввода-вывода.
Каждый из представленных методов доступа реализует собственный алгоритм
записи/чтения данных и располагает специфическим набором макрокоманд и
утилит для организации ввода-вывода.
Наряду с выполнением представленных выше функций программа метода
доступа создает управляющие блоки IOB и ECB. Управляющий блок
ввода-вывода IOB (Input/Output Block) содержит указатели на все
связанные с данной операцией ввода-вывода управляющие блоки и, самое
важное, - на канальную программу. Канальная программа (channel program)
создается программой метода доступа и состоит из последовательности
канальных команд CCW, описывающих всю процедуру ввода-вывода, включая
адреса области памяти, куда (откуда) пересылаются данные, а также объем
передаваемых данных (см. п. 2.2).
Далее через вызов соответствующего SVC прерывания управление передается драйверу, который реализует интерфейс между методом доступа и
супервизором ввода-вывода IOS. Блок управления событиями ECB (Event
Control Block) служит для синхронизации работы метода доступа и
драйвера. Когда в следующий раз метод доступа получит управление от
диспетчера, он с помощью макровызова WAIT будет ждать сигнала от
драйвера о завершении операции ввода-вывода.
Для большинства методов доступа, не использующих наборы данных VSAM,
применяется так называемый драйвер EXCP (EXecute Channel Program),
вызываемый одноименной макрокомандой. Драйвер резервирует в основной
памяти страницы, которые будут использоваться для перемещения данных и
размещения канальной программы и объявляет их фиксированными
(неперемещаемыми) на время выполнения операций, корректируя
соответствующим образом адреса канальной программы.
Затем управление передается супервизору ввода-вывода IOS (Input Output
Supervisor), который обеспечивает взаимодействие z/OS c канальной
подсистемой, выполняя следующие функции:
проверка доступности устройства и определение оптимального канального
пути;
формирование очереди ожидания, если есть запросы от других
приложений;
запуск канальной программы с помощью машинной команды SSCH.
Канальная подсистема выполняет канальную программу, обеспечивая
физический перенос данных между основной памятью и устройством с
помощью аппаратного контроллера (CU) и канальных путей. Завершая
операцию, канальная подсистема формирует прерывание ввода-вывода,
предварительно записав код завершения операции в специальный
управляющий блок IRB (Interrupt Response Block). Обработчик прерывания
через SRB-запрос запускает программу оповещения супервизора
ввода-вывода IOS, которая передает управление драйверу. Драйвер
сигнализирует методу доступа о завершении операции ввода-вывода,
который, в свою очередь, получив управление от диспетчера, возвращает
управление пользовательскому приложению. После этого приложение,
наконец, может продолжить свою работу. При наличии ошибок могут
срабатывать программы восстановления, представленные в составе
супервизора.
Следует отметить, что данный пример демонстрирует общие принципы
обработки запросов на ввод-вывод средствами операционной системы z/OS,
хотя в отдельных случаях могут быть некоторые отличия от представленной
схемы.
Управление рабочей нагрузкой
Одна из важнейших функций базовой управляющей программы z/OS связана с
решением задачи эффективного динамического перераспределения системных
ресурсов (процессорного времени, основной памяти, каналов и устройств)
между всеми видами выполняемых в системе работ с учетом их важности. В
состав выполняемых работ включаются пакетные задания, запускаемые
процедуры STC и программы поддержки интерактивных пользовательских
сеансов TSO, приложения и команды, запускаемые в рамках сеансов
TSO/ISPF, команды и утилиты UNIX shell, транзакции CICS, DB2 и др.
Иногда такую задачу называют "балансировкой рабочей нагрузки",
поскольку в условиях постоянно меняющегося объема выполняемых в системе
работ, с одной стороны, требуется поддерживать приемлемый или заданный
уровень пропускной способности (или времени реакции), а с другой -
обеспечить максимальную загрузку имеющихся ресурсов, не допуская при
этом ситуаций, когда какого-либо ресурса недостает. Решение этой задачи
возложено на менеджера управления рабочей нагрузкой WLM (WorkLoad
Manager), который впервые был представлен в MVS SP V5. Возможности WLM
распространяются на множество работ, выполняемых в том числе и в
кластере Parallel Sysplex.
WLM реализует эффективную модель управления нагрузкой, получившую
название " целевой режим " (goal mode) и основанную на выборе и описании
ожидаемых целей функционирования для каждой из выполняемых работ .
Отметим, что одновременно вплоть до z/OS V1R2 поддерживался и так
называемый " режим совместимости " (compatibility mode) - ныне не
применяемая модель управления, ориентированная на низкоуровневые
средства настройки и контроля использования ресурсов с помощью менеджера системных ресурсов SRM (System Resource Manager).
Рассмотрим основные принципы управления рабочей нагрузкой в целевом
режиме WLM. Все выполняемые в системе работы делятся на
непересекающиеся группы, называемые классами обслуживания (service
class). Принадлежность конкретной работы к тому или иному классу
определяется по ее атрибутам, таким как тип работы (пакетное задание,
транзакция и т.п.), идентификатор пользователя, учетная информация,
используемая подсистема (среда) выполнения и др. Атрибуты каждого
класса обслуживания назначаются системным администратором при настройке
системы или устанавливаются по умолчанию. Таким образом, в каждом
классе объединяются работы с идентичными характеристиками с точки
зрения используемых ресурсов и требуемой производительности.
С каждым классом обслуживания ассоциируется определенная цель
выполнения (goal) и показатель важности (importance). С помощью WLM
могут быть определены три типа целей выполнения, условно обозначаемых
как время отклика, избирательность и скорость выполнения.
Цель типа " время отклика " (response time) означает установку желаемой
длительности выполнения работы, которая измеряется от момента запуска
(ввода) запроса до получения результата. Эта цель обычно выбирается для
коротких транзакций, поступающих от интерактивных пользователей, и
может быть задана двумя способами. Первый способ заключается в
установке среднего времени отклика: например, 0,5 с для всех работ
данного класса обслуживания. Второй способ позволяет дополнительно
указать долю работ, для которых необходимо обеспечить требуемое время
реакции: например, 80% работ данного класса обслуживания должны быть
выполнены не более чем за 0,5 с.
Цель " избирательность " (discretionary) устанавливается для работ, у
которых нет жестких ограничений по длительности выполнения. В этом
случае система может предоставлять таким работам ресурсы по принципу
"разумной достаточности" - только в периоды невысокой общей нагрузки и
когда другие работы достигли своих целей. Данная цель может быть
назначена, например, для низкоприоритетных пакетных заданий, которым
система лишь гарантирует завершение (рано или поздно).
Цель " скорость выполнения " (velocity) назначается для работ, для
которых первые две цели неприемлемы. К этой категории относятся,
например, длительные или "бесконечные" по времени выполнения работы,
которые тем не менее нельзя отнести к низкоприоритетным. Скорость
выполнения задается целым числом в диапазоне 1-99. Чем выше уровень
установленной скорости, тем больше вероятность получить необходимые
ресурсы без предварительного ожидания.
Показатель важности класса обслуживания характеризует, насколько важно
для работ данного класса достичь установленной цели. Данный показатель,
принимающий целочисленные значения в диапазоне от 1 до 5, применяют в
тех случаях, когда в системе возникает дефицит ресурсов и требуется
"пожертвовать" какими-то работами (то есть заставить их ждать). При
разрешении коллизий работы класса обслуживания с показателем важности 1
будут иметь преимущество перед работами всех остальных классов. Для
классов, имеющих цель "избирательность", показатель важности не
назначается.
Выполнение работ каждого класса обслуживания представляется в виде
последовательности периодов (period), для каждого из которых могут быть
заданы различные цели и показатели важности. Продолжительность периода
определяется по условному количеству выделенных для периода ресурсов,
измеряемому в так называемых единицах обслуживания (service units). Эта
величина зависит от количества использованных процессорных квантов для
выполняемых задач (TCB и SRB), числа запросов на доступ к памяти и
ввод-вывод, а также типов используемых устройств и оборудования.
Каждые четыре секунды WLM производит сбор данных о производительности
для каждого класса обслуживания. На основе полученных данных
осуществляется корректировка текущего распределения ресурсов, с тем
чтобы приблизить более приоритетные работы к установленной цели. Если
несколько работ конкурируют за получение одного и того же ресурса, то
WLM производит выбор путем их "взвешивания" на основе заданных целей и
показателей важности. Менеджер управления рабочей нагрузкой принимает
участие в реализации всех важнейших системных механизмов, включая:
управление созданием новых адресных пространств;
управление страничным обменом (предотвращение нехватки памяти,
откачка страниц);
организацию свопинга (временное высвобождение ресурсов от
низкоприоритетных работ);
блокировку приема пакетных, STC и TSU заданий при повышенной нагрузке
(нехватка свободных страниц в страничных наборах или в центральной
памяти, пробуксовка страниц и т.п.)
управление диспетчерскими приоритетами задач;
управление пакетными инициаторами, обеспечивающими выполнение
пакетных заданий;
управление приоритетами при вводе-выводе;
управление распределением наборов данных по устройствам.
Еще одно важное понятие, используемое WLM, - стратегия обслуживания
(service policy), которая позволяет динамически изменять параметры
(цели, периоды, показатели важности) для установленных классов
обслуживания в течение рабочего дня или в зависимости от дня недели и
иных критериев.
Настройка параметров WLM осуществляется системным программистом на
основе специальной диалоговой программы, доступной в TSO/ISPF.
Ранее отмечалось, что в z/OS появился новый компонент для динамического
управления ресурсами в режиме LPAR с учетом рабочей нагрузки - интеллектуальный менеджер ресурсов IRD (Intelligent Resource Director)
. IRD расширяет концепцию целевого режима управления рабочей
нагрузкой, реализуемую WLM, путем предоставления ресурсов логических
разделов LPAR, размещенных как на одном физическом сервере, так и в
рамках сисплекса (так называемый кластер LPAR). Новые возможности IRD
затрагивают решение следующих основных задач применительно к целевому
режиму управления:
динамическое изменение доли процессорного времени (processor weight),
выделяемого логическому разделу (LPAR CPU management);
динамическое переопределение канальных путей между LPAR для повышения
эффективности ввода-вывода с учетом целевых критериев выполняемых работ
(dynamic channel path management, DCM);
организация доступных всем LPAR дополнительных очередей на ввод-вывод
с учетом целевых критериев выполняемых работ (channel subsystem
priority queuing, CSSPQ).
При управлении ресурсами системы существенную роль играют еще два
компонента z/OS: SMF и RMF.
Компонент SMF (System Management Facility) входит в состав базовой
управляющей программы и предназначен для сбора и регистрации
информации, касающейся функционирования z/OS и приложений. SMF работает
в собственном адресном пространстве. Собранная информация накапливается
в виде так называемых SMF-записей в специальных VSAM - наборах данных с
именами SYS1.MANx ( х - целое число). Различают два типа записей: с
системной и пользовательской информацией. SMF-записи с системной
информацией включают, например, сведения о конфигурации системы,
активности страничного обмена, рабочей нагрузке и интенсивности
использования различных ресурсов. SMF-записи с пользовательской
информацией содержат данные об использовании процессоров и устройств (в
первую очередь DASD) для каждого шага задания и задания в целом, а
также для пользовательских сеансов TSO. Собранная SMF информация
используется различными компонентами z/OS, включая WLM, а также
доступна пользователю непосредственно или с помощью рассматриваемого
ниже компонента RMF. Настройка SMF осуществляется с помощью раздела SMFPRM реестра SYS1.PARMLIB.
Менеджер сбора данных о ресурсах RMF (Resource Measurement Facility)
принадлежит к числу опциональных компонентов z/OS и содержит средства
для сбора данных и формирования отчетов об использовании ресурсов и
производительности системы. Отчеты, формируемые RMF, могут
использоваться для анализа текущего состояния системы, выявления узких
мест, а также выбора наиболее эффективной стратегии управления
ресурсами и нагрузкой и планирования развития аппаратного обеспечения
системы.
В состав RMF входят три программных монитора.
Монитор III - предназначен для сбора и анализа информации на коротком
отрезке времени (сбор первичных данных с периодом 1 с, консолидация
собранных данных с сохранением результатов - каждые 100 с). Позволяет
получить сведения о значениях времени отклика и скорости выполнения
работ, информацию о задержках, сказавшихся на производительности.
Монитор II - предназначен для сбора и анализа информации об
использовании конкретного ресурса (например, процессоров, дискового
тома, основной памяти) либо об активности и потребляемых ресурсах
применительно к указанному адресному пространству или заданию в текущий
момент времени. Может осуществляться непрерывный контроль состояния
адресного пространства или задания.
Монитор I - предназначен для сбора и анализа информации о рабочей
нагрузке и использовании ресурсов на длительном (указанном) отрезке
времени (по умолчанию период сбора - 1 с, период консолидации - 30
мин). Значения временных периодов могут быть заданы пользователем. В
остальном - то же, что и монитор III.
Для хранения собранной информации все три типа мониторов могут
задействовать наборы данных SMF, а монитор III, кроме того, использует
собственный набор данных VSAM. Использование RMF осуществляется через
диалоговый интерфейс, доступный в TSO/ISPF, однако существует
возможность запуска мониторов RMF в пакетном режиме с выводом отчетов в
указанный набор данных. При этом можно получать сообщения о возникающих
проблемах.