Способ совместного функционирования двух типов устройств это кэш память свопинг оверлей

Обновлено: 07.07.2024

Презентация на тему: " Операционные системы Управление памятью Скрипов Сергей Александрович skripov@csu.ru 2009." — Транскрипт:

1 Операционные системы Управление памятью Скрипов Сергей Александрович 2009

2 Типы адресов Символьные имена. Виртуальные адреса. Физические адреса.

3 Алгоритмы распределения памяти

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

5 Распределение памяти фиксированными разделами

6 + Простота реализации -Ограничение на количество процессов в системе (процессов не может быть больше, чем разделов) -Ограничение на максимальное количество используемой памяти (процесс не может выполниться, если он не входит ни в один раздел) -Неоптимальное использование памяти (процесс в любом случае занимает весь раздел)

7 Распределение памяти динамическими разделами Сначала вся память свободна Каждому новому процессу выделяется столько памяти, сколько ему нужно После завершения процесса, выделенная ему память освобождается

8 Распределение памяти динамическими разделами Функции ОС для управления динамической памятью Ведение таблиц свободных и занятый участков (в которых указываются начальные адреса и размеры участков) При создании нового процесса – выбор подходящего свободного участка памяти по определенным правилам (первый попавшийся раздел, наименьший достаточный, наибольший достаточный)

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

10 + Отсутствие ограничений способа с фиксированными разделами; возможность более гибкого управления памятью. -Накладные расходы на ведение таблиц свободных/занятых участков (хотя относительно небольшие) -Фрагментация памяти. Наличие свободных участков, в которые не помещается ни один процесс.

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

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

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

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

16 Использование внешней памяти Виртуальная память + Позволяет полностью или почти полностью скрыть от прикладной программы реальную организацию памяти – каждый процесс имеет «личное» адресное пространство, которое практически не ограничено в размерах. + Позволяет защитить процессы друг от друга

17 Использование внешней памяти Виртуальная память -Большие накладные расходы на преобразование виртуального адреса в физический. (Проблема решается аппаратной поддержкой виртуальной памяти) -Непредсказуемо время доступа к памяти (Частично решается применением алгоритмов, предсказывающих обращения к памяти)

18 Использование внешней памяти Виртуальная память Страничное распределение памяти Сегментное распределение памяти Сегментно-страничное распределение

19 Страничное распределение Физическая память делится на части фиксированного размера – страницы Виртуальное адресное пространство также делится на страницы аналогичного размера Виртуальная страница может либо находиться в физической памяти, либо быть выгруженной на жесткий диск Для каждого процесса хранится таблица страниц

20 Страничное распределение Запись таблицы страниц включает следующую информацию: номер физической страницы; признак присутствия; признак модификации страницы; признак обращения к странице.

22 Преобразование виртуального адреса в физический

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

25 Преобразование виртуального адреса в физический

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

27 Страничное распределение Стратегия замещения 1. FIFO алгоритм. Выгрузка самой старой страницы. + Просто в реализации - Эта стратегия с достаточной вероятностью будет приводить к замещению активно используемых страниц

28 Страничное распределение Стратегия замещения 2. Выгрузка дольше всего не использовавшейся страницы. LRU (The Least Recently Used) + Считается хорошей стратегией - Сложно в реализации - Требуется аппаратная поддержка

29 Страничное распределение Стратегия замещения 3. Выгрузка редко используемой страницы. NFU (Not Frequently Used) + Считается хорошей стратегией (В некоторых случаях лучше, чем LRU) - Сложно в реализации - Требуется аппаратная поддержка - Алгоритм «ничего не забывает»

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

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

32 Сегментное распределение Запись таблицы сегментов включает следующую информацию: базовый физический адрес сегмента; размер сегмента; правила доступа к сегменту; признаки модификации, присутствия и обращения.

34 Преобразование виртуального адреса в физический

35 Сегментно-страничное распределение 1. Используется страничный механизм, и «поверх» него сегментный 2. Используется сегментный механизм, каждый сегмент делится на страницы

37 Преобразование виртуального адреса в физический

