Скачать презентацию Управление памятью   Основное управление памятью Основной Скачать презентацию Управление памятью Основное управление памятью Основной

3_Управление памятью.ppt

  • Количество слайдов: 21

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

 Основное управление памятью Основной составляющей любой ВС является памятью которая должна быть максимально Основное управление памятью Основной составляющей любой ВС является памятью которая должна быть максимально быстрой, большой и дешевой. Всем требованиям удовлетворить трудно, поэтому система памяти конструируется в виде иерархии слоев. Верхний – внутренние регистры ЦП, быстрые, возможность хранения – 32 х32 бит или 64 х64 бит (меньше килобайта). Программы управляют регистрами безаппаратурно. Следующий слой – кэш-память, контролируемая оборудованием, разделенная на кэш-строки по 64 байт (0 -63, 64 -127 и т. д. ). Наиболее часто используемые строки –внутри ЦП. Обращение к кэшу – 2 такта. Ограничена в размере, дорогая. Возможны 2 -3 уровня кэша более медленные. Память Время доступа Объем Регистры 1 нс <1 Кб Кэш 2 нс 1 Мб Основная память 10 нс 2048 Мб и > Магнитный диск 10 мс …Гб Магнитная лента (стриммерная) 100 с > МД в 2 -3 раза

Кроме основных регистров для хранения переменных и временных результатов, есть специальные: - счетчик (PC Кроме основных регистров для хранения переменных и временных результатов, есть специальные: - счетчик (PC - program counter), который содержит адрес следующей команды, стоящей в очереди на выполнение. После выбора команды из памяти, регистр команд корректируется и осуществляется переход к следующей команде. -указатель стека (SP- stack pointer) – содержит адрес вершины стека в памяти. Стек содержит по 1 фрейму (области данных) для каждой выполняемой, но не законченной процедуры (хранит входные параметры, переменные для каждой процедуры) - слово состояния процессора (PSW- processor status word) содержит биты кода состояния, которые задаются режимом, приоритетом, командами сравнения и др. , что необходимо при системных вызовах и вводе-выводе.

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

 Однозадачная система без подкачки на диск Самая простая из возможных схем управления памятью Однозадачная система без подкачки на диск Самая простая из возможных схем управления памятью заключается в том, что в каждый конкретный момент времени работает только одна программа, при этом память разделяется между программами и операционной системой. На рис. 1 показаны три варианта такой схемы. Операционная система может находиться в нижней части памяти, то есть в ОЗУ (оперативное запоминающее устройство, RAM (Random Access Memory — память с произвольным доступом)) — см. рис. 1, а. Или же операционная система может располагаться в самой верхней части памяти—в ПЗУ (постоянное запоминающее устройство, ROM (Read-Only Memory — память только для чтения)), как продемонстрировано на рис. 1, б. И третий способ: драйверы устройств могут находиться наверху в ПЗУ, а остальная часть системы — в ОЗУ, расположенной ниже, как показано на рис. 1, в.

Первая модель. раньше применялась на мэйнфреймах и мини- компьютерах, но в настоящее время практически Первая модель. раньше применялась на мэйнфреймах и мини- компьютерах, но в настоящее время практически не употребляется. Вторая схема сейчас используется на некоторых карманных компьютерах и встроенных системах, а третья модель устанавливалась на ранних персональных компьютерах (например, работающих с MS-DOS), при этом часть системы в ПЗУ носила название BIOS (Basic Input Output System — базовая система ввода-вывода). Когда система организована таким образом, в каждый конкретный момент времени может работать только один процесс. Как только пользователь набирает команду, операционная система копирует запрашиваемую программу с диска в память и выполняет ее, а после окончания процесса выводит на экран символ приглашения и ждет новой команды. Получив команду, она загружает новую программу в память, записывая ее поверх предыдущей.

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

 Многозадачность с фиксированными разделами Самый легкий способ достижения многозадачности представляет собой простое разделение Многозадачность с фиксированными разделами Самый легкий способ достижения многозадачности представляет собой простое разделение памяти на n (возможно не равных) разделов. Когда задание поступает в память, его можно расположить во входной очереди к наименьшему разделу, достаточно большому для того, чтобы вместить это задание. На рис. 2, а показано, как выглядит система с фиксированными разделами и отдельными очередями входных заданий. Недостаток упорядочения входящих заданий по отдельным очередям становится очевидным, когда к большому разделу очередь отсутствует, в то время как к маленькому выстроилось в нетерпении довольно много задач; в нашем примере на рис. 2, а это разделы 1 и 3. Альтернативная схема заключается в организации одной общей очереди для всех разделов, как показано на рис. 2, б: как только раздел освобождается, задачу, ближайшую к началу очереди и подходящую для выполнения в этом разделе, можно загрузить в него и начать ее обработку

 Фиксированные разделы памяти с отдельными входными очередями для каждого раздела (а); фиксированные разделы Фиксированные разделы памяти с отдельными входными очередями для каждого раздела (а); фиксированные разделы памяти с одной очередью на вход (б)

 Зависимость степени загрузки ЦП (а)от количества процессов в памяти 100% 20% 50% ожидания Зависимость степени загрузки ЦП (а)от количества процессов в памяти 100% 20% 50% ожидания вв-выв 80% ожидания вв-выв Степень многозадачности n а=1 -рn

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

 Предоставление пространства для роста области данных (а); предоставление пространства для роста стека и Предоставление пространства для роста области данных (а); предоставление пространства для роста стека и области данных (б)

 Управление памятью с помощью битовых массивов а — область памяти с пятью процессами Управление памятью с помощью битовых массивов а — область памяти с пятью процессами и тремя свободными участками; б — соответствующая битовая карта; в — та же информация в виде списка

 Управление памятью с помощью связных списков Четыре комбинации соседства для завершения процесса X Управление памятью с помощью связных списков Четыре комбинации соседства для завершения процесса X

Другой способ отслеживания состояния памяти предоставляет поддержка списков занятых и свободных фрагментов памяти, где Другой способ отслеживания состояния памяти предоставляет поддержка списков занятых и свободных фрагментов памяти, где фрагментом является или процесс, или участок между двумя процессами Каждая запись в списке указывает: является ли область памяти свободной (Н, от hole — дыра) или занятой процессом (Р, process); адрес, с которого начинается эта область; ее длину; содержит указатель на следующую запись. В нашем примере список упорядочен по адресам. Такая сортировка имеет следующее преимущество: когда процесс завершается или выгружается на диск, изменение списка представляет собой тривиальную операцию.

1. Простейший алгоритм представляет собой выбор первого подходящего участка. Менеджер памяти просматривает список областей 1. Простейший алгоритм представляет собой выбор первого подходящего участка. Менеджер памяти просматривает список областей до тех пор, пока не находит достаточно большой свободный участок. Затем этот участок делится на два: одна часть отдается процессу, а другая остается неиспользуемой. Это быстрый алгоритм, поскольку поиск минимизирован настолько, насколько возможно. 2. Алгоритм следующего подходящего участка действует с минимальными отличиями от правила «первый подходящий» . Он работает так же, как и первый алгоритм, но всякий раз, когда находится соответствующий свободный фрагмент, запоминается его адрес. И когда алгоритм в следующий раз вызывается для поиска, он стартует с того самого места, где остановился в прошлый раз, вместо того чтобы снова и снова начинать поиск от головы списка, как это делает алгоритм «первый подходящий» .

3. Другой алгоритм называется «самый подходящий участок» *. Здесь выполняется поиск по всему списку 3. Другой алгоритм называется «самый подходящий участок» *. Здесь выполняется поиск по всему списку и выбирается наименьший по размеру подходящий свободный фрагмент. Вместо того чтобы делить большую незанятую область, которая может понадобиться позже, этот алгоритм пытается найти участок, наиболее приближенный к действительно необходимым размерам. «Самый подходящий» медленнее «первого подходящего» , так как алгоритм каждый раз должен производить поиск во всем списке 4. Раз «подходящие» алгоритмы не всегда устраивают, можно попытаться решить проблему разделения памяти на практически точно совпадающие с процессом области и маленькие свободные фрагменты, то есть представить алгоритм «самый неподходящий участок» . Он всегда выбирает самый большой свободный фрагмент, размер которого после дробления остается еще достаточным для дальнейшего использования

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

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

5. Еще один алгоритм распределения называется «быстрый подходящий» , он поддерживает отдельные списки для 5. Еще один алгоритм распределения называется «быстрый подходящий» , он поддерживает отдельные списки для некоторых из наиболее часто запрашиваемых размеров. Например, могла бы существовать таблица с п записями, в которой первая запись указывает на начало списка свободных фрагментов размером 4 Кбайт, вторая запись является указателем на список незанятых областей размером 8 Кбайт, третья — 12 Кбайт и т. д. Но этот алгоритм имеет тот же недостаток, что и прочие схемы, которые сортируют свободные области по размеру, а именно: если процесс завершается или выгружается на диск, поиск его соседей с целью узнать, возможно ли их объединение, является затратной операцией. А если не производить слияния областей, память очень скоро окажется разбитой на огромное число маленьких свободных фрагментов, в которые не поместится ни один процесс.

 Буферы быстрого преобразования адреса (TLB) Буфер быстрого преобразования памяти для увеличения скорости страничной Буферы быстрого преобразования адреса (TLB) Буфер быстрого преобразования памяти для увеличения скорости страничной подкачки