Cтраница 3
Напомним, что при обращении в подпрограмме необходимо загрузить в регистр 15 адрес точки входа в подпрограмму, в регистр 14 адрес точки возврата, а в регистр 1 - адрес таблицы адресов параметров. Адрес области сохранения для подпрограмм обычно загружается в регистр 13 в начале программы. Опыт программирования показывает, что таблицу адресов параметров удобнее записывать не в отдельной области памяти, а вместе с командами обращения к подпрограмме: программа становится нагляднее. [31]
Путь передачи определяется по таблице адресов, где задаются адреса смежных с данным центром узлов коммутации. Таблицы адресов составляются различными способами, в зависимости от принятого в данной сети алгоритма управления сообщением. При централизованном способе управления сообщением таблицы адресов в каждом коммутационном центре формируются на основе информации о состоянии всей сети, причем формирование осуществляется одним из центров, передающих служебную информацию всем центрам сети. Такой способ, хотя и обеспечивает единство управления, исключая тем самым возможность возникновения циклов при передаче информации, обладает рядом недостатков, среди которых основными являются большой объем служебной информации, передаваемой по сети, и сравнительно низкая живучесть. [32]
В соответствии с этим методом программа работы ММЭВМ записывается в виде блок-схемы наподобие схемы набора для аналоговой ЭВМ. Далее с помощью кросстранслятора составляется таблица адресов модулей программ и загружается в память ММЭВМ. Полученная таблица адресов представляет собой последовательные переходы к отдельным стандартным программам. [33]
Программа должна содержать адрес правильной версии функции в каждом объекте. Точнее, она хранит адрес таблицы адресов виртуальных функций. Кроме дополнительного объема памяти, это требует косвенного вызова функций, что приводит к более медленной работе по сравнению с вызовом стандартных функций. Поэтому рекомендуется делать функцию-член виртуальной только тогда, когда требуется действительно позднее связывание. [34]
Если системная или проблемная задача выбрана, проверяется, не является ли она той, которая выполнялась последней. Номер последней выполняемой задачи хранится в Таблице адресов. Если номера выбранной и последней выполняемой задачи совпали, нет необходимости загружать все регистры подчиненной им программы, так как их содержимое никем не изменено. Достаточно из поля А Блока управления выбранной задачи загрузить Р - счетчик в слово состояния программы. Это равносильно передаче управления выбранной задаче. [35]
При этом каждая запись, имеющаяся в файле данных, отмечена в таблице адресов записей тем, что указан ее физический или относительный адрес вместе с ее идентификатором. Однако чем больше файл данных, тем менее эффективна такая организация, так как значительное увеличение таблицы адресов записей ведет к - увеличению времени поиска в таблице. [36]
В основу создания Р2 программ положен параметрический принцип. Чтобы получить доступ к параметрам, Р2 программа выполняет следующие действия: по Таблице адресов выбирает адрес Таблицы задач и номер текущей задачи ( она является вызываемой), вычисляет адрес своего Блока управления ( вызываемой задачи), из поля Е извлекается номер вызывающей задачи и вычисляется адрес ее Блока управления, поле А вызывающей задачи используется для выборки параметров. Когда все параметры выбраны, значение Р - счетчика увеличивается для перехода к следующей команде в прерванной программе и запоминается в поле А. [37]
В конце трансляции на МП-16 выводится таблица адресов операторов и операторных скобок. Содержание процедуры с параметрами заключается дополнительно в операторные скобки, о чем также выдается информация в таблице адресов. Структура таблицы адресов в точности соответствует расположению операторов в исходной программе. [38]
Для управления режимом обработки прерываний используется сигнал на выводе AVEC. При нулевом значении этого сигнала младший байт данных на 32-разрядной шине в момент возникновения прерывания интерпретируется как указатель элемента таблицы адресов подпрограмм обработки прерываний. При единичном значении сигнала на выводе AVEC значение указателя генерируется автоматически в соответствии с уровнем приоритета возникшего прерывания. [39]
Если файл не обслуживается, проверяется, полна ли главная или альтернативная очередь. Если одна из них или обе полны, устанавливается флаг переполнения Очереди канала в заголовке, записывается условие ожидания в поле Б Таблицы задач, увеличивается счетчик переполнения, который хранится в Таблице адресов, управление передается Диспетчеру задач. [40]
Физические записи группируются в подмас-сивы. По идентификатору каждой записи с помощью некоторой функции можно определить подмассив, которому она принадлежит. Создается таблица адресов первых записей каждого подмас-сива. [41]
В конце трансляции на МП-16 выводится таблица адресов операторов и операторных скобок. Содержание процедуры с параметрами заключается дополнительно в операторные скобки, о чем также выдается информация в таблице адресов. Структура таблицы адресов в точности соответствует расположению операторов в исходной программе. [42]
Различие между операциями последовательного считывания и считывания в произвольном порядке заключается в том, что в последнем случае группы точек могут адресоваться в произвольной последовательности. Следовательно, подсистема должна быть обеспечена информацией, необходимой для управления произвольной адресацией. Это достигается использованием таблицы адресов, содержащейся в главной памяти и задающей адреса считываемых групп. Аппаратные средства и их функционирование аналогичны описанному выше случаю последовательного считывания. При этом требуется еще дополнительный регистр для запоминания адреса таблицы. Вместо адреса начальной группы точек в команде задается начальный адрес в таблице, который хранится в подсистеме. После этого подсистема обращается к ЗУ и передает адрес группы точек в регистр адреса группы точек в подсистеме. Затем содержимое регистра цифрового входа передается в память, как описано выше. После завершения передачи регистры адреса памяти и адреса таблицы получают приращение на единицу, а отсчет на единицу уменьшается. Из памяти выбирается адрес, записанный в ячейке, задаваемой новым адресом таблицы, и операция повторяется. Когда отсчет обратится в нуль, выполнение заканчивается одним из четырех рассмотренных выше действий. [43]
Таблица адресов является одной из основных управляющих таблиц Супервизора. Она предназначена для организации быстрого доступа к любой управляющей таблице и содержит адреса основных таблиц, используемых Супервизором и другими компонентами операционной системы, а также некоторую информацию, характеризующую текущее состояние этих таблиц. Структура и размер Таблицы адресов зависят от мощности операционной системы ( наличия тех возможностей, которые предоставляются программисту), числа таблиц, используемых Супервизором. В ней хранятся адреса Таблицы информации об устройствах, Таблицы задач, Списка распределенной памяти, Очередей каналов, Указателя памяти, Таблицы приоритетов проблемных задач, Списка сообщений оператора, Области связи с Супервизором, флаги состояния таблиц, число Р2 программ в данной конкретной конфигурации Супервизора, полученной при генерации операционной системы, номер задачи, которой Супервизор передал управление, и другая информация. [44]
Первые три поля заполняются в момент загрузки транзита в основную память. Число входов в ТУОП равно числу областей перекрытий в системе. Адрес ТУОП находится в Таблице адресов. [45]