Управление памятью компьютера

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

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

Существуют два класса систем управления памятью компьютера. Первые, при отсутствии достаточного количества оперативной памяти для одновременного хранения всех программ, перемещают процессы между оперативной памятью компьютера и диском во время их выполнения, осуществляя подкачку процессов целиком (swapping) или постранично (paging). Второй класс систем управление памятью компьютера сводит к увеличению размера оперативной памяти. Например, для мультимедийных систем накладываются большие требования на ее размер.

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

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

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

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

Инструменты