Cтраница 3
Списки данных могут храниться и в массивах, но связные списки предоставляют некоторые преимущества. Применение связных списков является уместным в том случае, когда число элементов, которые должны быть представлены в структуре данных, заранее не известно. Размер обычного массива в C не может быть изменен, поскольку он зафиксирован на этапе компиляции. Обычные массивы могут переполняться. Связные списки могут переполняться только в том случае, если у системы нет достаточного места для удовлетворения запросов по динамическому выделению памяти. [31]
Алгол - язык, предназначенный для компиляции. В большинстве реализаций Алгола программы и подпрограммы ком пилируются в машинные команды, и требуется лишь незначительный объем программного моделирования для некоторых примитивных операций. За небольшим исключением, языковые структуры разработаны так, что компилятор может проделать почти всю работу по созданию и обработке дескрипторов данных и получить довольно эффективный выполняемый код, рассчитанный везде, где это возможно, на прямое использование аппаратных структур. К наиболее важным исключениям следует отнести динамическое создание и уничтожение структур данных во время выполнения и динамические изменения сред ссылок, основанных на концепции статической блочной структуры ( разд. Однако использование динамически изменяющихся структур ограничено, так что может быть применен простой стековый механизм распределения памяти, основанный на активационных записях, которые создаются при входе в подпрограмму ( см. [ азд. Из-за динамического выделения памяти и необходимости модифицировать среду ссылок во время выполнения, программы на Алголе в общем случае не могут выполняться на традиционных ЭВМ столь же эффективно, как эквивалентные программы на Фортране. [32]
Вторая основная проблема, связанная с программами учета, это точность полученных данных. Состояние или использование компоненты могут изменяться на протяжении очень коротких промежутков времени. Скажем, центральный процессор может через каждые несколько микросекунд переключаться на выполнение другого задания. Поскольку ЦП считается главным элементом системы, большинство программ учета накапливает время его использования от задания к заданию. Если управляющая система допускает динамическое выделение заданию основной памяти, использование этой компоненты одним заданием учитывается с некоторым приближением. Приближение обычно связано со степенью точности, с которой программы учета прослеживают выделение памяти заданию. Мы обычно думаем о задании как о потребителе некоторого объема памяти, необходимого для его выполнения. Однако в системе с динамическим выделением памяти система выделяет заданию только такой объем памяти, который позволяет выполнять задание в данный момент. [33]