Организация доступа пользователей к двухуровневой памяти в многофункциональной операционной системе ЭВМ М-10
А. Ю. Кривцов, А. А. Нестеров
Рассмотрены вопросы организации асинхронного с выполнением программ обмена информацией между внешними устройствами и математической памятью и обеспечения доступа нескольких пользователей к одной копии общей для них программы.
В многофункциональной операционной системе (ОС) ЭВМ М-10, обеспечивающей совмещение режима реального времени для основной задачи (ОЗ) и режима разделения времени для задач пользователей [1], двумя важнейшими компонентами являются подсистема коллективного доступа (КД) и подсистема управления памятью и задачами (УПЗ). В настоящей статье рассматриваются две сформулированные ниже проблемы, возникающие при построении интерфейса между данными подсистемами. Первая проблема связана с организацией доступа к математической памяти задач в процессе асинхронного с их счетом ввода-вывода, вторая — с поддержкой “реентерабельности” общей для нескольких пользователей транзитной программы (например компилятора).
Предварительно следует отметить, что внутренняя память ЭВМ М-10 состоит из главной (оперативной и постоянной) и большой памяти. С центральным процессором (ЦП) сообщается только главная память, имеющая независимый доступ для каждого из составляющих ее блоков (1 блок равен 64 Кбайт), номера которых определяются старшими разрядами адреса, причем каждый блок делится на 8 равных листов. Программы пользователей и ОЗ могут обращаться по физическим (реальным) адресам только к постоянной памяти, в остальных случаях они оперируют с математической памятью, имеющей суммарный распределяемый объем внутренней памяти, объединенной сквозной адресацией.
Математическая память сегментирована так, что ЦП предоставляется программе только после подкачки ее текущего сегмента (ТС) в оперативную память. ТС состоит из одной или нескольких единиц распределения памяти (ЕРП) равного объема — Vерп, набор которых предварительно указывается пользователем с терминала или динамически из самой задачи. Перемещение ТС между уровнями памяти, отображение математических адресов в физические осуществляется аппаратными средствами под руководством программ УПЗ.
Программные средства КД, реализованные в ОС, разбиты на три основных блока: драйвер, диспетчер коллективного доступа (ДКД) и диспетчер второго уровня (ДВУ) [2; 3]. Драйвер управляет каналами и обеспечивает минимально необходимую реакцию при выполнении определенных условий (например при заполнении буферов) в процессе непрерывного ввода-вывода. Резидентный, системный ДКД периодически захватывает остающееся от ОЗ время ЦП, управляя вводом-выводом на логическом уровне, организуя обработку и исполнение директив базового машинно-ориентированного языка диалога и специальных директив для отладки ОЗ. Нерезидентный ДВУ руководит диалогом с системой программирования, базами данных, сервисными программами.
Следует отметить еще и тот факт, что при выводе информации ее форматирование и перекодировка из внутренних кодов ЭВМ в удобный для пользователей десятичный или восьмеричный вид, представленный в кодах внешних устройств (а при вводе — обратная перекодировка), требуют значительного времени ЦП. Ее следует производить не на времени ОЗ (при выполнении ввода-вывода по требованию ОЗ), а на остающемся от ОЗ времени ЦП и на системных ресурсах, последнее удобно и для задач обычных пользователей.
Построение интерфейса между подсистемами КД и УПЗ требует разрешения проблемы, которая заключается в том, что сегмент памяти, в который осуществляется ввод или из которого осуществляется вывод информации, может находиться не только в оперативной или большой памяти, но и в процессе обмена между ними. Например, вывод в интересах некоторой задачи, выполняемый асинхронно с ее счетом, может продолжаться после завершения выделенного ей кванта времени ЦП и вытеснения ее ТС из оперативной памяти другой задачей или наоборот при подкачке ТС первой задачи в оперативную память для предоставления ей ЦП. При этом соответствие математических и физических адресов, установленное в начале обмена между мультиплексным каналом и внутренней памятью и отображающее в этот момент реальное распределение памяти, в дальнейшем может нарушиться. В результате информация начнет поступать в память или выбираться из памяти другой задачи.
Для решения указанной проблемы применяются различные методы. В системе виртуальной памяти ЕС ЭВМ-2 все необходимые для ввода-вывода страницы фиксируются в физической памяти от момента запуска операции ввода-вывода до ее успешного завершения [4]. В ОС разделения времени ЭВМ М-10 [5; 6] используется аппаратная возможность машины, которая позволяет осуществлять автоматическую пере-, адресацию информации ввода-вывода в новую область памяти при изменении соответствия между математическими и физическими адресами в процессе свопинга (обмене между уровнями памяти одновременно в обе стороны).
Применение этих методов в рассматриваемой системе оказывается неприемлемым, поскольку фиксация памяти означала бы невозможность принять и удовлетворить требование ОЗ на смену ТС во время ввода или вывода ее информации и приводила бы к замедлению реакции ОЗ на внешние воздействия даже в отсутствие фонового КД. Использование же аппаратного средства переадресации ЭВМ М-10 возможно только при свопинге, применение которого в системах с повышенными требованиями к надежности нерационально, поскольку свопинг не позволяет повторить сбойный обмен.
Для решения указанной проблемы можно предложить компромиссный вариант, при котором память фиксируется, но не на все время ввода-вывода, а лишь на ряд кратких моментов в течение этого времени. Использование данного варианта при учете концепции выполнения перекодировки на системных ресурсах времени и памяти предполагает квантование информации по объему в процессе непрерывного ввода-вывода и буферизацию ее следующим образом.
При вводе канал заносит поступающую информацию в небольшой буфер объема Vбуф, и при его заполнении драйвер выставляет для ДКД соответствующий признак, а канал продолжает ввод в следующий свободный буфер. Как только ДКД захватит ЦП, он обнаруживает выставленный ему признак, организует перекодировку информации первого буфера, освобождая его и готовя в своем рабочем поле текст во внутреннем коде ЭВМ [2]. Так как работа ЦП, каналов ввода-вывода и аппарата обмена между уровнями памяти представляют собой три асинхронных процесса, а информация в математическую память еще не поступала, то в фиксации памяти необходимости не было.
Однако потом ДКД должен переслать подготовленную информацию из своего рабочего поля в математическую память задачи; здесь память фиксируется, но только на время пересылки. Так как скорость пересылки во внутреннюю память велика, а порция информации мала, то фиксация происходит лишь на краткий момент времени. Затем фиксация потребуется после заполнения каналом следующего буфера или поступлении символа конца информации, когда ДКД выполнит те же действия, но уже на другом своем кванте.
Для выполнения пересылки ДКД обращается к подсистеме УПЗ, а конкретно к ее программе, реализующей системный доступ к памяти (СДП), которая по таблицам распределения памяти определяет физический адрес, соответствующий требуемому математическому, и инициирует обмен. Причем в рассматриваемом методе моменты фиксации памяти необходимы не только для сохранения соответствия математических и физических адресов, но также и потому, что пересылка информации ввода-вывода между рабочим полем ДКД (резидентной оперативной памятью) и математической памятью задачи может потребовать аппарата обмена между уровнями памяти. Тогда программа СДП должна иметь встроенную в себя задержку на занятость аппарата обмена так, что если для пересылки информации необходим аппарат обмена, а он занят подкачкой ТС некоторой задачи, то выполнение требования ДКД на обмен информацией ввода-вывода задерживается до окончания данной подкачки и корректировки таблиц распределения памяти.
Для уменьшения простоя ЦП требование ДКД следует выполнять по окончании обмена одной ЕРП этого ТС. Тогда завершение обмена информацией ввода-вывода должно сопровождаться тем, что подсистема УПЗ инициирует приостановленный обмен следующими ЕРП текущего сегмента и возвращает управление программам ДКД. При этом ДКД продолжит выполнение своих функций, заняв ЦП, а подкачка следующих ЕРП займет аппарат обмена.
Таким образом, задержка подкачки ТС некоторой задачи обменом в интересах ввода-вывода позволяет интенсивно использовать возможность асинхронной работы ЦП, аппарата обмена и каналов ввода-вывода. Но для того чтобы влияние ввода-вывода на длительность подкачки ТС и, как следствие, на функционирование задач было незаметным, необходимо, чтобы время обмена порцией информации ввода-вывода было намного меньше времени обмена одной ЕРП, т. е. должно выполняться соотношение Vбуф<<Vерп.
Интересно отметить, что, несмотря на аппаратные возможности выбора в качестве ЕРП одного листа, в рассматриваемой ОС принято более крупное блочное распределение памяти. Первоначально предполагалось, что, поскольку ОС ориентирована в первую очередь на крупные задачи реального времени, то блочное распределение окажется эффективным для ОЗ. Действительно, оно позволяет:
- упростить программы УПЗ как из-за уменьшения таблиц распределения памяти, так и потому, что нет необходимости в выполнении аппаратного требования размещения листов одного математического блока памяти в одном физическом блоке;
- улучшить временные характеристики работы ОЗ, поскольку упрощение УПЗ ведет к уменьшению системных затрат времени, отбираемых у ОЗ программами распределения памяти, более приоритетными, чем ОЗ.
Если распределение памяти ОЗ произвести так, чтобы отдельные ее программы, требующие при своем запуске смены ТС, находились; каждая в своих блоках и занимали большую часть этих блоков, то блочное распределение окажется самым приемлемым. Однако при большой сложности программ ОЗ полностью такое распределение памяти ОЗ реализовать невозможно. Поэтому в рассматриваемой системе не редки ситуации, когда при работе ОЗ блоки, включаемые в какой-либо ТС, содержат и ненужную для работы на данном ТС информацию, подкачка которой занимает лишнее время и отчасти снижает эффективность функционирования ОЗ, По-видимому при модернизации ОС в качестве ЕРП будет взята менее крупная единица.
При определенных условиях из-за меньшего числа прерываний по концам обмена каждой ЕРП блочное распределение может улучшить временные характеристики работы ОЗ, даже если некоторая часть блоков ТС содержит ненужную информацию. Пусть t1 — время подкачки одного листа; t2 — время обработки прерывания по концу обмена одной ЕРП. Тогда при листовом распределении памяти подкачка информации, содержащейся в n листах одного ТС, займет время n(t1+t2). Предположим теперь, что в качестве ЕРП взята единица из N листов, а та же, что и в первом случае, информация содержится в i таких ЕРП (i не больше n). Время их подкачки равно i(Nt1+t2). Во втором случае подкачка займет меньшее время, если i(Nt1+t2)<n(t1+ t2). Подставляя сюда близкие к реальным t1=0,5 мс, t2=0,25 мс, получим
n > i/3(2N+1) (1)
При блочном распределении N=8, откуда n>5,66i. Следовательно, если в одном блоке содержится более пяти листов (а в двух блоках — более одиннадцати листов и т. д.) необходимой для включения в один ТС информации, то по сравнению с листовым блочное распределение ускоряет процесс обмена.
При N=4 (одна ЕРП содержит четыре листа) из (1) получаем n>3i. Т. е., если в четырех смежных листах содержится более трех листов необходимой для включения в один ТС информации, то четырехлистовое распределение более выгодно, чем листовое.
Интерфейс между ДКД и УПЗ имеет еще одну особенность, связанную с выполнением заданий машинно-ориентированного языка диалога, предназначенных для анализа или изменения состояния программно-доступных регистров ЭВМ, а фактически — ячеек фотографии задачи. Для реализации быстрой реакции ЭВМ на запросы ОЗ фотографии системных задач и ОЗ должны храниться в резидентной памяти. В то же время ЭВМ М-10 имеет большое число программно-доступных регистров с широким форматом. Из-за большого объема каждой фотографии хранить все пользовательские фотографии в резидентной памяти невозможно (фотография, как и ТС задачи, подкачивается в оперативную память к моменту предоставления ЦП этой задаче). Поэтому выполнение директив анализа или изменения состояния регистров требует в общем случае обмена между уровнями памяти и так же, как ввод-вывод, должно осуществляться через обращения к программе СДП.
Таким образом, программа СДП выполняет заявки обмена небольшими порциями информации, источники и приемники которой могут иметь адреса математической, физической памяти, пространства фотографий и, возможно, других системных структур. Тип системной структуры указывается в адресах заявки к СДП в виде тегов. Хранение тегированных адресов в таблицах ДКД позволяет регулярным образом подключать редактирующие модули ДКД независимо от направлений потоков информации между системными структурами.
Кроме того, в функции СДП входит поддержка ввода-вывода принятой в рассматриваемой ОС технологией восстановления после сбоев аппаратуры. Для восстановления УПЗ организует хранение на втором уровне памяти контрольной точки каждого обслуживаемого процесса, по объему равной используемому ТС. Чтобы избежать потери введенной информации (при повторении процесса в случае сбоя), СДП выполняет размножение всех данных, поступающих в ТС активного процесса, и занесение их одновременно в используемый экземпляр ТС и в экземпляр, образующий контрольную точку. В качестве источника информации вывода, запрошенного извне, используется текущий экземпляр памяти; в момент запроса на вывод от процесса обновляется экземпляр контрольной точки, после чего вывод использует в качестве источника этот экземпляр памяти. Тем самым исключается возможность повторения вывода при восстановлении после сбоя.
Использование средств второго уровня КД вызывает обращение к следующему уровню памяти — накопителям на магнитных дисках, и одной из основных функций ДВУ в отличие от ДКД является организация подкачки исполняющих программ из внешней памяти во внутреннюю. Затребованная транзитная программа может быть размещена во внутренней памяти либо в ТС задачи пользователя, выдавшего директиву, либо в любых свободных ЕРП большой памяти, которые будут включены в этот ТС после подкачки. По ряду причин второй способ предпочтительнее. В частности, такой способ избавляет пользователя от необходимости следить за тем, чтобы затребованная им программа не стерла его же полезную информацию. Другая, более существенная причина связана с возможностью решения при втором способе следующей проблемы поддержкой “реентерабельности” программ.
Транзитная программа в отличие от размещенных в постоянной памяти программ должна быть включена в ТС того пользователя, который к ней обратился. Поэтому, если для работы n пользователей необходима одна и та же транзитная программа, то либо во внутренней памяти приходится создавать n ее копий (по одной в ТС каждого пользователя), либо необходимо предусмотреть специальные программные средства, обеспечивающие включение единственной ее копии в ТС любого пользователя. Будем во втором случае говорить, что поддерживается “реентерабельность” программы; при этом предполагается, что “тело” такой программы не изменяется во время ее выполнения. В многофункциональной системе, где ОЗ занимает большой объем памяти, требование поддержки “реентерабельности” приобретает по сравнению с обычными системами разделения времени еще большее значение.
К программам, расположенным в постоянной памяти, аппарат дескрипторов допускает обращение любого пользователя из-за того, что постоянная память имеет отличительные, “окрашенные” адреса. Можно использовать в некотором смысле аналогичный способ поддержки “реентерабельности” и транзитных программ. Если их располагать в свободных ЕРП большой памяти, то за счет некоторой избыточности адресной сетки ЭВМ М-10 по сравнению с ее реальным адресным пространством эти ЕРП также можно “окрасить”, назначив им большие не соответствующие реальным номера. Теперь данные ЕРП можно включить как в ТС первого пользователя, вызвавшего программу, так и в ТС любого другого обратившегося к ней пользователя.
“Окраска” ЕРП, содержащих общую для нескольких пользователей транзитную программу, во-первых, позволяет зафиксировать эти ЕРП в большой памяти, что значительно облегчает их включение в текущие сегменты нескольких пользователей, а во-вторых, дает возможность не размножать общую программу в памяти задач всех пользователей. Последнее обеспечивается как включением единственной ее копии в ТС нескольких пользователей, так и тем, что при вытеснении ТС некоторой задачи из оперативной памяти подсистема УПЗ легко находит в нем “окрашенные” ЕРП и в большую память их не откачивает (там ЕРП с тем же содержимым уже есть). В таблицах оперативной памяти содержащая их область сразу отмечается как свободная.
Заключение. Рассмотренные здесь методы дают возможность обращаться к памяти задач без ее фиксации на длительное время; обеспечивают интенсивное использование возможности асинхронной работы ЦП, каналов ввода-вывода и аппарата обмена между уровнями памяти; унифицируют алгоритмы доступа к различным структурам внутренней памяти (математической памяти, пространства фотографий); поддерживают “реентерабельность” транзитных программ.
Литература
- Караете А. Ю. Операционная система ЭВМ М-10. — Вопросы радиоэлектроники, сер. ЭВТ, 1980, вып. 9.
- Нестеров А. А. Диспетчеризация интерактивного режима в многофункциональной операционной системе. — Вопросы радиоэлектроники, сер. ЭВТ, 1981, вып. 10.
- Нестеров А. А., Хазанов И. Б. О двух уровнях взаимодействия пользователей с ЭВМ в режиме разделения времени. — Вопросы радиоэлектроники, сер. ЭВТ, 1982, вып. 6.
- Пржиялковский В. В., Ломов Ю. С. Технические и программные средства Единой системы ЭВМ (ЕС ЭВМ-2). — М.: Статистика, 1980.
- Беляков М. И., Гринкруг Е. М., Кроль Л. А. Универсальная операционная система разделения времени для многопроцессорной ЦВМ М-10. — Управляющие системы и машины, 1980, № 1.
- Гринкруг Е. М., Кроль Л. А. Совмещение процессов обмена между уровнями памяти и внешними устройствами в вычислительной системе М-10. — Вопросы радиоэлектроники, сер. ЭВТ, 1981, вып. 10.
Статья опубликована в сборнике “Вопросы радиоэлектроники”, серия “Электронная вычислительная техника”, вып. 9, 1984 г., стр. 39.