Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vstup.docx
Скачиваний:
47
Добавлен:
28.09.2019
Размер:
6.42 Mб
Скачать

2.8 Динамічний розподіл пам’яті. Організація віртуальної пам’яті.

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

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

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

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

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

Методы распределения памяти с использованием дискового пространства

Понятие виртуальной памяти

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

Таким образом, виртуальная память – это совокупность программно-аппаратных средств, позволяющих пользователям писать программы, размер которых превосходит имеющуюся оперативную память; для этого виртуальная память решает следующие задачи:

  • размещает данные в запоминающих устройствах разного типа, например, часть программы в оперативной памяти, а часть на диске;

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

  • преобразует виртуальные адреса в физические.

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

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

Системне програмне забезпечення

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]