339
Динамическое распределение памяти. Виртуальная
страничная и сегментная память. Эффективное распределение
ресурсов памяти между программами не может быть статиче-
ским, т. е. не может производиться предварительно до пуска про-
граммы. В процессе обработки программ потребности в ресурсах
памяти отдельных программ изменяются, что заранее не может
быть учтено. Зачастую целесообразнее распределять память меж-
ду программами динамически непосредственно в ходе вычисли-
тельного процесса, т. е. осуществлять динамическое распределе-
ние памяти. При этом должна обеспечиваться возможность неза-
висимой работы программистов над своими программами, подле-
жащими мультипрограммной обработке.
Необходимо отметить, что динамическое распределение па-
мяти не должно приводить к дроблению ее свободного простран-
ства — фрагментации памяти,
затрудняющему ее использование.
Это достигается организацией одноуровневой виртуальной памя-
ти, допускающей адресацию на все адресное пространство. Размер
его определяется количеством разрядов, которые могут быть ис-
пользованы для представления адреса. К тому же в мультипро-
граммных системах размещение всех исполняемых программ пол-
ностью в ОП во многих случаях невыполнимо: программы часто
имеют
большую длину, а емкости существующих ОП ограничен-
ны. Однако нет принципиальной необходимости в том, чтобы вся
программа находилась в ОП, так как в любой момент времени ра-
бота программы концентрируется на определенных сравнительно
небольших участках. Таким образом, в ОП следует хранить только
используемые в данный период времени части программ, а
неис-
пользуемые части могут располагаться во ВЗУ. Программируя
свою программу, программист не знает, в комбинации с какими
программами будет выполняться его программа, какое место в па-
мяти отведет ей операционная система.
При подготовке программ используются условные адреса.
Позднее в процессе выполнения программы операционная система
выделяет активным частям программы место в памяти
и условные
адреса переводятся в исполнительные. Эта процедура получила
название динамического распределения памяти.