Cтраница 1
Использование общей области как рабочей позволяет экономить память, так как одна и та же область памяти используется несколько раз. [1]
При использовании общих областей необходимо соблюдать соответствие между типом и длиной передаваемых данных. [2]
При использовании общих областей необходимо соблюдать соответствие между типом и длиной передаваемых данных. Дополнительные сведения о расположении данных в общих областях приводятся в разд. [3]
Процедуры без параметров в ФОРТРАНе применяются при использовании общей области, организуемой с помощью оператора COMMON, который должен присутствовать в этом случае как в вызывающей, так и в вызываемой процедуре. [4]
Более удобным способом организации связей по данным является использование общих областей. По сути дела каждая общая область является самостоятельным модулем, содержащим только обрабатываемые программные объекты, причем значения этим объектам могут присваиваться только в процессе выполнения программы. [5]
Использование динамической загрузки подпрограмм в ОП не всегда удобно, так как в этом случае исключается возможность использования общих областей и глобальных структур данных. [6]
![]() |
Пример определения и использования подпрограммы. [7] |
Обмен информацией между основной программой и подпрограммой может осуществляться не только с помощью параметров, но и путем использования общих областей памяти. [8]
При использовании механизма формальных параметров структурирование программы в принципе не отличается от структурирования алгол-программы с помощью процедур. При использовании общих областей необходимо сначала продумать размещение и организацию данных в них. Можно представить себе процедуры как операторы, преобразующие область в область. При этом лучше выделить выбор данных из областей в отдельные процедуры, содержащие оператор эквивалентности, добиваясь, по возможности, унификации этих процедур. [9]
Доступ к записям, размещенным в общей области переполнения, требует больше времени, чем обращение к данным в основной области и в области переполнения цилиндра, поскольку он сопряжен с - необходимостью перемещения головок диска на другой цилиндр. С другой стороны, использование общей области переполнения ослабляет требования, связанные с распределением внешней памяти. [10]
Команда СРАВНЕНИЕ С ОБМЕНОМ может применяться для контролируемого совместного использования общей области - памяти подобно тому, как это описано в замечаниях по программированию для команды ПРОВЕРИТЬ И УСТАНОВИТЬ, но в отличие от последней она обеспечивает дополнительную возможность оставлять сообщение, если данная общая область уже используется. Чтобы осуществить это, слово из памяти может быть использовано в качестве управляющего слова. Нулевое значение этого слова показывает, что общая область не используется, его отрицательное значение свидетельствует об использовании общей области, а положительное значение, отличное от нуля, говорит о том, что область используется и что само это значение является адресом самого последнего сообщения, внесенного в список сообщений. Таким образом, все программы, желающие получить доступ в указанную область, могут использовать команду СРАВНЕНИЕ С ОБМЕНОМ ради изменения значения управляющего слова. Изменение производится с целью показа, что общая область используется, или с целью внесения сообщения в список. Только программа, получившая доступ в указанную область, может без риска использовать команду СРАВНЕНИЕ С ОБМЕНОМ также и для того, чтобы убрать сообщения из списка. [11]
Передача параметров через COMMON - блоки. При программировании сложных задач часто возникает необходимость обрабатывать общие данные. Для доступа к ним можно использовать уже описанный выше способ передачи данных через список параметров подпрограмм В фортране для этих целей существует еще одна возможность - использование общих областей данных. Такие области определяются при помощи инструкции COMMON и содержат данные, подлежащие совместному использованию различными программными модулями. [12]
Запрашивающий ЦП до попытки обращения к общим данным запоминает в аккумуляторе единицу. Следующая команда обменивает семафор и аккумулятор. Префикс LOCK вызывает генерирование сигнала LOCK, и другие ЦП не получают цикла шины для считывания семафора до завершения команды обмена. Если значение семафора было нуль, он устанавливается в единицу и в последующем предотвращает использование общей области конкурирующими ЦП. Если же значением семафора была единица, то команда XCHG не играет роли и запрашивающий ЦП ожидает, повторяя третью и четвертую команды, пока семафор не разблокируется установившим его ранее ЦП. Когда ЦП обработал общие данные, он разблокирует их посредством сброса семафора. [13]