mda

mda

Xalion

Мы разобрали страничную память и механизмы вызова страниц.
Страничная память использует одно виртуальное адресное пространство. В этом пространстве друг за другом лежат страницы. Сегментная память использует много виртуальных адресных пространств. Каждое пространство не зависит от других. Такие пространства называются сегментами. В сегменте хранятся однотипные элементы: сегмент с типами переменных программы или сегмент для стека.
ОС использует сегментную память когда заранее не известно, сколько памяти понадобиться для какого-то процесса. Например, компилятор пихает в память количество переменных программы, их типы и стек вызовов процедур.
Страничная память расположит их так.
Когда в стек будут помещаться новые элементы, произойдет одна из двух проблем. Стек не сможет больше принять в себя вызовы, или он перезапишет следующую страницу.
Сегменты расширяются и уменьшаться без проблем. В сегменте удобно компилировать процедуры. Если потом программист перепишет процедуру, ОС не придётся менять границы следующих процедур потому что они в разных сегментах.

Если программы работают параллельно или имитиуреют это, то можно не создавать копию процедуры для каждой программы, а просто каждую процедуру поместить в отдельный сегмент. Получится экономия памяти. О страницах программист н езнает, но о сегментах знает и работает с ними. Сегменты можно защищать. Например установить правила только записи или только выполнения на сегмент.

Report Page