Блог → Моделирование компонентов виртуальных машин

Грамотное программирование в ПДО предполагает определенные знания об организации и функционировании СВМ. Система виртуальных машин ЕС - это комплекс программных средств, предназначенный для управления ЭВМ Ряда-2 и Ряда-3 ЕС, и позволяющий реализовать на одной ЭВМ параллельную работу нескольких (а быть может, и многих) виртуальных машин. Главным компонентом СВМ, управляющим работой всей системы в целом и ответственным за обслуживание виртуальных машин, является МВМ.

Типовая конфигурация ЭВМ (как реальной, так и виртуальной) включает в себя центральный процессор, оперативную память, каналы ввода-вывода и устройства ввода-вывода (УВВ). Применительно к виртуальной машине все эти устройства являются виртуальными и моделируются МВМ, естественно, с применением реальных устройств реальной ЭВМ. Используются четыре метода моделирования: разделение, закрепление, накопление и чисто программное моделирование. Разделение представляет собой такой метод, когда реальное устройство разделяется между несколькими ВМ. Закрепление сводится к тому, что определенная ВМ монополизирует определенное реальное устройство (при этом фактически никакого моделирования нет, виртуальное устройство может отличаться от реального, на которое оно отображается, лишь адресом, т.е. адрес этого виртуального устройства в соответствующей ВМ, также называемый виртуальным, может отличаться от адреса соответствующего реального устройства в реальной ЭВМ). Накопление представляет собой метод моделирования так называемых "устройств единичных записей", к которым относятся печатающие устройства (АЦПУ), устройства ввода с перфокарт и вывода на перфокарты. Наконец, некоторые специфические устройства, например адаптер канал - канал, моделируются чисто программными методами.

Давайте рассмотрим, как моделируются МВМ различные компоненты ВМ. Виртуальный процессор моделируется методом разделения - виртуальным машинам поочередно выделяется квант времени реального процессора. Переключение процессора с одной ВМ на другую осуществляется при завершении кванта времени, выделенного первой ВМ, или в случае прерывания при работе первой ВМ до истечения выделенного ей кванта. Последовательность выделения квантов определяется МВМ исходя из текущих характеристик вычислительного процесса. В зависимости от частоты прерываний через АП все активные ВМ разделяются на две группы: диалоговые с частыми прерываниями через АП, и недиалоговые с редкими прерываниями через АП. На время пребывания в активном состоянии каждой ВМ предоставляется серия квантов, называемая интервалом. Диалоговым ВМ предоставляются короткие интервалы, но относительно часто, недиалоговым - длинные интервалы, но редко. По ходу сеанса ВМ может переходить из диалогового состояния в недиалоговое и обратно. Интересующихся вопросами планирования времени реального процессора более подробно отсылаем к программной документации СВМ ЕС.

Виртуальная память ВМ также моделируется с помощью одного из вариантов метода разделения -отображения этой памяти на оперативную и внешнюю память ЭВМ, с использованием аппаратуры страничной памяти и динамической трансляции адресов, встроенной в ЕС ЭВМ Ряд-2 и Ряд-3. Вопросы реализации виртуальной страничной памяти освещены в литературе достаточно подробно, и предполагается, что большинство читателей с ними знакомы. Поэтому здесь страничный обмен рассматривается кратко.

Виртуальная память ВМ разбивается на участки размером 4096 байт (4 Кбайт), называемые страницами. Адрес каждой страницы кратен 4 Кбайт (нулевая страница начинается с адреса 0, первая - с адреса 4096, вторая - с 8192 и т.д.). Оперативная память реальной ЭВМ, на которой работает СВМ ЕС, разбивается на участки размером 4096 байт, называемые страничными рамками, а внешняя память на устройствах прямого доступа, предназначенная для хранения страниц, вытесняемых из оперативной памяти - на блоки длиной 4096 байт, называемых страничными гнездами. Для каждой виртуальной машины МВМ поддерживает набор так называемых таблиц переадресации и таблиц обмена, позволяющий выполнить все описанные ниже действия. Любое обращение по виртуальному адресу в виртуальной машине, выполняется следующим образом (замечу, что те действия, которые особо не оговорены, выполняются аппаратно, без участия МВМ).

1. По таблицам переадресации определяется, находится ли страница виртуальной памяти, содержащая требуемый адрес, в оперативной памяти, т.е. содержит ли эту страницу одна из страничных рамок. Если содержит, то дальнейшая работа производится о содержимым найденной страничной рамки, а перечисленные ниже действии не выполняются.

