Cтраница 4
Система БОС1810 поддерживает динамическое распределение памяти, обеспечивает настройку на адрес во время загрузки и конфигурацию системы. [46]
Таким образом, динамическое распределение памяти, во-первых, обеспечивает наличие в оперативной памяти математит - ческих страниц, необходимых для выполнения всех программ, а во-вторых, постоянно освобождает в оперативной памяти одну из физических страниц путем удаления из ОЗУ отработанных страниц. Обе эти задачи реализуются в системе автоматически либо программным путем, либо с использованием программно-аппаратурных средств управления. [47]
В Фортране отсутствует динамическое распределение памяти, поэтому в программе обязательно указываются максимальные размеры используемых массивов. Индексы переменных с индексами не должны выходить за эти границы. Размерности массивов устанавливаются с помощью оператора DIMENSION. Любая переменная с индексом должна быть описана этим оператором. [48]
Пример распределения. [49] |
Один из способов динамического распределения памяти основан на использовании базовых регистров. Операционная система каждой пользовательской программе ставит в соответствие свой базовый адрес. Базовые адреса обрабатываемых программ находятся в общих регистрах. При выполнении программы реальный или физический адрес образуется суммированием базового и относительного адресов. При динамическом распределении памяти с помощью базовых регистров программа ( или, по крайней мере, та часть ее, адрес которой преобразуется с помощью одного и того же базового адреса) должна располагаться в последовательных ячейках и вводиться в ОП целиком, хотя в ближайшем цикле активности может потребоваться лишь небольшой фрагмент программы. [50]
При рассматриваемом способе динамического распределения памяти свободная память может состоять из несвязанных областей ( фрагментация памяти) и для ввода нужной программы может понадобиться сдвиг содержимого памяти. На рис. 14.7, а показано распределение памяти между программами А, В, С, D, из которых две ( А и D) являются в данный момент наименее активными и следовательно, могут рассматриваться как кандидаты на удаление во внешнюю память. Если вновь вводимая программа Е ( рис. 14.7, б) больше любой из программ Л и О, то для ее размещения в памяти необходимо, как показано на рис. 14.7, в, сдвигать программы В и С. Это перемещение связано с потерей времени. Более того, в ряде систем подобное перемещение требует выполнения заново операции редактирования связей в программе и новой загрузки программы. [51]
Один из способов динамического распределения памяти основан на использовании базовых регистров. [52]
Пример распределения памяти. [53] |
При рассматриваемом способе динамического распределения памяти свободная память может состоять из несвязанных областей ( фрагментация памяти) и для ввода нужной программы может понадобиться сдвиг содержимого памяти. Если вновь вводимая программа Е ( рис. 14.5 6) больше, чем любая из программ А и D, то для ее размещения в памяти необходимо, как показано на рис. 14.5, в, сдвигать программы В и С. Это перемещение связано с потерей времени. Более того, в ряде систем подобное перемещение требует выполнения заново операции редактирования связей в программе и новой загрузки программы. [54]
Радикальным средством реализации динамического распределения памяти является стек. [55]
Графическое представление списка. [56] |
Использование вместо массивов динамического распределения памяти для структур данных, которые могут увеличиваться или уменьшаться во время счета, способствует экономному использованию ресурсов памяти. Однако имейте ввиду, что указатели занимают некоторое место в памяти и что динамическое распределение приводит к нерациональному использованию памяти при обращениях к функциям. [57]