39 Преобразование виртуального адреса в физический

40 Кэширование данных Память вычислительной машины представляет собой иерархию запоминающих устройств. При уменьшении времени доступа растет стоимость памяти, и, соответственно уменьшается ее объем

41 Кэширование данных Регистры процессора Являются неотъемлемой частью процессора, обеспечивают очень высокое быстродействие. Регистры собираются из элементов для хранения информации – триггеров.

42 Кэширование данных Триггер

43 Кэширование данных Статическая оперативная память с произвольным доступом (SRAM, static random access memory) Выполнена из триггеров. Время доступа обычно больше, чем у регистров, так как необходимо время для выбора информации по нужному адресу

44 Кэширование данных SRAM + Быстрый доступ. Доступ к любой ячейке памяти в любой момент занимает одно и то же время. + Простая схемотехника SRAM не требуются сложные контроллеры.

45 Кэширование данных SRAM - Высокое энергопотребление. - Невысокая плотность записи (шесть элементов на бит). Вследствие чего дороговизна килобайта памяти.

46 Кэширование данных DRAM (dynamic random access memory) DRAM-память представляет собой набор запоминающих ячеек, которые состоят из конденсаторов и транзисторов Конденсаторы заряжают в случае, когда в ячейку записывается 1, и разряжают в случае, когда в ячейку необходимо записать 0. Для поддержания необходимого напряжения на обкладках конденсаторов ячеек и сохранения их содержимого, их необходимо периодически подзаряжать

47 Кэширование данных DRAM (dynamic random access memory) + Высокая плотность записи + Небольшое энергопотребление - Относительно большое время доступа

48 Кэширование данных Внешняя память + Невысокая стоимость хранения байта информации - Большое время доступа

50 Кэш-память (cache), способ совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных

51 Кэширование данных Содержимое кэш-памяти представляет собой совокупность записей: значение элемента данных; адрес элемента данных в основной памяти; дополнительная информация;

52 Кэширование данных При каждом обращении к основной памяти просматривается содержимое кэш-памяти Если данные обнаруживаются – они считываются, результат передается источнику запроса (кэш-попадание) Если данные отсутствуют (кэш- промах)– они считываются из основной памяти и копируются в кэш

54 Согласование данных 1. Сквозная запись Если данные в кэше отсутствуют, то запись выполняется только в основную память Если данные находятся в кэше, то запись выполняется одновременно в кэш и основную память.

55 Согласование данных 2. Обратная запись. Если данные в кэше отсутствуют, то запись выполняется только в основную память Если данные находятся в кэше, то запись производится только в кэш-память, в описателе данных делается специальная отметка

56 Отображение основной памяти на кэш Ассоциативный поиск со случайным отображением Элемент оперативной памяти может быть размещен в произвольном месте кэш-памяти. Данные помещаются вместе с их адресом Электронная реализация памяти позволяет параллельный поиск произвольного адреса.

57 Ассоциативный поиск со случайным отображением

58 -Дорого в реализации +Эффективное использование всего пространства кэш-памяти

59 Детерминированный способ отображения Элемент основной памяти всегда отображается в одно и то же место Кэш-память разделена на строки, одному номеру строки соответствует несколько адресов основной памяти +Дешевизна -Неэффективное использование кэш- памяти

60 Детерминированный способ отображения

61 Смешанный способ отображения Произвольный адрес основной памяти отображается на группу адресов кэш- памяти

Чтобы обеспечить эффективный контроль использования памяти, ОС должна выполнять следующие функции:

  • отображение адресного пространства процесса на конкретные области физической памяти;
  • распределение памяти между конкурирующими процессами;
  • контроль доступа к адресным пространствам процессов;
  • выгрузка процессов (целиком или частично) во внешнюю память, когда в оперативной памяти недостаточно места;
  • учет свободной и занятой памяти.

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

Простейшие схемы управления памятью

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

Схема с фиксированными разделами

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

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

Эта схема была реализована в IBM OS/360 ( MFT ), DEC RSX-11 и ряде других систем.

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


Рис. 8.4. Схема с фиксированными разделами: (a) – с общей очередью процессов, (b) – с отдельными очередями процессов