2. Если нужной страницы нет в оперативной памяти, то возникает прерывание типа "нет страницы", обрабатываемое МВМ. Сначала МВМ ищет свободную страничную рамку, доступную для размещения требуемой страницы. Если такая рамка отыскивается, то она помечается как занятая, производится соответствующее изменение таблиц переадресации и рамка заполняется содержимым требуемой страницы (обычно извлекаемым из внешней страничной памяти, куда страница оказалась вытесненной ранее). Далее, естественно, работа ведётся с содержимым данной страничной рамки, а действия, описанные ниже, не выполняются.

3. Если же доступной свободной страничной рамки нет (а это самый распространенный случай), то МВМ освобождает для требуемой страницы одну из страничных рамок, занятых в настоящий момент. Выбирается такая страничная рамка, к которой по сравнению с другими дольше всего не было обращений. Затем по таблицам обмена проверяется, имеется ли копия страницы, находящейся сейчас в данной рамке, во внешней страничной памяти, и если имеется, то осталось ли неизменным содержимое страничной рамки, со времени записи в неё образа страницы из внешней памяти (факт изменения содержимого страничной рамки также фиксируется в соответствующей таблице). Если да, т.е. копия страницы есть во внешней памяти и совпадает с текущим содержимым страничной рамки, то с найденной страничной рамкой производятся те же действия (описанные выше), как если бы это была свободная рамка.

4. Если же копии найденной страницы нет во внешней памяти, либо эта страница изменена со времени её считывания в память, то МВМ отыскивает во внешней памяти свободное страничное гнездо и записывает туда текущее содержимое страницы, затем соответствующим образом изменяет таблицу обмена, и только потом использует освобождённую страничную рамку для размещения требуемой страницы.

Перейдём к вопросам моделирования прочих компонент ВМ. Виртуальные каналы моделируются либо методом разделения, либо методом закрепления. Если за какой-либо ВМ закрепляется целый реальный канал, то за ней автоматически закрепляются все УВВ, подключённые к этому каналу. Виртуальные накопители на магнитных дисках (НМД) иногда моделируются методом закрепления, но чаще - методом разделения. При этом используется своеобразная идея "мини-дисков", т.е. виртуальных дисков, представляющих собой часть реального дискового тома, но форматируемых так, как если бы это были целые пакеты. Дисковый том может разделяться на мини-диски, принадлежащие различным ВМ. Кроме того, использование отдельных мини-дисков может осуществляться совместно несколькими ВМ. В дальнейшем изложении там, где ничего не оговаривается особо, термины "диск" и "мини-диск" я буду употреблять на равных правах, и оба они будут обозначать "виртуальный диск" вообще.

Виртуальные "накопители на магнитной ленте (НМЛ) всегда реализуются в СВМ ЕС методом закрепления. Так как количество реальных НМЛ в вычислительной системе обычно невелико, то оператор СВМ должен оперативно отслеживать требования ВМ на выделение им виртуальных накопителей, и своевременно переключать реальные НМЛ по мере завершения работы с ними в одних виртуальных машин, для удовлетворения запросов других.

В литературе по СВМ ЕС принято объединение печатающих устройств, устройств ввода с перфокарт и вывода на перфокарты, в группу так называемых "устройств единичных записей". Иногда виртуальные устройства единичных записей моделируются методом закрепления, но чаще используется метод накопления, позволяющий более эффективно организовать ввод-вывод информации через эти устройства при одновременной работе многих ВМ и наличии ограниченного количества реальных устройств единичных записей. Суть метода накопления в том, что виртуальные устройства единичных записей, моделируются дисковыми файлами, сгруппированными вместе в так называемые "области накопления". Операция ввода-вывода, выполняемая на ВМ и связанная с устройствами единичных записей, реально разбивается два на этапа. При вводе - сначала передача данных с реального устройства в область накопления (на виртуальное устройство), затем из области накоплений в виртуальную память соответствующей машины. При выводе - из виртуальной памяти виртуальной машины в область накопления, а затем из области накопления на реальное устройство.

Виртуальный пульт оператора виртуальной машины моделируется с помощью локального или удалённого АП типа ЕС7920, а также с помощью эквивалентного устройства, например персонального компьютера ЕС1841. В качестве АП могут использоваться и устройства типа пишущих машинок, хотя это архаично, и разумеется, не очень удобно. Заметьте, что продвижение информации по экрану дисплея, используемого как виртуальный пульт оператора, организовано так же, как в пишущей машинке, продвигающей бумагу при печати новой строки. Поскольку ВМ работает так же, как и реальная ЭВМ, то в виртуальную машину можно загружать любую операционную систему или системно-независимую программу, предназначенную для работы на ЕС ЭВМ. Это и позволяет создавать условия для одновременной работы (естественно, под управлением МВМ) нескольких виртуальных машин, в которые загружены разные операционные системы.

