Реализация базовых функций z/OS
Общая область представлена совокупностью областей, каждая из которых предназначена для определенных целей:
- область ядра - 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 - не используемая по архитектурным соображениям область, получившая название Bar1);
- от 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 определяет, в частности, какой уровень таблиц региона является старшим для данного адресного пространства.