Очевидный недостаток этой схемы – число одновременно выполняемых процессов ограничено числом разделов.

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

Один процесс в памяти

Частный случай схемы с фиксированными разделами – работа менеджера памяти однозадачной ОС. В памяти размещается один пользовательский процесс. Остается определить, где располагается пользовательская программа по отношению к ОС – в верхней части памяти, в нижней или в средней. Причем часть ОС может быть в ROM (например, BIOS, драйверы устройств). Главный фактор, влияющий на это решение, – расположение вектора прерываний, который обычно локализован в нижней части памяти, поэтому ОС также размещают в нижней. Примером такой организации может служить ОС MS-DOS.

Защита адресного пространства ОС от пользовательской программы может быть организована при помощи одного граничного регистра, содержащего адрес границы ОС.

Оверлейная структура

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

Потребность в таком способе загрузки появляется, если логическое адресное пространство системы мало, например 1 Мбайт (MS-DOS) или даже всего 64 Кбайта (PDP-11), а программа относительно велика. На современных 32-разрядных системах, где виртуальное адресное пространство измеряется гигабайтами, проблемы с нехваткой памяти решаются другими способами (см. раздел "Виртуальная память").


Рис. 8.5. Организация структуры с перекрытием. Можно поочередно загружать в память ветви A-B, A-C-D и A-C-E программы

Коды ветвей оверлейной структуры программы находятся на диске как абсолютные образы памяти и считываются драйвером оверлеев при необходимости. Для описания оверлейной структуры обычно используется специальный несложный язык (overlay description language). Совокупность файлов исполняемой программы дополняется файлом (обычно с расширением . odl ), описывающим дерево вызовов внутри программы. Для примера, приведенного на рис. 8.5, текст этого файла может выглядеть так:

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

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

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

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

Динамическое распределение. Свопинг

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

Выгруженный процесс может быть возвращен в то же самое адресное пространство или в другое. Это ограничение диктуется методом связывания . Для схемы связывания на этапе выполнения можно загрузить процесс в другое место памяти.

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

Схема с переменными разделами

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


Рис. 8.6. Динамика распределения памяти между процессами (серым цветом показана неиспользуемая память)

В какой раздел помещать процесс? Наиболее распространены три стратегии.

  • Стратегия первого подходящего (First fit). Процесс помещается в первый подходящий по размеру раздел.
  • Стратегия наиболее подходящего ( Best fit ). Процесс помещается в тот раздел, где после его загрузки останется меньше всего свободного места.
  • Стратегия наименее подходящего (Worst fit). При помещении в самый большой раздел в нем остается достаточно места для возможного размещения еще одного процесса.

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

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

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

Статистический анализ показывает, что пропадает в среднем 1/3 памяти! Это известное правило 50% (два соседних свободных участка в отличие от двух соседних процессов могут быть объединены).

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

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

Основные методы распределения памяти:

Без использования внешней памяти (например: HDD)

С использованием внешней памяти

6.2 Методы без использования внешней памяти

6.2.1 Однозадачная система без подкачки на диск

Память разделяется только между программой и операционной системой.

Схемы разделения памяти:

Схемы разделения памяти

Третий вариант используется в MS-DOS. Та часть, которая находится в ПЗУ, часто называется BIOS.

6.2.2 Распределение памяти с фиксированными разделами.

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

Системы могут иметь:

общую очередь ко всем разделам

к каждому разделу отдельную очередь

Распределение памяти с фиксированными разделами

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

Алгоритмы планирования в случае одной очереди:

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

Также может быть смешанная система.

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

В такой системе сначала память свободна, потом идет динамическое распределение памяти.

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

Перемещаемые разделы

Это один из методов борьбы с фрагментацией. Но на него уходит много времени.

Рост разделов

Иногда процессу может понадобиться больше памяти, чем предполагалось изначально.

Настройка адресов и защита памяти

В предыдущих примерах мы можем увидеть две основные проблемы.

Настройка адресов или перемещение программ в памяти

Защита адресного пространства каждой программы

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

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

