Учебное пособие: Операционные системы "тонких" клиентов
Основной аппаратной
структурой, в которой фиксируется состояние процессора, является 16-байтное
Слово Состояния Программы (PSW - Program State Word). В нем отражается адрес
выполняемой команды, состояние задача/супервизор, режим адресации и т.п.
Дополнительная информация о состоянии содержится еще в 16 8-байтных управляющих
регистрах. В системе имеется 16 8-байтных регистров общего назначения (пара
смежных таких регистров может использоваться для представления 16-байтного
значения) и 16 16-байтных регистров плавающей точки.
Система имеет основную
(оперативную) и расширенную память. Команды и обрабатываемые данные находятся в
оперативной памяти. Расширенная память является необязательным компонентом
системы. Она используется как дополнительный буфер между оперативной и внешней
памятью. Данные могут перемещаться между основной и расширенной памятью
постранично - командами PAGE IN и PAGE OUT.
В z-процессоре адрес
имеет размер 64 бита, что позволяет работать с адресным пространством (АП)
размером 16 эксабайт, однако процессор поддерживает и "старые" режимы
адресации - с 31-битным и 24-битным адресом (режим определяется состоянием соответствующих
разрядов PSW).
В системе адресации
различаются адреса: абсолютные, реальные и виртуальные адреса нескольких типов.
Абсолютный адрес - адрес
в реальной памяти, фактический адрес ячейки памяти.
Реальный адрес, как
правило, совпадает с абсолютным, кроме реальных адресов, меньших 8 Кбайт.
Реальный адрес, меньший 8 Кбайт, преобразуется в абсолютный путем префиксации -
добавления к нему значения, записанного в префиксном регистре. Область реальной
памяти до 8 Кбайт используется для специальных целей системой прерываний и
ввода-вывода, префиксация обеспечивает для каждого процессора в
многопроцессорной системе собственную область младших адресов памяти.
Виртуальные адреса
различаются четырех типов: первичные, вторичные, домашние и определяемые
регистрами доступа. Для виртуальных адресов разного типа по-разному выполняется
динамическая трансляция адреса. Режим динамической трансляции задается
определенными битами PSW и управляющих регистров. В зависимости от режима, в
процессе динамической трансляции адресов используются от двух до пяти
управляющих таблиц переадресации (3 таблицы областей, таблица сегментов,
таблица страниц). В системе имеется также 16 AR-регистров (регистры доступа).
Регистр AR0 содержит указатель на таблицы переадресации для первичного АП.
Регистры AR1-AR15 позволяют приложению адресовать еще 15 дополнительных АП.
Защита памяти в
мейнфреймах z-архитектуры включает в себя традиционную для многих компьютерных
систем изоляцию АП виртуальной памяти, бит защиты от выборки, бит обращения и
бит изменения в дескрипторах страниц, а также предусматривает механизм,
основанный на применении ключей защиты памяти. Такой ключ приписывается каждой
4-килобайтной странице. В дескрипторе каждого страничного кадра имеется
4-битный ключ доступа, обеспечивающий авторизацию программ при обращении к
памяти. Каждая программа имеет свой 4-битный ключ доступа, который при
выполнении программы заносится в определенные разряды PSW. При каждом обращении
к памяти ключ защиты, который выбирается из PSW, сравнивается с ключом
страницы, к которой происходит обращение. Запись разрешается, только при
совпадении ключей. Системные (привилегированные) программы выполняются с
нулевым ключом защиты, что дает им доступ к любой странице памяти.
Система ввода-вывода
основывается на каналах ввода-вывода, описанных нами в главе 6 части I. Однако
там мы описали строго иерархическое подключение "канал - контроллер -
устройство", которое применялось в ранних реализациях. Современная
архитектура мейнфреймов обеспечивает более сложную схему подключений с гибким
установлением путей к устройству. Канальная подсистема ввода-вывода управляет
потоком данных между основной памятью и устройствами. Как часть операции
ввода-вывода, канальная подсистема выполняет проверку доступности канальных
путей, выбор одного из доступных путей и инициализацию операции обмена. В
системе имеется два типа канальных путей:
Параллельные канальные
пути, служащие для поддержки интерфейса ввода-вывода System/360 и System/370;
такой путь представляет собой электрические проводные соединения между
канальной подсистемой и одним или несколькими контроллерами. До 8 контроллеров
и до 256 устройств могут использовать совместно один параллельный путь.
Последовательные
канальные пути ESCON и FICON состоят из двух фибероптических кабелей,
динамических переключателей и контроллеров. Динамическое переключение может
быть выполнено между двумя любыми последовательными канальными путями в этой же
или в другой канальной подсистеме. К каждому контроллеру последовательного
интерфейса может быть подключено до 256 внешних устройств.
Внешний таймер (ETR -
external time reference) обеспечивает синхронизацию часов мейнфреймов,
объединенных в тесно связанный комплекс (Parallel Sysplex).
Аппаратные средства
z-архитектуры поддерживают программное обеспечение всех предыдущих архитектур
мейнфреймов IBM, аналогично и ОС мейнфреймов развиваются эволюционным путем
[21]. Эта эволюция происходит по трем параллельным линиям, история которых
представлена на рисунке 12.2.
12.2 Операционная система
VSE/ESA
Линия ОС, представляемая
сегодня VSE/ESA v.2.6 [21, 24, 38], ориентирована на применение на младших,
наименее мощных моделях мейнфреймов. Поэтому ей свойственны более простые
решения, запаздывающее внедрение новых свойств аппаратной платформы (в
частности, она пока не использует новых возможностей z-архитектуры), отсутствие
развитых средств управления производительностью. Хотя имеется много примеров
успешного построения промышленных информационных систем на базе VSE, ее
основное назначение - поддерживать "унаследованное" программное
обеспечение, разработанное для предшествовавших версий аппаратуры и ОС.
Программисту, воспитанному на ПЭВМ, это может показаться странным, но в сфере
промышленной обработки данных достаточно широко применяется программное
обеспечение, разработанное 20 и более лет назад. За столь длительный срок эти
программы доказали свою полезность и надежность, и у пользователей нет
оснований от них отказываться.
Среда выполнения, которую
VSE обеспечивает для приложений, показана на рисунке 12.3. Эта среда
обеспечивается отчасти обязательными компонентами в составе ОС, отчасти -
опционными компонентами ОС, отчасти - промежуточным программным обеспечением.
Ниже вкратце рассматриваются компоненты, создающие эту среду.
Рисунок 12.3 Среда
выполнения приложения в VSE/ESA
Базовые управляющие
средства обеспечиваются обязательным компонентом ОС, который носит название
VSE/AF (Advanced Functions). В состав этого компонента входят: ядро ОС -
супервизор, обеспечивающее управление памятью, управление задачами (в
терминологии IBM задача означает процесс), базовые функции управления заданиями
и базовые функции управления файлами, некоторые системные утилиты и т.д.
Управление памятью
Аббревиатура VSE
расшифровывается как Virtual Storage Extension - расширение виртуальной памяти.
Это название сложилось исторически, но сейчас его нельзя считать вполне точным.
Первая ОС этой линии - DOS - работала только с реальной памятью. Реальная
память разбивалась на разделы фиксированного размера, и в каждом разделе
выполнялась одна задача. В DOS/VSE за счет динамической трансляции адреса
System/370 создавалось виртуальное АП размером 16 Мбайт, которое затем
разбивалось на разделы фиксированного размера - и для такой модели название VSE
является вполне справедливым. Однако, уже в VSE/SP и далее - в VSE/ESA
появилась возможность создавать для каждого раздела независимое АП размером 16
Мбайт (а позже - 2 Гбайт). Структура памяти для современных версий VSE
представлена на рисунке 12.4.
Рисунок 12.4 Структура
памяти VSE/ESA
Нижняя часть виртуальной
памяти - общая для всех разделов, в ней размещается ядро ОС - супервизор. Выше
располагается совместно используемая область виртуальной памяти, которая
содержит программы и данные, доступные для всех разделов. Другая совместно
используемая область находится в верхней части 2-Гбайтного АП. Разделение
совместно используемой области на две части связано с переходом от
24-разрядного адреса к 31-разрядному. Унаследованные программы с 24-разрядной
адресацией видят только часть АП до 16 Мбайт, в которой есть все, что им нужно.
Программы же, созданные с учетом 31-разрядной адресации, видят все 2 Гбайт АП,
в том числе, и расширение разделяемой области.
Для части или для всего
АП задачи может быть определен режим GETVIS, задающий расположение этой части в
реальной памяти и исключающий ее из страничного обмена. Разумеется, это снижает
эффективность функционирования остальных задач и применяется только для
системных задач.
При старте системы
автоматически создается 12 статических разделов. В системе есть также
возможность создавать и динамические разделы (до 200 разделов) - такие разделы
создаются автоматически при запуске задачи в области динамических разделов и
уничтожаются при ее завершении. Кроме того, 31-разрядным приложениям ОС может
предоставлять (через регистры AR) 2-Гбайтные "пространства данных",
которые могут использоваться для хранения данных. В этих пространствах также
могут создаваться виртуальные диски.
В части статических
разделов, как правило, уже при старте системы запускаются системные задачи.
Так, в разделе 0, который называется BG, обычно запускается задача связи с
оператором - BG; в разделе 1 - задача POWER и т.д. Разделы этих задач,
выполняющих обязательное общесистемное обслуживание, обычно (но не обязательно)
размещаются в общей части АП, как показано на рисунке 12.4.
Управление задачами
Единицей работы в ОС
является задание (job). Задание состоит в последовательном выполнении
нескольких шагов-задач (task) - программ (в частном случае задание может
состоять из единственного шага). Задание характеризуется классом (буква) и
приоритетом (число). Для каждого раздела оператором задаются классы заданий,
выполняемых в разделе, и приоритет класса в разделе. Задания одного класса
выбираются на выполнение в соответствии с числовым приоритетом, а при равенстве
приоритетов - в порядке поступления. Классы и приоритеты заданий определяют
порядок, в котором задания выбираются на выполнение, но не дисциплину
распределения процессорного времени.
С точки зрения
распределения процессорного времени, VSE является системой без разделения времени,
с абсолютными приоритетами. Вытесняющая многозадачность здесь реализована в том
отношении, что задача с более высоким приоритетом, придя в состояние
готовности, немедленно вытесняет с центрального процессора задачу с низким
приоритетом. Приоритет задачи определяется номером раздела, в котором она
выполняется. Наивысший приоритет имеет раздел 0, далее - раздел 1 и т.д.,
задачи в динамических разделах имеют самый низкий приоритет. Для эффективного
использования многозадачных свойств VSE следует в статических разделах с
меньшими номерами запускать обменные задачи.
При работе VSE/ESA на
многопроцессорной конфигурации только один процессор в каждый момент времени
может выполнять код в режиме супервизора (привилегированном режиме).
Задания в VSE/ESA бывают
двух видов - пакетные и интерактивные. Базовые средства VSE/AF обеспечивают
обработку пакетных заданий. Пакетное задание представляет собой набор
операторов языка управления задания JCL на перфокартах (виртуальных). Основными
операторами языка JCL являются:
// JOB - оператор
заголовка задания;
// OPTION - оператор
установки параметров/режимов выполнения задания;
// EXEC - шаг задания,
вызов на выполнение программы;
// ASSIGN - назначение
физического устройства логическому файлу программы для шага задания;
// DLBL - назначение
физического дискового файла логическому файлу программы для шага задания;
// EXEC PROC - выполнение
процедуры в шаге задания; процедура представляет собой хранимый в библиотеке
набор операторов JCL; процедура может иметь параметры и содержать некоторую
логику (ветвление в зависимости от значений параметров и результатов выполнения
отдельных шагов).
Данные могут включаться в
пакет или выбираться из файлов и библиотек.
Обязательным компонентом
VSE является VSE/POWER - подсистема управления входными и выходными и выходными
очередями. POWER обычно запускается в разделе F1 и располагается в реальной
памяти. POWER выполняет следующее:
читает задания из
различных источников и записывает их во входную очередь, располагающуюся на
диске (очередь RDR);
выбирает задания из
очереди RDR (в соответствии с их параметрами) в соответствующие разделы и
инициирует их выполнение;
записывает выходные
данные приложений в очереди LST (печать) и PUN (вывод на перфокарты);
также в соответствии с
параметрами заданий передает данные из выходных очередей на реальные устройства
(перфокарточные устройства не используются в современных мейнфреймах, и данные,
выведенные на перфокарты, остаются электронными, в таком виде они могут быть
перенаправлены, например, во входную очередь);
для сетевой среды POWER
создает также очередь XMT для передачи данных между узлами сети.
Таким образом, POWER
является системой спулинга, обеспечивающей разделение процессов ввода,
обработки и вывода и параллельное выполнение этих процессов.
Описанные выше классы и
приоритеты заданий относятся к входной очереди, RDR. Данные, выводимые в
выходные очереди, также имеют классы и приоритеты, задаваемые независимо от
входных. VSE/POWER имеет собственный управляющий язык JECL (Job Entry Control
Language), основное назначение операторов которого - определение классов и
приоритетов данных в очередях.
Файловая система
Сочетание структуры
файлов на внешней памяти и способов обработки файлов в программе составляет
метод доступа. В VSE/ESA применяются две группы методов доступа: базисные
методы - BAM, "унаследованные" от старых версий и виртуальный
последовательный метод - VSAM (применяемый также и в z/OS как единственная для
этой ОС структура файловой системы). Обычно при инсталляции VSE создаются два
дисковых тома. На этих томах устанавливаются системные файлы и библиотеки, но
также остается место и для пользовательских файлов. Первичное управление
дисковым пространством выполняется средствами BAM. На каждом диске выделяется
пространство - область VSAM. С точки зрения BAM, вся эта область представляется
как один файл, но внутри этого файла средства VSAM обеспечивают собственное
управление дисковым пространством и создание VSAM-файлов.
В начале каждого диска
находится метка тома (VOL1), содержащая имя тома и указатель на размещение
оглавления тома. Оглавление тома - структура VTOC - содержит информацию о
размещении на томе BAM-файлов. Средства BAM фактически перекладывают управление
дисковым пространством на программиста: при создании файла программист должен
явным образом указать физический адрес файла на диске и его размер. Это
выполняется средствами языка управления заданиями: после оператора // DLBL,
относящегося к создаваемому файлу должен следовать один или несколько
операторов // EXTENT, задающих адреса и размеры участков файла. BAM-файл
располагается в одном или нескольких (до 16) непрерывных участках дискового
пространства. Дисковое пространство выделяется сразу при создании файла и не
может быть перераспределено в дальнейшем. Элемент VTOC для каждого файла
содержит его имя и до 16 пар "адрес-размер" для каждого участка. -
Утилита VTOC помогает программисту вести карту распределения дискового
пространства.
Основные файлы BAM,
создаваемые на диске DOSRES при инсталляции системы:
системная библиотека
IJSYSRS.SYSLIB, необходимая для начальной загрузки системы;
область страничного
обмена;
область очередей POWER;
области файлов ICCF, CICS
и других системных программ;
каталог VSAM;
область VSAM.
Часть системных библиотек
и файлов инсталлируется в области VSAM.
Информация обо всех
VSAM-файлах на диске сохраняется в каталоге VSAM. Каталог VSAM должен быть на
каждом томе, содержащем область VSAM.
Для файлов VSAM дисковое
пространство выделяется динамически, и файл может занимать несмежные участки
дискового пространства. Пространство выделяется блоками фиксированного размера
(размер выбирается), план размещения файла представляет собой B+-дерево. Кроме
того, "листья" дерева связаны в линейный список, что позволяет
осуществлять быстрый последовательный доступ к данным файла. VSAM поддерживает
физические стуктуры файлов четырех типов:
ESDS (entry-sequenced
data set) - неупорядоченные записи фиксированной или переменной длины;
KSDS (key-sequenced data
set) - записи фиксированной или переменной длины, упорядоченные по ключам;
RRDS (relative-record
data set) - записи фиксированной длины, упорядоченные по номерам;
VRDS (variable-length
relative-record data set) - записи фиксированной или переменной длины,
упорядоченные по номерам.
Физическая структура
файлов ESDS очевидна. Для файлов RRDS память выделяется сразу для всех записей
файла, и относительная позиция записи вычисляется. В RRDS-файле могут быть
"пустые места" - для записей, еще не занесенных в файл. Для файлов
KSDS и VRDS строится индекс (B+-дерево с линейным списком листьев) ключей или
номеров соответственно. Для этих файлов возможно создавать также любое
количество альтернативных индексов - по любым другим ключам, альтернативный
индекс ссылается на основной индекс. Хотя физическая структура файлов в VSE -
записеориентированная, системный API предоставляет как записе-, так и
байториентированный интерфейс.
Логическое
структурирование хранения информации и в BAM, и в VSAM основывается на
концепции библиотек. Библиотека является контейнерным объектом, содержащим одну
или несколько подбиблиотек. Подбиблиотеки содержат разделы (файлы). Память
выделяется для библиотеки, библиотеки BAM не могут увеличиваться в размерах
сверх выделенного им пространства. Память для подбиблиотек выделяется динамически
в пределах пространства библиотеки. Обычно подбиблиотеки объединяют в себе
данные одного определенного типа - исходные, объектные или загрузочные модули.
Системная утилита LIBR обеспечивает операции по обслуживанию библиотек.
ICCF
Наряду с пакетными заданиями,
в VSE есть возможность и интерактивной работы. Она обеспечивается компонентом
VSE/ICCF (Interactive Computing Control Facility). ICCF не является строго
обязательным компонентом ОС, но применяется практически при всех ее
инсталляциях. ICCF выполняется в отдельном статическом разделе и обеспечивает
пользователю терминала следующие возможности:
ввод, просмотр и
редактирование программ, заданий и данных;
запуск с терминала
заданий - интерактивных или пакетных в POWER;
ведение библиотек ICCF
(см. ниже);
доступ к файлам VSE;
доступ к очередям;
интерактивное выполнение
системных утилит;
организацию и выполнение
потока заданий в интерактивном разделе.
Для взаимодействия с
пользователем ICCF использует несколько типов полноэкранных панелей:
панели выбора (меню);
панели ввода данных;
списковые панели;
панели подсказок;
панель текстового
редактора.
ICCF обеспечивает
собственные библиотеки и подбиблиотеки, предназначенные прежде всего для
хранения текстов программ и заданий. Файлы в библиотеках ICCF состоят из
записей размером 88 байт, из которых первые 80 используются для данных, а в 8
байтах находятся два указателя, связывающие записи файла в двунаправленный
список. Для библиотек ICCF определяются права доступа. С точки зрения доступа
имеется три типа библиотек:
COMMON - библиотеки,
содержащие некоторую общую информацию (общие процедуры, макросы и т.п.), к
таким библиотекам имеют доступ все пользователи, но только для чтения, только
системный администратор имеет доступ к этим библиотекам для записи;
PUBLIC - библиотеки,
доступные всем пользователям для чтения и для записи;
PRIVATE - библиотеки,
доступные только для одного пользователя.
Права доступа назначаются
системным администратором.
Другие компоненты
Для обеспечения
одновременной работы многих пользователей и ряда других своих функций ICCF
использует компонент VSE/CICS (Customer Information Control System), который
обязательно должен устанавливаться вместе с ICCF.
Функциональность CICS
значительно шире, чем только поддержка интерактивного интерфейса VSE. CICS
является мощным сервером транзакций, который доступен на всех аппаратных и
операционных платформах IBM и применяется для обеспечения совместного доступа к
данным множества разноплатформенных компонентов информационной системы. VSE/CICS
представляет собой набор программных единиц и системных таблиц, которые
выполняются в отдельном статическом разделе и обеспечивают:
безопасность -
авторизацию доступа пользователей к данным;
управление терминалами;
управление задачами - с
мультипрограммным управлением транзакциями в разделе CICS;
управление программами,
включая поддержку множественных языковых сред и параллельное выполнение
транзакций в одной программе;
сериализацию доступа к
данным параллельно выполняющихся транзакций;
ведение журнала и
восстановление целостности данных после сбоев.
Во всех промышленных
применениях VSE CICS является практически обязательным компонентом, и
прикладные программы для таких применений создаются с использованием
платформенно-независимого API CICS для доступа к данным.
VSE/BTAM (Basic
Telecommunication Access Method) является базовым телекоммуникационным методом
доступа, обеспечивающим управление локальными и удаленными устройствами с
использованием протоколов BSC или Asynch. BTAM не требует отдельной инсталляции
и входит в состав VSE/AF.
VSE/VTAM - (Virtual
Telecommunication Access Method) является дополнительным методом
телекоммуникации, управляющим взаимодействиями между устройствами в сети SNA.
Он поддерживает локальные и удаленные рабочие станции в одно- или многомашинной
сети. Если VSE/ESA установлена в узле сети, VTAM позволяет:
пользователям и
приложениям получать доступ к приложениям, установленным в другой системе;
обмениваться данными с
другими системами;
другим системам получать
доступ к VSE.
VTAM устанавливается как
опционный компонент VSE/ESA и выполняется как задача в отдельном статическом
разделе.
12.3 Операционная система
z/OS
z/OS (раньше - OS/390,
еще раньше - MVS) является стратегической для IBM ОС мейнфреймов [21, 24, 41].
Именно в этой ОС в первую очередь осваиваются новые свойства аппаратной
платформы, именно в этой ОС в первую очередь становятся доступными новые версии
стратегических продуктов промежуточного программного обеспечения, именно эта ОС
рассчитана на применение в самых мощных и производительных вычислительных
комплексах и sysplex'ах (тесно связанных многомашинных комплексах, которые
"выглядят" с точки зрения управления и распределения нагрузки как
одна вычислительная система). Последняя на сегодняшний день версия этой ОС -
z/OS V1R3.
ОС OS/360 MVT,
находившаяся "у истоков" этой линии, работала только с реальной
памятью, создавая в ней динамические разделы по мере необходимости. В ОС MVS
сложились концепции управления виртуальной памятью и другими основными
ресурсами, оставшиеся в принципе неизменными и до настоящего времени.
Переименование системы в OS/390 было связано с интеграцией в систему ряда
программных серверов, ранее существовавших в виде отдельных программных
продуктов, а в z/OS - с адаптацией к 64-разрядной z-архитектуре. Длительная
история эволюционного развития MVS - OS/390 - z/OS привела к тому, что на
сегодняшний день z/OS является системой настолько сложной и богатой
возможностями, что описать их все даже на структурном уровне - задача
невыполнимая в объеме одной книги. Тем не менее, мы попытаемся (ни в коей мере
не претендуя на полноту) дать читателю некоторое представление о компонентах
управления теми ресурсами, которые являются предметом нашего основного
внимания.
Примерная структура
системного программного обеспечения в составе z/OS показана на рисунке 12.5.
Рисунок 12.5 Структура
программного обеспечения z/OS
Мы отметили, что развитие
этой ОС происходило исключительно эволюционным путем. Внедрение новых
возможностей управления ресурсами в ОС происходит, как правило, по следующему
сценарию:
новый управляющий сервис
разрабатывается и внедряется как отдельный программный продукт, продаваемый
отдельно от ОС;
новый программный продукт
включается в комплект поставки ОС;
новый продукт
интегрируется с ядром ОС, возможно, становится частью ядра.
Хотя понятие
"ядро" для z/OS точно не определено, мы называем ядром Базовую
Управляющую Программу (BCP - Base Control Program), осуществляющую
низкоуровневое управление такими ресурсами, как память, процессы, средства
коммуникаций. Надстройки над низкоуровневым управлением (в составе самой BCP
или на более высоких уровнях системного программного обеспечения) позволяют
управлять политиками распределения ресурсов. Ряд системных сервисов, не
входящих в состав ядра, но работающих в режиме супервизора, являются
подсистемами - средами выполнения приложений. Дополнительные системные сервисы
расширяют возможности сервисов, включенных в базовый комплект. Некоторые
программные продукты IBM, относящиеся к классу промежуточного программного
обеспечения, также можно назвать подсистемами, так как они создают собственные
среды. Эти продукты также тесно интегрированы с системой, и в ядро системы
включены функции поддержки этих продуктов.
Управление памятью
Управление памятью
является, возможно, самым интересным свойством z/OS. Аббревиатура первого
названия ОС - MVS расшифровывается как Multiply Virtual Storage и отражает
именно аспект управления памятью. Каждая задача в MVS (и в ее современных
наследниках) обладает собственным виртуальным АП. Размер этого АП составлял 16
Мбайт в ранних версиях ОС (24-битный адрес), 2 Гбайта, начиная с MVS/XA
(31-битный адрес) и 16 эксабайт в z/OS (64-битный адрес). Мы рассмотрим сначала
первые две модели адресации, а затем отдельно расскажем об "освоении"
системой 64-битного адреса.
Распределение
виртуального АП для 24- и 31-битого размера адреса показано на рисунке 12.6.
Нижняя часть виртуального АП занята системой, она перекрывается для всех АП, но
для прикладных программ недоступна. Верхняя часть виртуального 16-Мбайтного АП
- общая область памяти, занимаемая объектами, совместно используемыми разными
задачами. Это как разделяемые объекты данных, так и совместно используемые программные
коды, например, системные сервисные службы, такие как TSO и т.п. АП между этими
двумя областями является частным АП задачи. При расширении АП до 2 Гбайт
дополнительная часть общей области памяти, смежная со "старой"
появляется по другую сторону 16-Мбайтной границы, остальная часть
дополнительного АП является дополнительным частным пространством задачи. Таким
образом, задачи, в которых выполняются программы, разработанные для
24-разрядных версий MVS, видят привычную для себя структуру 16-Мбайтного АП,
задачи, созданные для новых версий, видят полную структуру 2-Гбайтного АП.
Размещение в памяти и выполнение программы определяется параметрами RMODE и
AMODE. Первый из этих параметров определяет размещение программы в нижней или
верхней части АП. Значение параметра AMODE отображается на соответствующий бит
PSW и определяет режим выполнения некоторых команд процессора, при AMODE=24
команды, работающие с адресами, используют 24-битный адрес, при AMODE=31 -
31-битный адрес. Каждая программная секция характеризуется своими параметрами
RMODE и AMODE, таким образом, режимы адресации могут изменяться и в ходе
выполнения одной задачи.
z/OS предоставляет также
приложениям возможности использовать дополнительные АП. Хотя реализации всех
этих возможностей используют описанные выше регистры доступа AR, с точки зрения
приложений их можно разделить на 4 направления:
коммуникации
"пересечения памяти" (cross memory communications);
явное использование
дополнительных АП (AR ACS mode);
пространства данных (data
spaces);
гиперпространства
(hiperspaces).
Коммуникации пересечения
памяти позволяют программе передавать управление в другое АП. Управление
передается не "напрямую", а через системный вызов (блок запроса SRB).
Различают синхронные и асинхронные коммуникации пересечения памяти.
В так называемом
первичном режиме AR-программа работает только с данными, расположенными в
первичном АП. В режиме же управления памятью через регистры доступа в режиме
ACS AR-программа может определять регистры AR, используемые для трансляции
адресов и, таким образом, употреблять обычные команды обращения к данным для
работы с параллельными АП. Программа, однако, не может передавать управление в
другое АП, для этого режим ACS AR надо комбинировать с коммуникациями
пересечения памяти.
Пространства данных и
гиперпространства являются дополнительными именованными АП размером от 4 Кбайт
до 2 Гбайт, используемыми только для размещения данных.
Программа, использующая
пространства данных, должна работать в режиме ACS AR. Она использует системные вызовы
для создания и удаления пространства данных и управления им, команды же,
выполняемые в основном АП, могут непосредственно манипулировать данными в
пространстве данных.
Программа, использующая
гиперпространства, может работать в первичном режиме AR. Она использует
системные вызовы для создания и удаления пространства данных и управления им, а
также для того, чтобы пересылать данные между гиперпространством и основным АП.
Обмен между первичным АП и гиперпространством ведется 4-Кбайтными блоками.
Пространства данных или
гиперпространства могут содержать также и программные коды, но передавать
управление на эти коды непосредственно программа не может. Для выполнения эти
коды должны быть пересланы в буфер в первичном АП. Физически оба вида пространств
могут размещаться как в основной, так и в расширенной памяти, но для
пространства данных предпочтение отдается основной памяти, а для
гиперпространства - расширенной. Для управления пространствами данных система
использует те же механизмы страничного обмена, что и для первичного АП.
Поскольку же манипулирование данными в гиперпространстве несколько ограничено,
для управления гиперпространством используются более простые и более
эффективные алгоритмы.
В z/OS имеется также
механизм отображения в память объектов данных (data-in-virtual), аналогичный
файлам, отображаемым в память, в Unix. Этот механизм позволяет назначить
"окно" виртуальных адресов, просматривать в этом окне нужную часть
объекта данных и перемещать окно по мере необходимости. Отображение данных
возможно (и предпочтительно) в пространство данных или в гиперпространство.
Приложение получает
память в своем виртуальном АП, используя системные вызовы явного (GETMAIN или
STORAGE) или неявного выделения памяти. Управление выделением памяти ведется при
помощи так называемых подпулов. Подпулы состоят из 4-Кбайтных блоков памяти и
формируются динамически: блоки добавляются в подпул или удаляются из него по
мере необходимости. Система удовлетворяет каждый запрос на выделение памяти из
одного блока (разумеется, кроме тех случаев, когда размер запроса превосходит
размер блока). При размещении небольших запросов система ищет свободное место в
уже выделенных блоках по принципу "самый подходящий" и лишь при
невозможности удовлетворить запрос таким образом выделяет новый блок.
При создании любой задачи
для нее обязательно создается подпул 0, но в задаче может быть создано и
большее число подпулов. Любой подпул может использоваться только одной задачей
или разделяться несколькими задачами. Подпул 0 разделяется задачей со всеми ее
подзадачами, но если подпул 0 задачи определен как неразделяемый, для каждой
подзадачи будет создаваться свой подпул 0. Монопольно используемые подпулы
освобождаются с окончанием задачи, которая ими владеет. Разделяемые подпулы
сохраняются, пока сохраняется хотя бы одна из использующих их задач.
"64-разрядная
революция" аппаратуры мейнфреймов осваивается z/OS за несколько шагов.
Первый шаг, сделанный в
z/OS V1R1, обеспечил 64-битное управление реальной памятью, что позволило
уменьшить страничный обмен и ограничения на память для прежних 31-разрядных
приложений.
Со второго шага,
сделанного в z/OS V1R2, обеспечивается поддержка 64-битной адресации в одном
АП. Качественно картина виртуальной памяти приложения остается такой же, как и
представленная на рисунке 12.6, но выше границы 2 Гбайт, называемой
"планкой" (bar) появляется дополнительная часть частного АП. Любая
31-битная программа может теперь получать виртуальную память за планкой и
манипулировать данными в этой памяти. Программа по-прежнему размещается в
пределах 2 Гбайт, виртуальная память выше планки предназначена только для
данных. Новый язык Ассемблера включает в себя новые команды для работы с
данными за планкой и манипулирования с 64-разрядными регистрами общего
назначения. Системные вызовы для работы с данными за планкой включают в себя
прежние механизмы выделения и освобождения памяти - для совместимости со
старыми программами, но система управляет пространством выше планки как
объектами данных. В новых механизмах программа создает за планкой объекты
данных, размер которых кратен 1 Мбайту. В V1R2 объекты данных не могут
совместно использоваться в разных АП.
Третий шаг (z/OS V1R3)
состоит во внедрении AMODE=64. В сочетании с новыми возможностями Редактора
Связей и Загрузчика этот режим позволяет создавать полностью 64-разрядные
программы.
Четвертый шаг, который
будет реализован в следующей версии z/OS, - обеспечение возможности разделения
объектов данных, размещенных за планкой между разными АП.
Параллельно с введением
64-разрядных возможностей в системные сервисы и низкоуровневое программирование
они внедряются и в инструментальные средства (C/C++, Java), и в основные
продукты промежуточного программного обеспечения (DB2, WebSphere и др.).
Управление процессами
АП в z/OS создается для
задания. Как и в VSE, задание в z/OS состоит из нескольких последовательно
выполняющихся программ - шагов задания. Для каждого шага задания создается
задача (процесс). Структурой, представляющей задачу в системе, является блок
управления задачей TCB (Task Control Block). Задача может порождать новые
задачи (подзадачи) при помощи системных вызовов ATTACH (подзадача выполняется в
первичном режиме AR) или ATTACHX (подзадача выполняется в режиме ASC AR).
Порождаемые таким образом подзадачи имеют собственные блоки TCB и, таким
образом, представляются как полноценные задачи, но все они выполняются в том же
АП, что и породившая их задача. Порожденная подзадача выполняется параллельно с
породившей и может порождать собственные подзадачи. Между задачей и ее подзадачами
устанавливаются отношения "предок - потомок". Задача и ее подзадачи
выполняются асинхронно, но выполнение задачи-предка может быть и
синхронизировано с завершением задачи-потомка. Подзадача может порождаться с
параметрами ECB или/и EXTR. Первый параметр назначает для подзадачи Блок
Управления Событием (Event Control Block), в котором делается отметка о
завершении подзадачи. Если подзадача создается с параметром ECB, ее TCB не
удаляется с ее завершением, а сохраняется до тех пор, пока информация о
завершении не будет востребована задачей-предком. Задача-предок может ожидать
завершения потомка и получить информацию о его завершении, применяя системный
вызов WAIT, параметром которого является ECB потомка. Параметр EXTR позволяет
определить в задаче-предке процедуру, которая автоматически выполняется при
завершении данного потомка.
Приоритеты выполнения
определяются на двух уровнях:
приоритет АП;
приоритеты задач и
подзадач.
Приоритет АП, как
правило, определяется ОС из соображений обеспечения наилучшей загрузки системы
(см. ниже). Однако этот приоритет может быть назначен и пользователем в
операторах языка управления заданиями. Приоритет пользователя назначается
дифференцированно для каждого шага задания. Приоритет АП, установленный
пользователем для шага задания, во время выполнения шага изменяться в программе
не может, но может меняться ОС.
Создавая задачу для шага
задания, ОС присваивает ей диспетчерский (текущий) и граничный приоритеты.
Подзадача по умолчанию наследует приоритеты своего родителя, но ей могут быть
назначены и собственные приоритеты. Приоритеты подзадач могут меняться в
программе системным вызовом CHAP. Приоритеты задач/подзадач, однако, никак не
влияют на то, в каком порядке выбираются на выполнение программы - этот порядок
определяется только приоритетом АП. Приоритеты же подзадач влияют на порядок их
выборки на выполнение в пределах процессорного обслуживания, выделяемого для
АП. В этих пределах приоритеты подзадач являются абсолютными: на выполнение
выбирается подзадача с наивысшим приоритетом, текущая активная подзадача
немедленно вытесняется, если подзадача с более высоким приоритетом приходит в
состояние готовности.
Средства взаимодействия
Выше мы упомянули о
блоках ECB, используемых для синхронизации выполнения задачи и ее подзадач.
Однако блоки ECB являются более универсальным средством синхронизации
выполнения. ECB используется с системными вызовами WAIT, POST и EVENTS.
Системный вызов POST сигнализирует о совершении события, системные вызовы WAIT
и EVENTS задерживают выполнение задачи до совершения одного или нескольких
событий.
Для взаимного исключения
доступа к ресурсам из разных программ используются системные вызовы ENQ и DEQ.
В первом приближении их можно считать эквивалентным семафорным операциям P и V
соответственно. При употреблении этих системных вызовов задается имя ресурса и
масштаб. Имя (оно состоит из двух частей) в документации IBM называется именем
ресурса, но на самом деле это скорее имя семафора, имена в операциях ENQ/DEQ
назначаются произвольно и не имеют никакой связи с действительными именами
ресурсов. Масштаб определяет область видимости ресурса:
масштаб STEP означает,
что ресурс доступен только в данном АП;
масштаб SYSTEM означает,
что ресурс доступен во всех АП, но только в данной вычислительной системе;
масштаб SYSTEMS означает,
что ресурс доступен во всех АП всех вычислительных систем sysplex'а.
Комбинация имени ресурса
и масштаба должна быть уникальной.
В отличие от обычных
семафорных операций, системный вызов ENQ может выполняться в монопольном или
разделяемом режиме, что соответствует классической задаче
"читатели-писатели". Любое число задач может одновременно получать
доступ к ресурсу в разделяемом режиме, только одна задача может иметь доступ к
ресурсу в монопольном режиме.
Системный вызов ENQ может
также выполняться и с условием. Предусмотренные для ENQ условия могут
обеспечивать:
проверку состояния
ресурса без его захвата;
захват ресурса только в
том случае, если он немедленно доступен;
изменение режима захвата
с разделяемого на монопольный;
захват ресурса только в
том случае, если программа еще им не владеет.
Задачи, задержанные при
выполнении операции ENQ, образуют очереди к ресурсам, которые обслуживаются по
дисциплине FCFS. Размер такой очереди может быть, однако, ограничен, в этом
случае попытка выполнения запроса ENQ, который переполнит очередь, приводит не
к блокированию программы, а к завершению запроса с признаком ошибки.
Попытка захвата ресурса,
которым программа уже владеет, приводит к аварийному завершению программы. Ответственность
за обход тупиков лежит на программисте.
Системные вызовы в z/OS
выполняются системными сервисными процедурами. Такая процедура представляется в
системе Блоком Сервисной Процедуры SRB (Service Routine Block). SRB во многом
аналогичен TCB, но SRB не может владеть АП. Однако SRB может получать и
использовать память в АП вызвавшей его задачи и в системном АП. После вызова
процедуры и создания для нее SRB сервисная процедура может выполняться
параллельно с вызвавшей ее программой (даже с реальным параллелелизмом - на
разных процессорах). Все системные процедуры являются реентерабельными и,
следовательно, могут быть прерваны в ходе своего выполнения.
Подсистемы и управление
ресурсами
Прежде чем рассмотреть
принципы распределения ресурсов в системе, дадим краткие характеристики
некоторым (далеко не всем) подсистемам в составе z/OS.
Подсистема ввода заданий
JES (Job Entry Subsystem) обеспечивает выполнение пакетных заданий. Ее функции
во многом аналогичны подсистеме POWER в VSE. JES интерпретирует операторы языка
управления заданиями JCL и управляет очередями. В системе могут быть запущены
несколько копий JES, каждая из которых создает свой системный образ. Имеются
две версии JES - JES2 и JES3, которые различаются тем, что в JES2 выполняется
независимое управление каждой запущенной копией, в JES3 осуществляется
централизованное управление всеми копиями.
Подсистема разделения
времени TSO/E (Time Sharing Option/Extention) - основной интерактивный
интерфейс z/OS. TSO/E обеспечивает для конечных пользователей, программистов и
администраторов набор команд и полноэкранных возможностей для подготовки
программ, подготовки и выполнения заданий, выполнения управления системой. Как
обязательная часть z/OS, TSO/E является базой для ряда других системных
сервисов, таких как Book Manager, Hardware Configuration Definition и другие.
z/OS UNIX System Services
обеспечивают использование z/OS как сверхмощного Unix-сервера. Службы
приложений z/OS UNIX System Services включают в себя командный интерпретатор
shell, утилиты и отладчик. Набор команд и утилит полностью соответствует
спецификациям стандарта Single Unix Specification, известного также как Unix
95. Это позволяет программистам и пользователям, даже не знающим команд z/OS,
взаимодействовать с z/OS как с Unix-системой. Отладчик предоставляет
программистам набор команд для интерактивной отладки программ, написанных на
языке C. Этот набор подобен аналогичным командам, существующим в большинстве
Unix-систем. Службы ядра z/OS UNIX System Services совместно с языковыми средами
обеспечивают соответствующий Single Unix Specification API для программирования
на языке C, многопоточность и средства разработки клиент/серверных приложений.
Это обеспечивает возможность программирования для z/OS как для Unix и переноса
в z/OS приложений, созданных для Unix.
Еще MVS прошла
сертификацию по стандартам POSIX, Single Unix Specification и OSF/1. Таким
образом, z/OS соответствует Unix-ориентированным стандартам лучше, чем
большинство систем, относящихся к семейству Unix, и является наилучшим
Unix-суперсервером.
Планированием
распределения ресурсов занимается Менеджер Системных Ресурсов - SRM (System
Resource Manager), являющийся компонентом BCP. SRM определяет, какие АП получат
доступ к системным ресурсам, и ту долю системных ресурсов, которая будет
выделена каждому АП. SRM распределяет ресурсы между АП в соответствии с
приоритетными требованиями, заданными в параметрах инсталляции, и стремится
достичь оптимального использования ресурсов с точки зрения производительности
системы. При определении параметров функционирования SRM работы, выполняемые в
системе, разбиваются на группы, называемые доменами. Домены характеризуются
общими характеристиками работы, и общим для домена показателем важности. Каждое
выполняющееся АП попадает в тот или иной домен - пакетное задание, транзакция
IMS, транзакция DB2, короткая или длинная команда TSO и т.д. Управление
доменами дает возможность:
Страницы: 1, 2, 3, 4, 5, 6
|