Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структуры рабочих программ




Созданная редактором связей рабочая программа может иметь одну из четырех структур. Простая структура – один модуль загрузки, загружаемый в основную память как единое целое, содержит всю программу.

Структура запланированного перекрытия: программа находится в библиотеке в виде одного загрузочного модуля, однако программист может указать программные сегменты, которые не должны находиться в основной памяти в одно и то же время. В данном случае одна и та же область памяти может использоваться различными сегментами вновь и вновь. Используя структуру запланированного перекрытия, можно очень эффективно распределять основную память. Поскольку управляющая система работает только один раз при поиске модуля, а связи между сегментами устанавливаются заранее при редактировании меток связи, эта структура обеспечивает также эффективность выполнения программы и имеет две разновидности – с корневой фазой или без неё. В первом случае корневая фаза программы (ROOT) всегда находится в ОЗУ и вызывает транзитные сегменты по задуманному алгоритму. Во втором случае вызов следующего сегмента в ОЗУ осуществляется сразу же после выполнения предыдущего, размещая на место предыдущего, перекрывая его.

Преимущества запланированного перекрытия уменьшаются по мере того, как сложность задания возрастает. В частности, это происходит, когда порядок выбора сегментов оказывается зависящим от данных (в большинстве задач управления запросами в оперативном режиме). Для таких случаев предусмотрена возможность вызывать модули загрузки динамически, т.е. задавать имена модулей, которые следует вызывать во время выполнения других модулей загрузки. Реализация этой возможности не вызывает трудностей, поскольку распределение основной памяти происходит по мере появления запросов и работает соглашение, что любой модуль загрузки выполняется как подпрограмма. При динамической последовательной структуре в процессе выполнения программы в работе могут находиться сразу несколько загрузочных модулей. Реализуя стандартные процедуры связи, управляющая программа действует как посредник при входе и выходе из подпрограмм. Предусмотрены макросредства, с помощью которых один модуль загрузки может сослаться на другой. Это макросредства LINK (связать), XСTL (передать управление) и LOАD (загрузить), RETORN (возврат).

 

Рис. 4.2. Динамическая последовательная структура с макросредством LINK

Из трех участвующих программ (модулей загрузки) только одна программа X вызывается в момент создания задачи. Одной из команд, генерируемых по команде LINK (связать), является команда входа в супервизор (SVC), а название программы (А или В на рис. 4.2) является параметром связи. После выполнения SVC вызывается соответствующая программа управляющей системы, которая находит нужный модуль загрузки, отводит под него место, выбирает и передает на него управление. После возврата из модуля, выполняемого с помощью RETURN (вернуться), занятое пространство освобождается и, пока это возможно, вновь не занимается.

Если программа В во время второго обращения все еще находится в основной памяти, то она не будет вызываться в память еще раз (предполагается, что программа пользователя удовлетворяет условиям «повторного использования»). XCTL (передать управление) может быть использована для передачи управления последовательно выполняемым участкам программы (рис. 4.3).

 

Рис. 4.3. Динамическая последовательная структура с макросредством XCTL

 

Соблюдаются стандартные правила связи, параметры передаются явно, а супервизор действует так же, как в случае LINK. Однако считается, что как только программа, получившая управление по XCTL, завершила свою работу, вся область памяти, отведенная для нее, освобождается и может быть немедленно снова занята.

LOAD (загрузить) предназначена, в основном, для тех случаев, когда задачи многократно используют один модуль загрузки, причем предполагается, что условия повторного использования соблюдаются. LOAD просит супервизор загрузить в память модуль и сохранить его до тех пор, пока не будет выдана DELETE.

Управление в такой модуль может быть передано либо с помощью LINK (связать), либо машинной командой передачи управления BRANCH (рис. 4.4).

 

 

 

Рис. 4.4. Динамическая последовательная структура с макросредством LOAD («звездочка» означает, что в данном месте требуется помощь управляющей программы)

Динамическая параллельная структура (рис. 4.5). Для трех предшествующих структур выполнение программы идет последовательно. Макрокоманда ATTACH (образовать) позволяет создать новую задачу, которая может выполняться параллельно с уже имеющимися задачами (насколько это допускается имеющимися в наличии ресурсами). В других отношениях АTTACH во многом аналогична LINK. Однако, поскольку ATTACH приводит к образованию новой задачи, она требует большей работы супервизора по сравнению с LINK. Поэтому она должна использоваться только в тех случаях, когда ожидается существенное перекрытие операций.

 

Рис. 4.5. Динамическая параллельная структура

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

Если модуль не будет модифицировать себя во время выполнения, то единственная копия модуля может начать работу по запросу А, затем полностью выполнить запрос В и вернуться к окончанию выполнения запроса А. Такой модуль называется реентерабельным. В вычислительной среде существует 3 типа модулей: однократно используемый, повторно используемый и реентерабельный.




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.