Предельный (указывает конец адресного пространства программы)

6.3 Методы с использованием внешней памяти (свопинг и виртуальная память)

Так как памяти, как правило, не хватает. Для выполнения процессов часто приходится использовать диск.

Основные способы использования диска:

Свопинг (подкачка) - процесс целиком загружается в память для работы

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

6.3.1 Свопинг (подкачка)

При нехватке памяти процессы могут быть выгружены на диск.

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

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

Свопер - планировщик, управляющий перемещением данных между памятью и диском.

Этот метод был основным для UNIX до версии 3BSD.

Управление памятью с помощью битовых массивов

Вся память разбивается на блоки (например, по 32бита), массив содержит 1 или 0 (занят или незанят).

Чтобы процессу в 32Кбита занять память, нужно набрать последовательность из 1000 свободных блоков.

Такой алгоритм займет много времени.

битовые массивы и списки

Управление памятью с помощью связных списков

Этот способ отслеживает списки занятых (между процессами) и свободных (процессы) фрагментов памяти.

Запись в списке указывает на:

занят (P) или незанят (H) фрагмент

адрес начала фрагмента

Четыре комбинации соседей для завершения процесса X

Алгоритмы выделения блока памяти:

первый подходящий участок.

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

самый подходящий участок (медленнее, но лучше использует память).

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

6.3.2 Виртуальная память

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

Программа при этом общается с виртуальной памятью, а не с физической.

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

Страничная организация памяти

Страничные блоки - единицы физической памяти.

Х - обозначает не отображаемую страницу в физической памяти.

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

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

Таблица может быть размещена:

в аппаратных регистрах (преимущество: более высокое быстродействие, недостаток - стоимость)

Типичная запись в таблице страниц

Присутствие/отсутствие - загружена или незагружена в память

Защита - виды доступа, например, чтение/запись.

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

Обращение - было ли обращение к странице, если нет, то это лучший кандидат на освобождение памяти.

Информация о адресе страницы когда она хранится на диске, в таблице не размещается.

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

Страничная организация памяти используется, и в UNIX, и в Windows.

Хранение страничной памяти на диске

Статическая область свопинга

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

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

Этот механизм наиболее простой.

Статический и динамический методы организации свопинга.

Динамическая область свопинга

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

Этот механизм сложнее, так как процессы не привязаны к какому-то пространству на диске, и нужно хранить информацию (карту диска) о местоположении на диске каждой страницы.

С понятием управления паметью в ОС связаны следующие технологии:

  • Функции управления памятью в ОС
  • Типы адресов
  • Методы распределения памяти в ОС
  • Принцип кэширования данных в ОС

Содержание

Функции управления памятью в ОС

Операционная система решает следующие задачи:

  • Отслеживание свободной и занятой памяти.
  • Выделение и освобождение памяти по запросам процессов.
  • Обеспечение настройки адресов.
  • Поддержка механизма виртуальной памяти

Типы адресов

Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса.

Символьные имена

Символьные имена присваивает пользователь при написании программы.

Виртуальные адреса

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

Физические адреса

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

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

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

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

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

Уже достаточно давно пользователи столкнулись с проблемой размещения в памяти программ, размер которых превышал имеющуюся в наличии свободную память. Решением было разбиение программы на части, называемые оверлеями. 0-ой оверлей начинал выполняться первым. Когда он заканчивал свое выполнение, он вызывал другой оверлей. Все оверлеи хранились на диске и перемещались между памятью и диском средствами операционной системы. Однако разбиение программы на части и планирование их загрузки в оперативную память должен был осуществлять программист.

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

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

1) Размещение данных в ЗУ разного типа

2) Выбор образов процессов или их частей для перемещения из памяти на диск и обратно

3) Перемещение, при необходимости, данных между памятью и диском

4) Преобразование виртуальных адресов в физические

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

Виртуальная память выполняется на основе 2 подходов:

1) Свопинг – образы процессов выгружаются на диск и загружаются в память целиком.

b. Если адресное пространство больше свободной памяти, то свопинг не работает