Каким же образом МВМ при регистрации виртуальной машины узнаёт требуемую конфигурацию, которую он должен создать? Совершенно ясно, что в системе должен быть специальный файл, хранящий нужную для него информацию. В СВМ ЕС этот файл называется оглавлением. Оглавление содержит элемент, полностью описывающий ВМ, которую можно зарегистрировать в текущий момент. Важно, что оглавление не является жёстко зафиксированным и может быть изменено в любой момент работы СВМ. Системному программисту, ответственному за ведение оглавления, предоставляются средства анализа и корректировки оглавления в исходном (текстовом) виде.



В примере выше приведён текст элемента оглавления, описывающего виртуальную машину OS. Программа, непосредственно преобразующая текстовое представление оглавления и закодированный файл МВМ, использует специальный язык описания виртуальной машины, предложения которого и образуют строки описания. Первая строка любого элемента оглавления содержит предложение USER, определяющее идентификатор ВМ, пароль, необходимый для её регистрации, а также некоторые другие характеристики ВМ. Этих характеристик довольно много, но мы ограничимся рассмотрением только тех, которые приведены в данном примере.

Понятно, что операнды 512K и 4M определяют некоторые ёмкости памяти. Первое число - это ёмкость виртуальной памяти машины, принимаемая по умолчанию. Поскольку пользователь (речь об операторе ВМ) может динамически изменять ёмкость памяти ВМ при работе СВМ ЕС, то второе число - максимально допустимая ёмкость виртуальной памяти данной ВМ.

Последний операнд в строке определяет, какие команды МВМ может выдавать оператор данной ВМ. Все команды МВМ подразделяются на несколько классов, каждый из которых обозначается одной латинской буквой и соответствует определённой категории пользователей СВМ ЕС. Буква G обозначает категорию "обычный пользователь". Предложение ACCOUNT описывает некоторые параметры, применяемые при сборе статистических данных о работе ВМ.

Предложение CONSOLE описывает виртуальный пульт управления ВМ. Структура этого предложении такова: за ключевым словом CONSOLE следует виртуальный адрес пульта управления и его тип (т.е. тип устройства, используемого в качестве пульта управления). Обратите внимание, что указав тип 7077 (ЕС7077, буквы ЕС не кодируются), иначе говоря, устройство типа пишущей машинки, что соответствует сказанному ранее о моделировании виртуального пульта.

Предложения SPOOL описывают виртуальные устройства единичных записей, моделируемые методом накопления. Структура предложения такова: ключевое слово SPOOL, виртуальный адрес устройства и коды обрабатываемых устройством классов ввода или вывода (эти классы в общем сходны с классами системного ввода и вывода, принятыми в ОС ЕС). Код * обозначает маску "все классы".

Предложения MDISK описывают мини-диски, наиболее часто или всегда используемые при работе данной ВМ (например, резидентные диски операционной системы). Структура предложения: ключевое слово MDISK, виртуальный адрес мини-диска, а дальше - параметры (всего их четыре), определяющие, на каком реальном дисковом томе и в каком месте этого тома находится данный мини-диск. Первый параметр - тип реального НМД, на котором устанавливается соответствующий дисковый том. Следующие два параметра указывают, с какого цилиндра реального тома начинается мини-диск и сколько цилиндров он занимает. Последний параметр этой группы определяет метку тома, на котором находится мини-диск.

И наконец, последняя группа параметров определяет режим (код) доступа к минидиску и пароли, которые должны вводиться пользователем другой ВМ при попытке присоединения данного мини-диска к конфигурации своей ВМ. Если другие ВМ могут присоединять диск только по чтению (код R или RR), то указывается один пароль, а если и по чтению и записи (код W или WR), то два пароля (первый используется для доступа по записи, второй - для доступа по чтению).

Тип виртуального НМД во всех случаях совпадает с типом реального НМД, моделирующего первый, за следующими исключениями: обеспечивается моделирование виртуальных НМД типа ЕС5050 (емкостью 7,25 Мбайт), вообще не поддерживаемых СВМ ЕС, с помощью реальных НМД ЕС5061, ЕС5066, ЕС5067 и выше (т.е. более ёмких), а также виртуальных НМД типа ЕС5061 с помощью реальных НМД ЕС5066, ЕС5067 и выше. И наконец, обращаю ваше внимание, что последняя строка элемента оглавления для виртуальной машины OS содержит предложение IPL 150, которое указывает, что по окончании регистрации этой ВМ будет автоматически запущена начальная загрузка с мини-диска с виртуальным адресом 150, т.е. с резидентного тома операционной системы ОС ЕС.