Разделы:
Best links:
Управление памятью
Основные достоинства способа распределения разделами — простота и отсутствие специальных аппаратных средств. Однако по мере завершения заданий и загрузки новых заданий начинают появляться все меньшие и меньшие области памяти — возникает проблема фрагментации (рис. 7.9, а) . При большом числе таких небольших свободных областей система не сможет загрузить задание, даже если общий объем доступного пространства достаточно велик; иначе говоря, значительная часть памяти не используется.
Один из способов решения проблемы фрагментации заключается в том, чтобы объединить все свободные области в одну, "сжимая" или "уплотняя" находящиеся в памяти задания. как показано на рис. 7.9, б. Так реализуется способ распределения разделов с перемещением. Но для его применения компьютер должен иметь возможность корректировать каждое задание так, чтобы после его перемещения из одной области в другую можно было правильно возобновить выполнение задания.
Рис. 7.8. Слияние свободных разделов Рис. 7.9. Фрагментация памяти (а)
и загрузка задания (б)
В ЦП все физические адреса формируются сложением эффективных и сегментных адресов, умноженных на 16. причем сегментные адреса берутся из сегментных регистров. Такой способ позволяет легко преобразовать программу в позиционно-независимый код и пересылать ее из одной области памяти в другую без модификации машинного кода. При выполнении перемещения монитор должен скорректировать сегментные адреса (т. е. содержимое сегментных регистров).
Чтобы обеспечить позиционную независимость, сегментными регистрами должна управлять только процедура управления памятью, а программа не должна их модифицировать. Кроме того, все вызовы процедур и переходы должны иметь тип near. В противном случае, если CS был запомнен вызовом до перемещения, а возврат осуществляется после перемещения, CS будет содержать старый сегментный адрес и программа возвратится в неправильное место. Так как переместимой программе не разрешается модифицировать сегментные регистры, задание может иметь максимум четыре сегмента (кода, данных, дополнительных данных и стека) и максимальный размер задания ограничен 4 х 64К= 256K.
предыдущаяследующая© Copyright, 2009.
Для связи: info@dgs-srl.com.