Cтраница 4
Для получения доступа к системе необходимо выполнить специальную процедуру регистрации. Эта процедура исключает несанкционированный доступ к системе и определяет приоритет пользователя. В процессе регистрации пользователю выделяется раздел оперативной памяти и он получает доступ к одному из каталогов программ и глобальных данных. [46]
Однако дело здесь не в изменении самой функции -) - Проблема состоит в том, что функция f, определенная выше, сильно отличается от математических функций, которые мы до сих пор рассматривали. Наше представление о математической функции сводится к тому, что мы представляли ее в виде черного ящика, вычисляющего выходные величины исключительно исходя из входных величин. Функция же, определенная в приведенной выше программе, является классическим примером функции, которая в равной степени зависит от глобальных данных, и от своих собственных параметров. Паскаль имеет возможность изменяться, и именно это уничтожает свойство функциональности языка. Значение же элементарной функции - J - не изменяется, так как всегда обозначает функцию, суммирующую некоторые величины. [47]
Все подпрограммы - и процедуры, и функции, - должны иметь возможность обмениваться данными с теми компонентами программы, из которых они были вызваны. Подпрограммы получают входные данные от вызывающего компонента и передают ему выходные данные - результаты своей работы. Обмен информацией с подпрограммами может происходить через параметры подпрограмм и / или через глобальные данные. Глобальные данные - это переменные, доступные в равной степени и подпрограмме, и вызывающему компоненту. Организация глобальных данных будет рассмотрена в разделе Модули настоящей главы. [48]
При неявном объявлении локальные данные объявляются при первом их появлении в программе. При неявном объявлении локальных данных затруднено автоматическое выявление неописанных данных, а разброс их объявлений по программе затрудняет контроль распределения памяти. Неявное объявление глобальных данных в программе не требует указания каких-либо их характеристик. Описания глобальных данных, объединенных в структуры, оформленные как программные модули без операторной части, транслируются отдельно по структурам. Эта особенность связана с большим числом глобальных данных в сложных КП. Для защиты памяти в программе могут указываться имена модулей, содержащих глобальные данные, к которым обращается программа. В то же время эта задача можег быть выполнена при контроле всего КП с информированием о несанкционированных применениях данных. [49]
Единственным способом обеспечить возможность доступа из различных задач к одним и тем же данным является использование глобальных данных. Вероятно, было бы желательно разрешить одновременный доступ к таким глобальным данным по чтению для произвольного числа задач, ограничив доступ к таким глобальным данным по записи только одной-единственной задачей. Вообще, использование глобальных данных считается потенциально опасным [143], а наличие параллельной обработки только ухудшает ситуацию. [50]
В МВК, как и во всех быстрых ЭВМ, используется КЭШ-память, которая организована здесь по функциональному принципу. Область выражений отображена на быстрые регистры. Имеется буфер для команд, который, например, позволяет избежать многократной выборки команд из более медленной - оперативной памяти при повторении циклического участка программы. Есть также буфер для хранения наиболее часто используемых элементов массивов и глобальных данных. Интересен динамический принцип распределения регистров, использованный в МВК. Аппаратура хранит списки занятых и - свободных регистров. Операции загрузки в стек переводятся в операции загрузки в регистр. Такой принцип распределения регистров позволяет изменить их число или даже формат команды, не опасаясь, что это потребует изменения существующих программ, что неизбежно произошло бы в случае традиционных ЭВМ. Заметим, что МВК требует довольно много регистров для области выражений. Это связано с тем, что одновременно выполняется несколько ( а не одна, как во многих ЭВМ) команд. Пока выполнение команд не завершится, все используемые ими регистры являются занятыми. [51]
Все подпрограммы - и процедуры, и функции, - должны иметь возможность обмениваться данными с теми компонентами программы, из которых они были вызваны. Подпрограммы получают входные данные от вызывающего компонента и передают ему выходные данные - результаты своей работы. Обмен информацией с подпрограммами может происходить через параметры подпрограмм и / или через глобальные данные. Глобальные данные - это переменные, доступные в равной степени и подпрограмме, и вызывающему компоненту. Организация глобальных данных будет рассмотрена в разделе Модули настоящей главы. [52]
Объем данных, на которые модуль может ссылаться, должен быть сведен к минимуму. Проектировщик должен попытаться изолировать сведения о любой конкретной структуре данных или записи в базе данных в отдельном модуле ( или небольшом подмножестве модулей), возможно, за счет использования информационно прочных модулей. Проблема глобальных данных не должна решаться передачей одного огромного списка параметров всем модулям. [53]
![]() |
Карты распределения для дисков типа DK. [54] |
СкаВае ВЗУ именем представляются в виде узлов дерева и образуют глобальный массив. Количество индексов соответствует уровню узла в дереве, индексы на одном уровне идентифицируют различные узлы. Узлы дерева, включая корень, могут содержать как данные, так и указатели на нижний уровень. Концевые узлы ( листья) содержат только данные. Физическая структура глобальных данных имеет вид сбалансированных В-деревьев. При этом данные независимо от количества индексов глобальной структуры хранятся только на нижнем уровне соответствующей физической структуры. [55]
Описание глобальных наборов данных следует включать не только в модули, которым они принадлежат, но и в модули, в которых они используются. Однако перепечатывать одни и те же длинные описания данных для каждого использующего их модуля весьма утомительно. Более того, практически невозможно обеспечить полное согласование между собой вариантов описаний, размещенных в разных местах программы. Для устранения этих трудностей в развитых системах разработки программного обеспечения имеется процедура Включить. В такой системе описание каждого набора глобальных данных оформляется в виде отдельного файла. Программисту достаточно вставить в комментарий фразу фВключить имя файла, чтобы ввести в него описание структуры данных. Процедура Включить, автоматически переписывает текст описания из соответствующего файла в комментарий к модулю. Таким образом, все изменения в описании набора данных автоматически вводятся во все комментарии, где эти описания присутствуют. Вместе с тем необходимо подчеркнуть, что за внесение всех требуемых измене ний в текст программы ответствен программист. [56]