Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_na_gosy_fm.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
447.49 Кб
Скачать

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

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

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

Распределение памяти статическими и динамическими разделами

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

Начнем с методов неразрывного распределения памяти. Самая простая схема распределения памяти между несколькими задачами предполагает, что память, не занятая ядром операционной системы, может быть разбита на несколько непрерывных частей — разделов (partitions, regions). Разделы характеризуются именем, типом, границами (как правило, указываются начало раздела и его длина).

Разбиение памяти на несколько непрерывных (неразрывных) разделов может быть фиксированным (статическим) либо динамическим (то есть процесс выделения нового раздела памяти происходит непосредственно при появлении новой задачи). Вначале мы кратко рассмотрим статическое распределение памяти на разделы.

Распределение статическими и динамическими разделами Для организации мультипрограммного режима необходимо обеспечить одновременное расположение в оперативной памяти нескольких задач. Самая простая схема распределения памяти предполагает, что память, незанятая ядром ОС, сожжет быть разбита на несколько непрерывных разделов. Разделы характеризуются именем, типом, границами (начало, конец и длина). Разбиение на несколько непрерывных разделов может быть фиксированным (статическим), либо динамическим (выделение нового раздела происходит при появлении новой задачи). . Распределение памяти разделами с фиксированными границами В каждом разделе в каждый момент времени может располагаться по одной программе. При небольшом объеме памяти увеличение количества параллельно выполняемых приложений можно за счет свопинга (swapping). При свопинге задача целиком перемещается во внешнюю память, а на ее место загружается другая задача, находившаяся на диске в приостановленном состоянии. Серьезная проблема, которая возникает при организации мультипрограммного режима, - это защита самой ОС, так и других задач друг от друга. Основным недостатком такого способа распределения памяти является наличие достаточно большого объема неиспользуемой памяти ( рис. 2). Такие потери называют фрагментацией памяти. Избежать этого можно двумя способами:

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

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

Проблемы фрагментации

Почему мы не любим фрагментацию? Да потому, что скорость работы с файлами падает. Невозможность считать файл последовательно приводит к замедлению работы с диском. Все бы ничего, обычным пользователям редко нужна такая высокая скорость работы с диском, потери могли бы быть несущественными. Но дело в том, что в Windows виртуальная память находится на том же самом диске, что и файлы. А Windows использует виртуальную память (или файл подкачки) регулярно. Поэтому в случае сильно фрагментированного диска компьютер может начинать сильно тормозить не только при работе с диском. Между прочим, Линукс сильно выигрывает в этом смысле, для виртуальной памяти там используется отдельный раздел.

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

Дефрагментация

Дефрагментация - процесс устранения фрагментации. Файлы выстраиваются так, чтобы каждый (по возможности) был записан на диске единым куском. В Windows XP ее можно было запустить через "Пуск" - "Программы", - группа "Стандартные", группа "Служебные" - команду "Дефрагментация диска". Ничего сложного в этой утилите нет, нужно только выбрать диск, нажать кнопку анализ, а потом и дефрагментация

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