Cтраница 3
Составлены спецификации, на модули данных и программные модули. В спецификациях а модули данных перечислены все глобальные данные, которые используются в КП, и их характеристики. В спецификации на ( Программные модули включены паспорт программы и ее функциональная схема. [31]
Это определяет область действия - процесса и является ли процесс замороженным или обычным. По - умолчанию задана глобальная куча SRO в глобальных данных - процесса вызывающего. [32]
Заметим, что все перечисленные офаничения для PURE-подпрофамм не касаются распределения данных. При общем допущении перераспределения данных, PURE-подпрофаммы не должны перераспределять глобальные данные, офаничиваясь формальными параметрами и локальными переменными. [33]
Созданный нами модуль является аналогом класса. Компоненты производного типа общедоступны и поэтому соответствуют полям класса, а глобальные данные модуля соответствуют статическим полям класса. Фактическая переменная типа COMPLEX. [34]
Если кэш-память организована как часть системы управления файлами операционной системы, то возможно принятие решений, основанных на знании связи между логической и физической структурами файлов. Возможно также применение различных алгоритмов для кэширования блоков оглавлений и других часто используемых глобальных данных, основанных на использовании как статистики обращений, так и априорных сведений. В случае, когда кэш-память является частью драйвера диска, алгоритмы не могут использовать этих сведений и должны учитывать только порядок поступления заявок и статистику обращений. С другой стороны, возможно использование драйвером знаний о положении головок и секторов с целью минимизации механических перемещений. [35]
Для обеспечения единого контекста, в котором будет происходить выполнение программного комплекса, состоящего из раздельно оттранслированных модулей, в частности при использовании функциональной декомпозиции необходимо установить связь между этими модулями и разделяемыми данными. Такой контекст может быть построен путем компоновки в единое адресное пространство или обеспечиваться исключительно средствами глобальных данных. [36]
Единственным способом обеспечить возможность доступа из различных задач к одним и тем же данным является использование глобальных данных. Вероятно, было бы желательно разрешить одновременный доступ к таким глобальным данным по чтению для произвольного числа задач, ограничив доступ к таким глобальным данным по записи только одной-единственной задачей. Вообще, использование глобальных данных считается потенциально опасным [143], а наличие параллельной обработки только ухудшает ситуацию. [37]
Этот пакет обеспечивает интерфейс нижнего уровня для управления па - - мятью. Во время компиляции этот параметр - получает заданное по умолчанию значение null, а во время выполнения - по умолчанию получает значение заданной по умолчанию глобальной кучи - - SRO в объекте глобальные данные процесса выполняющегося процесса - Команды распределения стека не используют параметр SRO, так как - стек SRO указывается явно. [38]
Со сцеплением по общей области связан целый ряд проблем. Все такие модули зависят от физического упорядочения элементов общей структуры данных, вследствие чего изменение размеров одного элемента данных влияет на все модули. Использование глобальных данных сводит на нет все попытки управлять доступом каждого модуля к данным. Например, в OS / 360 фирмы IBM есть большая глобальная структура данных, называемая таблицей вектора связи. [39]
При неявном объявлении локальные данные объявляются при первом их появлении в программе. При неявном объявлении локальных данных затруднено автоматическое выявление неописанных данных, а разброс их объявлений по программе затрудняет контроль распределения памяти. Неявное объявление глобальных данных в программе не требует указания каких-либо их характеристик. Описания глобальных данных, объединенных в структуры, оформленные как программные модули без операторной части, транслируются отдельно по структурам. Эта особенность связана с большим числом глобальных данных в сложных КП. Для защиты памяти в программе могут указываться имена модулей, содержащих глобальные данные, к которым обращается программа. В то же время эта задача можег быть выполнена при контроле всего КП с информированием о несанкционированных применениях данных. [40]
Область дисковой памяти для работы СПД должна быть предварительно выделена системной программой SPDALL и может быть освобождена для глобальной базы данных программой SPDREMOV. Дисковая память вне этой области для СПД недоступна. Область СПД и область глобальных данных и программ никогда не могут пересекаться. [41]
Спецификация требований на программные модули позволяет определить структуру, функции модуля и его связь с другими модулями КП, а также общие характеристики программы. Спецификация модуля при любом ее конкретном воплощении содержит заголовок модуля, паспорт модуля и его функции. В паспорте модуля содержится описание всех входных и выходных глобальных данных, вызываемых модулей, а также включаются данные о языке программирования и ориентировочные значения времени исполнения и объем модуля. [42]
В ранних версиях Фортрана возможности доступа к единому блоку данных из нескольких программных компонентов не было; области общей памяти, где хранятся глобальные переменные, должны были описываться в каждой компоненте заново. Это очень затрудняло использование глобальных данных в профаммах и служило неиссякаемым источником ошибок. Директива компилятора INCLUDE, появившаяся в Фортране 77, позволила свести описание глобальных данных в один файл и устранить источник противоречий между глобальным содержанием и его локальными описаниями. Однако директивы INCLUDE нельзя рассматривать как оператор Фортрана: она исполняется компилятором Полностью проблема организации доступа к глобальным данным была решена только в Фортране 90, когда в языке появились модули. [43]
Все подпрограммы - и процедуры, и функции, - должны иметь возможность обмениваться данными с теми компонентами программы, из которых они были вызваны. Подпрограммы получают входные данные от вызывающего компонента и передают ему выходные данные - результаты своей работы. Обмен информацией с подпрограммами может происходить через параметры подпрограмм и / или через глобальные данные. Глобальные данные - это переменные, доступные в равной степени и подпрограмме, и вызывающему компоненту. Организация глобальных данных будет рассмотрена в разделе Модули настоящей главы. [44]
Формально каждая подпрограмма может использовать основные директивы HPF точно так же, как они применяются в главной программе. По спецификации HPF - 2.0 для подпрограмм, имеющих явный интерфейс с директивами распределения формальных параметров, фактические параметры при передаче управления подпрограмме будут распределены в соответствии с директивами подпрограммы. При возврате управления в вызывающий программный компонент будет выполнено обратное перераспределение, побочные эффекты в виде изменения привязки глобальных данных исключаются. Предполагается, что подпрограмма, не имеющая явного интерфейса, не требует перераспределения данных. Если же в действительности перераспределение требуется, подпрограмма становится источником ошибок. [45]