Cтраница 3
Создание языков, управляющих процессами, представляет попытку объединить краткость языков, ориентированных на просмотр активностей, с эффективностью языков, составляющих расписание событий. В языках, управляющих процессами ( ASPOL, SIMULA, SOL, MPL / 1, PLSIM), моделирующая программа организуется в виде набора описаний, каждое из которых описывает один класс процессов. Описание процесса устанавливает атрибуты и активности всех процессов данного класса и имеет форму подпрограммы или процедуры, которая выполняется одновременно для всех представителей этого класса, существующих в системе в текущее время. Фактически это описание является реентерабельной программой, выполняемой в квазипараллельном режиме, когда управление передается в различные точки программы по мере того, как происходит инициализация, выполнение и задержка выполнения различных процессов. Таким образом, все процессы данного класса описываются одним набором предложений языка, однако каждый процесс оперирует собственными данными. [31]
![]() |
Варианты двухзвенных схем распределенных вычислений. [32] |
Помимо проблемы распределения серверных функций между узлами сети имеется проблема разделения этих функций между многими пользователями АС. Эта проблема решается либо по схеме один к одному, либо по многопотоковой схеме. В первой из них для каждого активного пользователя создается своя копия СУБД. Во второй СУБД должна быть реентерабельной программой, обслуживающей одновременно многих пользователей. [33]
Программы, которые сохраняют первоначальный вид в любой момент времени в процессе выполнения, называются реентерабельными. Сложность реализации реентерабельных программ искупается сокращением времени на повторную загрузку модуля в основную память и тем, что нет необходимости повторно загружать в память одну и ту же программу, требуемую различными задачами. Многие модули управляющей программы оформлены как реентерабельные. Реентерабельные программы правильно выполняются и в том случае, если ключ защиты ее памяти не совпадает с ключом защиты памяти задачи, для которой она выполняется. Объясняется это тем, что реентерабельная программа не изменяет своих адресов. [34]
Точка входа программы выхода задается операндом CMDEXIT в макрокоманде CRJETABL. Команды и подкоманды должны быть определены операндами USRMCMD и USRSCMD в этой же макрокоманде. Команды или подкоманды не должны превышать в длину 105 символов и не должны иметь продолжения. Все команды и подкоманды обрабатываются одной реентерабельной программой выхода. [35]
Загрузчик выполняет ряд функций редактора связей и программы выборки. Он преобразует объектные модули, составляющие результат работы трансляторов и ассемблера, в загрузочный модуль, размещает его в основной памяти и передает ему управление. При этом загрузочный модуль не записывается в библиотечный набор данных. Таким образом, загрузчик осуществляет редактирование и выполнение загрузочного модуля в одном пункте задания. Загрузчик используется в случае, если не требуются специальные режимы редактора связей и запоминание загрузочного модуля. При этом применение загрузчика существенно сокращает время редактирования и выполнения загрузочного модуля по сравнению с использованием редактора связей. Загрузчик является реентерабельной программой и может находиться в общей области. В этом случае копия загрузчика может удовлетворить все запросы на его использование, что приводит к экономии основной памяти. [36]
Так, кроме приоритетов задач может быть учтено и их размещение в модулях оперативной памяти. В таком режиме в каждый данный момент времени выполняются наиболее приоритетные, но расположенные в различных модулях оперативной памяти задачи. Благодаря этому достигается более высокая производительность системы в целом, так как ликвидируются издержки, связанные с одновременной работой нескольких процессоров с одним и тем же модулем памяти. Независимо от дисциплины распределения процессоров между задачами в мультипроцессорной операционной системе проводится периодический контроль правильности работы процессоров и в случае неправильной работы или отказа одного из них осуществляется автоматический переход в режим работы на меньшем числе процессоров. Супервизор мультипроцессорных операционных систем обеспечивает, как правило, выполнение всех обрабатывающих задач, подготовленных для работы в соответствующих однопроцессорных ( однозадачных либо многозадачных) системах, не предъявляя к программам пользователей никаких дополнительных требований по их подготовке. В частности, параллельно используемые реентерабельные программы из основной библиотеки подпрограмм допускают использование одной и той же копии подпрограммы несколькими процессорами одновременно, не требуя дополнительной оперативной памяти на размещение обрабатывающих программ. [37]