Динамическое распределение памяти

Лекция 8. Управление памятью. Виртуальная память

Вопросы для самопроверки

 

1) Что такое память? Назовите основные характеристики памяти. В чём заключается суть иерархической структуры памяти?

2) Приведите условное изображение простейшего ЗУ и поясните его основные сигналы.

3) Поясните особенности адресных ЗУ. На какие подвиды подразделяются адресные ЗУ? Дайте характеристику последовательным ЗУ, укажите их особенности. В чём заключаются характерные особенности ассоциативных ЗУ? Назовите виды перспективных на сегодняшний день ЗУ.

4) Приведите структуру модуля основной памяти, поясните принципы работы. Какие типы конструктивных модулей памяти существуют в настоящее время?

5) Что представляет собой стек? В чём заключается логика работы стековой памяти? Приведите схему организации стека на примере процессора Intel 8086. Что такое вершина стека? Какие основные команды используются для работы со стеком, и как изменяется при этом состояние стека? Приведите примеры.

6) В чём заключаются принципы построения ассоциативной памяти? Приведите структурную схему ассоциативной памяти и поясните особенности её работы.

7) Что такое флэш-память? Назовите её особенности. Какие различают микросхемы флэш-памяти по способу организации массива запоминающих элементов? В чём заключаются особенности флэш-памяти с ячейками NOR и с ячейками NAND? Назовите особенности флэш-памяти с ячейками MLC.

8) Что такое кэш-память? Какие выделяют уровни кэш-памяти? Поясните принципы работы кэш-памяти.

9) Что представляет собой структура оперативной памяти с пакетным доступом и чередованием банков, с конвейерным доступом и чередованием банков? За счёт чего достигается повышение скорости обмена данными между процессором и памятью? Каким образом осуществляется обмен данными при сочетании пакетного и конвейерного методов доступа?

 

Согласно /1, 4, 6/, непосредственно адресуемая процессором оперативная память (ОП) имеет сравнительно небольшой объём, что в большинстве случаев не позволяет её вместить все команды и данные исполняемых программ. Обычно в памяти содержатся только их фрагменты. Все программы и данные хранятся во внешней относительно дешёвой памяти – ВЗУ. Поскольку процессор не имеет прямого доступа к ВЗУ, команды и данные исполняемой программы предварительно надо переписать в ОП. Ещё больше трудностей возникает в многозадачном режиме работы ВМ, когда в ОП одновременно должны храниться команды и данные нескольких задач. На ОС возлагаются функции по распределению ресурса ОП между отдельными программами. Так как заранее неизвестно, какие программы и в какой комбинации могут выполняться, распределение памяти между программами должно осуществляться динамически в ходе вычислений. Процедура, при которой ОС активным частям программ выделяет определённые области ОП и осуществляет привязку адресов загружаемым программам к конкретным адресам физикой ОП, называется динамическим распределением памяти.

В основе всех известных методов динамического распределения памяти лежат 2 положения: 1) каждому заданию (процессу) необходимо выделять непрерывную и перемещаемую область памяти, и 2) должна обеспечиваться возможность попеременной загрузки заданий в ОП.

Для организации обменов между ВЗУ и ОП внешняя память представляется в виде набора частей (блоков) отдельных программ. Если требуемый фрагмент программы отсутствует в ОП, процессор обращается к ОС которая, используя специальные процедуры, считывает из внешней памяти в ОП соответствующий блок. Если для требуемого фрагмента в ОП недостаточно места, то ОС предварительно освобождает такое место, пересылая неиспользуемые блоки из ОП в ВЗУ. Перемещаемость программ при их размещении в ОП можно обеспечить, если для адресации операндов внутри каждого блока использовать метод базирования (см. относительные режимы адресации в лекции 5). Этот метод предполагает, что все программы представлены в относительных адресах с началом в нулевой ячейке. Тогда адрес операнда определяется базовым адресом (сохраняется в одном из сегментных регистров процессора) и смещением относительно этого базового адреса (указывается или вычисляется в команде). Путём изменения содержимого сегментных регистров программы можно перемещать в ОП, не нарушая их внутренней адресации.

Попеременная загрузка заданий (программ) в современных ВМ осуществляется путём свопинга (от англ. swap – обмен) между ОП и ВЗУ. В мультипрограммных системах такой обмен осуществляется автоматически (без участия программиста) с помощью специальных программно-аппаратных средств под управлением ОС.

Динамическое распределение памяти тесно связано с понятием виртуальной памяти. Согласно /6/, под виртуализацией памяти понимается метод автоматического управления иерархической памятью, при котором программисту кажется, что он имеет дело с единой памятью большой ёмкости и высокого быстродействия. Эту память называют виртуальной (кажущейся). Впервые идея виртуализации памяти появилась в 1959 году.

В соответствии с /1, 6/, использование виртуальной памяти позволяет писать программы, размер которых превосходит имеющуюся ОП. При этом с помощью виртуальных (логических) адресов обеспечивается адресация всего адресного пространства ВМ, которая, напомним, зависит от разрядности шины адреса. Систему виртуальной памяти можно представить в виде одноуровневой логической и двухуровневой (ОП и ВЗУ) физической памяти. Адреса, к которым программа может обратиться, образуют виртуальное адресное пространство системы, а реальные адреса – физическое адресное пространство, причём линейное, состоящее из N ячеек разрядностью n. Программа пишется в виртуальных адресах, но для её выполнения требуется, чтобы обрабатываемые команды и данные находились в ОП. Для этого необходимо, чтобы каждому виртуальному адресу соответствовал физический адрес.

Все операции по управлению виртуальной памятью, динамическому распределению памяти и преобразованию адресов в ВМ выполняются автоматически. В современных процессорах некоторые из указанных функций реализуются с помощью специального контроллера управления памятью MMU (Memory Management Unit).

Среди моделей виртуальной памяти можно выделить сегментную, страничную и сегментно-страничную организацию виртуальной памяти.