М.М. ГОРБУНОВ-ПОСАДОВ - Системное обеспечение пакетов прикладных программ (1184225), страница 10
Текст из файла (страница 10)
В частности, используя описаниесистемной семантики модулей, планировщик может составлять расчетныецепочки, которые дают минимальное суммарное время их выполнения илизанимают минимальный по размерам участок памяти.Используя семантическую сеть, можно формулировать и решать задачупостроения оптимальной расчетной цепочки как задачу поискаминимального пути в пространстве состояний [93].Под состоянием S будем понимать множество известных (т.е.
заданныхлибо вычисленных) параметров модулей функционального наполнения.Каждый модуль m характеризуется в семантической сети именем,множеством входных параметров in (m), множеством выходных параметровout (m) и ценой price (m). Модуль применим к состоянию S, если in (m) ⊆ S.Применение модуля m к состоянию S порождает новое состояние S', причемS' = S ∪ out(m). Путем из состояния S0 в состояние Sk называется цепочкамодулей функционального наполнения (m1,m2,...,mk), последовательноеприменение которых к состоянию S0 порождает последовательностьсостояний (S1,S2,...,Sk), причем каждое из звеньев цепочки модулейудовлетворяет условию применимости in (mi) ⊆ Si-1. Сумма цен модулей,входящих в цепочку, называется ценой пути из S0 в Sk.Задачей алгоритма планирования является построение по заданномуначальному состоянию Sbeg и целевому состоянию Send минимального поцене пути в некоторое состояние S', такое, что S ⊇ Send.
Данная задача можетрешаться методами перебора в пространстве состояний или модификациямиэтих методов [93,94].Используя в качестве цены модуля тот или иной его атрибут (времявыполнения, требуемая оперативная память и т.п.), можно оптимизироватьсоставляемую планировщиком программу по тому или иному параметру.В зависимости от того, в какой период времени по отношению квычислительному процессу, реализующему задание пользователя, работаетпланировщик, различают статическое и динамическое планирование.Статическоепланированиеосуществляетсядовыполнениявычислительного процесса и в большинстве пакетов реализуется как одиниз этапов обработки входной информации и генерации рабочей программы.Однако только статического планирования в ряде случаев оказываетсянедостаточно для эффективного исполнения вычислительного процесса.Тогда статическое планирование дополняется или подменяетсядинамическимпланированием, которое реализуется в ходе вычислительного процесса.
Какправило, динамическое планирование основывается на техникеинтерпретации [46,58].Проведенное рассмотрение методов организации планированиявычислений, разумеется, не отражает полностью всего того многообразиярешений, которые встречаются в планировщиках развитых пакетов. Весьмаперспективными представляются, например, схемы, сочетающие в себепреимущества различных методов планирования (в частности, планированиена семантической сети с использованием экспертов [95]), и особеннодиалоговые формы построения расчетной цепочки (когда начальный планвычислений, заданный пользователем, в ходе диалога детализируется иуточняется планировщиком на основе знаний, заложенных винформационную базу пакета [44,96]).1.7.
Операционные возможностиОперационными возможностями пакета будем называть совокупностьорганизационных, управляющих и сервисных функций, предоставляемых егосистемным наполнением. Эти функции призваны, с одной стороны,использовать в интересах пакета весь арсенал средств штатногопрограммного обеспечения, а с другой - «спрятать» от пользователярутинные механизмы этого обеспечения, или, по крайней мере, значительноупростить и унифицировать доступ к ним.
В результате формируетсяспециализированная операционная среда, обеспечивающая благоприятныеусловия для проведения вычислений в данном приложении.Некоторые из задач, возникающих при реализации операционныхвозможностей пакета, являются традиционными в том смысле, что онивстречаются при разработке всякой программной системы, имеющейсобственный входной язык и надстраиваемой над штатным обеспечением;другие характерны именно для пакетов программ. Охарактеризуем кратконаиболее существенные из этих задач и рассмотрим применяемые способыих решения.Межмодульный интерфейс. Межмодульным интерфейсом называетсяорганизация информационных (интерфейс по данным) и управляющих(интерфейс по управлению) связей между модулями. Интерфейсопределяется принятым регламентом модуляризации функциональногонаполнения и системными средствами поддержки сопряжения модулей поданным и управлению.Анализ практики разработки модульных проблемно-ориентированныхсистем и пакетов программ [34,58,65,74] позволяет выделить три формымежмодульного интерфейса по данным.Наиболее простым с точки зрения системной реализации являетсяжесткий интерфейс.
Он предполагает, что модули программируются тольков соответствии с регламентом, строго фиксирующим для каждого модуляструктуру, местоположение и другие характеристики обрабатываемыхданных. Этим обеспечивается полная информационная и программнаясовместимость тех модулей, которые могут сочетаться в различныхрасчетных конфигурациях. Системная поддержка жесткого интерфейсаосуществляется штатными средствами редактирования межмодульныхсвязей.В случае полужесткого интерфейса разработка программных телмодулей также ведется в соответствии с некоторым регламентом,устанавливающим определенную совокупность допустимых структур испособов хранения данных. Вместе с тем каждому модулю предоставляетсяизвестная свобода выбора в рамках этой совокупности. Системнаяподдержка полужесткого интерфейса обеспечивается либо штатнойсистемой управления базами данных, либо специализированной системойхранения данных, входящей в состав системного наполнения пакета.
Такиесистемы предоставляют языковые и программные средства, с помощьюкоторых задаются (в программных телах модулей) и реализуются процедурыинтерфейса.Отметим, что в случае как жесткого, так и полужесткого интерфейсасистемная адаптация программного материала осуществляется путемвнутренней модуляризации, т.е. все положения регламента модуляризациидолжны быть соблюдены на этапе разработки программных тел модулей.Гибкий интерфейс позволяет осуществить сопряжение по даннымнезависимо запрограммированных модулей. Системная поддержка гибкогоинтерфейса, так же как и полужесткого, осуществляется штатной илиспециализированной системой хранения и преобразования данных. Однакопринципиальное отличие системы с гибким интерфейсом состоит в том, чтоона предоставляет возможность внешней модуляризации, т.е.
системнойадаптации программного материала не при составлении программ, а на этапевключения их в функциональное наполнение пакета. Это обстоятельствопозволяет быстро развивать функциональное наполнение пакета, вклю-чая в него программы, характеризующиеся значительной информационнойрассогласованностью.При организации межмодульного интерфейса по управлениюприменяются схемы прямой и косвенной коммутации модулей, а такжесочетание этих схем.В случае прямой коммутации передача управления вызываемому модулюосуществляется непосредственно из тела вызывающего.
Такого рода схемапередачи управления обычно обеспечивается штатными средствамиредактирования связей и широко применяется в тех случаях, когда структуры управления в программах, генерируемых пакетом, достаточноустойчивы и необходимо исключить временные издержки при передачеуправления от модуля к модулю. Прямая коммутация применяется обычнопри каркасном подходе к конфигурированию модулей.Схема косвенной коммутации характерна для цепочечного подхода. Онапредполагает, что управляющие связи между модулями устанавливаютсяпри участии некоторого программного посредника. В качестве такогопосредника может выступать штатный или специальный динамическийзагрузчик или монитор (управляющая программа) пакета. Косвеннаякоммутация применяется в тех случаях, когда управляющие связи междумодулями заранее фиксировать нельзя, поскольку они возникаютдинамически в ходе вычислительного процесса.В ряде пакетов применяется подход, сочетающий преимущества обеихсхем коммутации [50,74].
При этом управляющая связь первоначальноустанавливается по схеме косвенной коммутации, а затем поддерживается(пока это позволяют доступные ресурсы памяти) по схеме прямойкоммутации. Оригинальная реализация этого подхода осуществлена всистеме ИС-2 [51].Исполнение расчетной цепочки. Для организации исполнениясоставленной планировщиком расчетной цепочки модулей применяетсятехника компиляции или интерпретации [4,18,58].В первом случае процессы генерации программы и проведения расчетастрого разделены по времени выполнения: сначала по заданной расчетнойцепочке формируется задание транслятору с базового языка пакета иполностью генерируется рабочая программа, а затем выполняется один илинесколько расчетов по этой программе.
Использование режима компиляцииимеет два неоспоримых достоинства. Во-первых, как известно, техникакомпиляции дает возмож-ность получать эффективные по времени исполнения программы, и, вовторых, эти программы могут отчуждаться от пакета и использоватьсяавтономно. В связи с этим техника компиляции, как правило, применяется впакетах, ориентированных на обеспечение массовых и длительных расчетов.При использовании модулей в режиме интерпретации процессыгенерации рабочей программы и расчета выполняются квазипараллельнопод общим управлением монитора вычислительного процесса. Реализовать впакете технику интерпретации, вообще говоря, существенно проще, чемкомпиляцию.