.
Tuesday 22nd of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


Модульподпрограмма
загрузка...

Структуру перекрытия будем разрабатывать в предположении, что при выполнении программы загрузка сегментов реализуется с помощью широко используемого алгоритма автоматической загрузки «по вызову»: загрузка сегмента производится, если его нет в памяти в момент вызова принадлежащего ему модуля. Очевидно, что при таком способе загрузки сегмент - единица загрузки - может компоноваться из одного или нескольких модулей, но общие области не могут образовать отдельных сегментов, они должны быть объединены в сегменты с теми модулями, вызов которых обеспечивал бы присутствие общих областей в памяти при любом обращении к ним.

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

Обращения к общей области возможны только из тех модулей, где она определена, и только тогда, когда эти модули активны. Очевидно, что при загрузке «по вызову» одновременно активные модули будут одновременно присутствовать в памяти. Такими могут быть лишь модули, которые находятся в отношении подчинения и соответствуют вершинам одного пути графа G. А так как интервал «активности» подчиняющего модуля включает интервалы «активности» всех подчиненных ему модулей, объединение общей области с модулем, которому подчинены все использующие ее модули, гарантирует присутствие общей области в памяти при любом обращении к ней. Если имеется несколько модулей подходящих для объединения с некоторой общей областью, то выгоднее выбрать из них модуль с минимальным интервалом «активности». Для того чтобы найти такой модуль, достаточно, двигаясь от вершин, соответствующих модулям, использующим общую область, по путям, ведущим к основной вершине, достичь ближайшей общей вершины; соответствующий ей модуль и будет искомым. После того как каждая общая область Cf объединена с подходящим модулем т{ и длина mt увеличена на длину Cf, задача разработки структуры перекрытия для программы, имеющей общие области, решается так же, как и для программы, не имеющей общих областей. Поэтому далее общие области не будут рассматриваться.


загрузка...
 

Самое популярное:

Наши партнеры

bottom

карта сайта