2) Виртуальная память – между памятью и диском перемещаются какие-то части образов процессов.

ВП реализуется 3 способами:

1) Страничная ВП – данные между диском и памятью перемещаются страницами – частями фиксированного размера.

2) Сегментная ВП – перемещение данных осуществляется сегментами – т.е. частями произвольного размера с учетом смыслового значения данных

3) Сегментно–страничная ВП – комбинированный двухуровневый способ: виртуальное адресное пространство делится на сегменты, а сегменты на страницы, единица перемещения страница.

Для хранения сегментов и страниц на диске используется специальный файл – файл подкачки, swap, страничный файл (paging file).

Кэш-память.

Кэш-память, или просто кэш (cache), — это способ совместного функционирова­ния двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных, который за счет динамического копирования в «быстрое» ЗУ наиболее часто используемой информации из «медленного» ЗУ позволяет, с одной стороны, уменьшить среднее время доступа к данным, а с дру­гой стороны, экономить более дорогую быстродействующую память.

Неотъемлемым свойством кэш-памяти является ее прозрачность для программ и пользователей. Система не требует никакой внешней информации об интенсив­ности использования данных; ни пользователи, ни программы не принимают ни­какого участия в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это делается автоматически системными средствами.

Кэш-памятью, или кэшем, часто называют не только способ организации работы двух типов запоминающих устройств, но и одно из устройств — «быстрое» ЗУ.

Оно стоит дороже и, как правило, имеет сравнительно небольшой объем. «Мед­ленное» ЗУ далее будем называть основной памятью, противопоставляя ее вспо­могательной кэш-памяти.

Кэширование — это универсальный метод, пригодный для ускорения доступа к оперативной памяти, к диску и к другим видам запоминающих устройств. Если кэширование применяется для уменьшения среднего времени доступа к опера­тивной памяти, то в качестве кэша используют быстродействующую статическую память. Если кэширование используется системой ввода-вывода для ускорения доступа к данным, хранящимся на диске, то в этом случае роль кэш-памяти вы­полняют буферы в оперативной памяти, в которых оседают наиболее активно используемые данные.

Принцип действия кэш-памяти

Рассмотрим одну из возможных схем кэширования (рис. 5.25). Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных из основной памяти. Каждая запись об элементе данных включает в себя:

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

При каждом обращении к основной памяти по физическому адресу просматри­вается содержимое кэш-памяти с целью определения, не находятся ли там нуж­ные данные. Кэш-память не является адресуемой, поэтому поиск нужных дан­ных осуществляется по содержимому — по взятому из запроса значению поля адреса в оперативной памяти. Далее возможен один из двух вариантов развития событий:

  • если данные обнаруживаются в кэш-памяти, то есть произошло кэш-попада­ние (cache-hit), они считываются из нее и результат передается источнику за­проса;
  • если нужные данные отсутствуют в кэш-памяти, то есть произошел кэш-про­мах (cache-miss), они считываются из основной памяти, передаются источни­ку запроса и одновременно с этим копируются в кэш-память.

Интуитивно понятно, что эффективность кэширования зависит от вероятности попадания в кэш. Использование кэш-па­мяти имеет смысл только при высокой вероятности кэш-попадания.

Вероятность обнаружения данных в кэше зависит от разных факторов, таких, на­пример, как объем кэша, объем кэшируемой памяти, алгоритм замещения дан­ных в кэше, особенности выполняемой программы, время ее работы, уровень мультипрограммирования и других особенностей вычислительного процесса. Тем не менее в большинстве реализаций кэш-памяти процент кэш-попаданий оказывается весьма высоким — свыше 90 %. Такое высокое значение вероятно­сти нахождения данных в кэш-памяти объясняется наличием у данных объек­тивных свойств: пространственной и временной локальности.

  • Временная локальность. Если произошло обращение по некоторому адресу, то следующее обращение по тому же адресу с большой вероятностью про­изойдет в ближайшее время.
  • Пространственная локальность. Если произошло обращение по некоторому адресу, то с высокой степенью вероятности в ближайшее время произойдет обращение к соседним адресам.



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


Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Читайте также: