Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 05.04.2005 | Доступ: свободный | Студентов: 17140 / 6007 | Оценка: 4.25 / 4.16 | Длительность: 12:55:00
Специальности: Разработчик аппаратуры
Лекция 15:

Система управления памятью

< Лекция 14 || Лекция 15: 12 || Лекция 16 >
Аннотация: Рассматриваются вопросы, связанные с распределением памяти, организацией виртуальной памяти на основе страничного распределения, а также сегментно-страничное представление памяти в персональной ЭВМ и методы сокращения времени адресного преобразования.

Организация распределения памяти в ЭВМ

Запоминающие устройства являются одной из основных частей любого компьютера. Их работа, как отмечалось ранее, строится по иерархическому принципу. От того, насколько рационально организовано использование памяти на каждом из уровней иерархии и взаимодействие между ЗУ различных уровней, во многом зависит эффективность работы ЭВМ.

Ключевую роль в этой иерархии играет оперативная память. Именно в ней хранятся программы во время их исполнения, именно отсюда загружаются в регистры микропроцессора исходные данные для обработки. Сюда же, как правило, передаются и окончательные результаты работы программ. Поэтому рациональное использование ОЗУ на протяжении всего времени работы ЭВМ чрезвычайно важно.

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

Распределение памяти предполагает удовлетворение потребностей как пользователей, так и системных средств. Эти требования в большей части противоречивы.

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

Требования пользователей к памяти весьма разнообразны: быстрое выполнение коротких программ, выделение оперативной памяти в размерах, превышающих физически существующую, легкость и простота взаимодействия с другими программами при использовании, например, общих процедур и т. п.

Вследствие этого распределение памяти всегда носит компромиссный характер.

Система управления памятью выполняет следующие основные функции [2]

  • учет состояния свободных и уже распределенных областей памяти и модернизация этой информации всякий раз, когда в распределении памяти производятся изменения;
  • распределение памяти для выполнения задач (определение, какой задаче, когда и в каком количестве выделить оперативную память);
  • непосредственное выделение задаче оперативной памяти; если свободные области оперативной памяти отсутствуют, то предварительное их освобождение путем сохранения информации во внешней памяти.

Все доступное множество адресов элементов хранения, упорядоченное по какому-либо признаку, называют адресным пространством памяти. Физическое адресное пространство организовано просто как одномерный массив ячеек, каждой из которых присвоен свой номер, называемый физическим адресом.

В общем случае, под адресом понимают некий идентификатор, однозначно определяющий расположение элемента хранения среди прочих элементов в составе среды хранения.

Для адресации данных в физическом адресном пространстве программы используют логическую адресацию. Процессор автоматически транслирует логические адреса в физические, выдаваемые на адресную шину и воспринимаемые схемами управления (контроллерами) памяти.

Существуют две стратегии распределения оперативной памяти, как и любого ресурса: статическое и динамическое распределение.

При статическом распределении вся необходимая оперативная память выделяется процессу в момент его порождения. При этом память выделяется единым блоком необходимой длины, начало которого определяется базовым адресом. Программа пишется в адресах относительно начала блока, а физический адрес команды или операнда при выполнении программы формируется как сумма базового адреса блока и относительного адреса в блоке. Значение базового адреса устанавливается при загрузке программы в оперативную память. Так как в разных программах используются блоки разной длины, то при таком подходе возникает проблема фрагментации памяти, то есть возникают свободные участки памяти, которые невозможно без предварительного преобразования использовать для вычислительного процесса.

Проиллюстрируем это простым примером.

Пусть ОП имеет объем 10 Мбайт, а для выполнения программ A, B, C, D требуются следующие объемы памяти: A - 2 Мбайт, B - 1 Мбайт, C - 4 Мбайт, D - 4 Мбайт. Начальное распределение памяти и распределение памяти после выполнения некоторых программ представлено на рис. 15.1.

Статическое распределение памяти:a - начальное распределение; б - после завершения программы  A;в - после завершения программы B; г - после завершения программы C

Рис. 15.1. Статическое распределение памяти:a - начальное распределение; б - после завершения программы A;в - после завершения программы B; г - после завершения программы C

Из рисунка видно, что программа D при статическом распределении памяти может быть загружена в оперативную память лишь после завершения выполнения всех предыдущих программ, хотя необходимый для нее объем памяти существовал уже после завершения работы программы A. В то же время для улучшения показателей работы мультипрограммной ЭВМ требуется, чтобы в оперативной памяти постоянно находилось возможно большее количество программ, готовых к выполнению.

Данную проблему можно частично решить перераспределением памяти после завершения выполнения каждой программы с целью формирования единого свободного участка, который может быть выделен новой программе, поступающей на обработку ( дефрагментация памяти ). Однако это требует трудоемкой работы системных средств и практически не используется.

< Лекция 14 || Лекция 15: 12 || Лекция 16 >
Илья Бекиров
Илья Бекиров
Кирилл Кондратьев
Кирилл Кондратьев