Cтраница 1
Сопрограммы используются и в более простых случаях, например в программе сбора и анализа экспериментальной информации. При проведении эксперимента приходится одновременно выполнять несколько разных задач. Так, во время нейропсихологического эксперимента разные задачи выполняют стимуляцию нейрона, записывают его электрическую активность и выводят данные на экран. Все эти задачи приходятся выполнять но ходу эксперимента. Предпочтительно для каждой задачи использовать сопрограмму. [1]
Сопрограммы используются ври работе с аппаратурой. На большей частя компьютеров вычисления и другие внутренние операции выполняются значительно быстрее, чем может производиться пересылка данных между ними и периферийными устройствами. Из-за этой разницы в скоростях важно, чтобы компьютер мог выполнять на фоне обмена другую задачу. Большинство компьютеров использует прерывания, приостанавливающие активную задачу в тот момент, когда требует внимания внешнее устройство. Модула-2 позволяет программисту связать с каждым периферийным устройством сопрограмму. Эти сопрограммы автоматически активируются ври возникновении прерывания. [2]
Сопрограммы и подрограммы имеют много общего: и те и другие объединяют данные и выполняют операторы. Однако имеются и существенные различия. [3]
Сопрограммы не имеют иерархической структуры. Вызов сопрограммы не создает нового контекста. Чаще всего ( за исключением первого обращения) повторно активируется уже созданный. Очевидно, что для сопрограмм обращение к себе лишенВ смысла. Вызов сопрограммы можно сравнить с переходом от одной стопки документов к другой. Когда вызывается сопрограмма, ее локальные данные уже существуют, а выполнение продолжается с той точки, где оно было приостановлено. [4]
Сопрограммы, напротив, начинают выполняться с той точки, где были приостановлены. Они обычно выполняются некоторый период времени, после чего передают управление какой-лвбо ивой сопрограмме. Подпрограммы атакуют задачу впрямую, то время как сопрограммы подразумевают опосредованный подход. [5]
Сопрограмма, обратившаяся к IOTRANSFER, этим самым объявляет себя обработчиком прерывания. [6]
Сопрограммы обеспечивают две организационные структуры, отличные от тех, что предоставляются обычной иерархией подпрограмм. [7]
Сопрограммы оказываются незаменимыми, когда программа разделяется на два основных задания, которые должны быть между собой скоординированы, но при этом их слишком тесная взаимосвязь ведет к излишним усложнениям. Программа, с задания которой начинается работа, занесет адрес второй ячейки в стек. В дальнейшем, как только одной программе требуется помощь другой, она вызывает ее командой JSR PC, ( SP) - j - Системные программы часто выполняют столь переплетенные функции, что в них приходится использовать сопрограммы. На рис. 3.6 показана упрощенная схема взаимодействия двух процессов - чтения и интерпретации, которые протекают внутри ассемблера, когда он расшифровывает мнемонику очередной команды. [8]
![]() |
Выполнение вызванной процедуры всегда начинается с самого начала этой процедуры. [9] |
Сопрограммы обычно используются для того, чтобы производить параллельную обработку данных на одном процессоре. Каждая сопрограмма работает как бы параллельно с другими сопрограммами, как будто у нее есть собственный процессор. Такой подход упрощает программирование некоторых приложений. Он также полезен для проверки программного обеспечения, которое потом будет работать на мультипроцессоре. [10]
Сопрограммы хорошо известны в программировании, однако на практике применяются значительно реже двух предыдущих случаев. [11]
Сопрограммы представляют собой встроенное в Модулу-2 средство. С их помощью можно писать обработчики прерываний, системы поддержки времени выполнения, управляемые прерываниями программы и даже целые операционные системы. Сопрограммы - примитив, который позволяет справляться с ситуациями, когда несколько действий происходят ( или могут происходить, или удобно считать, что происходят) одновременно. [12]
Сопрограммы используются для организации программ, в которых управление может быть передано с одной задачи на другую. [13]
Сопрограмма RemlO используется для обмена данными с удаленным компьютером. RemlO считывает регистр состояния последовательного порта. Литера передается, если есть что передавать и буфер для передачи пуст. Если интерфейс находится в состоянии ожидания, то происходит считывание литеры. [15]