Общие методы реализации виртуальной памяти: 3. Общие методы реализации виртуальной памяти.

Содержание

3. Общие методы реализации виртуальной памяти.

Страничное распределение

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

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

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

Рис. 2.14. Страничное распределение памяти

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

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

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

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

  • дольше всего не использовавшаяся страница,

  • первая попавшаяся страница,

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

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

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

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

Виртуальный адрес при страничном распределении может быть представлен в виде пары (p, s), где p — номер виртуальной страницы процесса (нумерация страниц начинается с 0), а s — смещение в пределах виртуальной страницы. Учитывая, что размер страницы равен 2 в степени к, смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой двоичную запись номера страницы p.

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

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

При каждом обращении к оперативной памяти аппаратными средствами выполняются следующие действия:

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

  2. Из этой записи извлекается номер физической страницы.

  3. К номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса).

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

На производительность системы со страничной организацией памяти влияют временные затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. При часто возникающих страничных прерываниях система может тратить большую часть времени впустую, на свопинг страниц. Чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы. Кроме того, увеличение размера страницы уменьшает размер таблицы страниц, а значит уменьшает затраты памяти. С другой стороны, если страница велика, значит велика и фиктивная область в последней виртуальной странице каждой программы. В среднем на каждой программе теряется половина объема страницы, что в сумме при большой странице может составить существенную величину. Время преобразования виртуального адреса в физический в значительной степени определяется временем доступа к таблице страниц. В связи с этим таблицу страниц стремятся размещать в «быстрых» запоминающих устройствах. Это может быть, например, набор специальных регистров или память, использующая для уменьшения времени доступа ассоциативный поиск и кэширование данных.

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

Сегментное распределение

При страничной организации виртуальное адресное пространство процесса делится механически на равные части. Это не позволяет дифференцировать способы доступа к разным частям программы (сегментам), а это свойство часто бывает очень полезным. Например, можно запретить обращаться с операциями записи и чтения в кодовый сегмент программы, а для сегмента данных разрешить только чтение. Кроме того, разбиение программы на «осмысленные» части делает принципиально возможным разделение одного сегмента несколькими процессами. Например, если два процесса используют одну и ту же математическую подпрограмму, то в оперативную память может быть загружена только одна копия этой подпрограммы.

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

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

Рис. 2.16. Распределение памяти сегментами

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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

Сегментно-страничное распределение

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

Контрольные вопросы:

НОУ ИНТУИТ | Лекция | Управление памятью. Методы, алгоритмы и средства

Аннотация: Организация памяти современного компьютера. Функции ОС по управлению памятью. Распределение памяти. Страничная организация виртуальной памяти. Оптимизация функционирования страничной виртуальной памяти. Сегментная организация виртуальной памяти. Сегментно-страничная виртуальная память.

6.1. Организация памяти современного компьютера

Со времен создания ЭВМ фон Неймана основная память в компьютерной системе организована как линейное (одномерное) адресное пространство, состоящее из последовательности слов, а позже байтов [10]. Аналогично организована и внешняя память. Хотя такая организация и отражает особенности используемого аппаратного обеспечения, она не соответствует способу, которым обычно создаются программы. Большинство программ организованы в виде модулей, некоторые из которых неизменны (только для чтения, только для исполнения), а другие содержат данные, которые могут быть изменены.

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

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

Память – важнейший ресурс вычислительной системы, требующий эффективного управления. Несмотря на то, что в наши дни память среднего домашнего компьютера в тысячи раз превышает память больших ЭВМ 70-х годов, программы увеличиваются в размере быстрее, чем память. Достаточно сказать, что только операционная система занимает сотни Мбайт (например, Windows 2000 – до 30 млн строк), не говоря о прикладных программах и базах данных, которые могут занимать в вычислительных системах десятки и сотни Гбайт.

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

  • чем меньше время доступа, тем дороже бит;
  • чем выше емкость, тем ниже стоимость бита;
  • чем выше емкость, тем больше время доступа.

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

  • снижается стоимость бита;
  • возрастает емкость;
  • возрастает время доступа;
  • снижается частота обращений процессора к памяти.

Рис. 6.1. Иерархия памяти

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

Обозначим через Т2 = 10 нс время обращения ко второму уровню памяти, а через Р – отношение числа нахождений нужного слова в быстрой памяти к числу всех обращений. Пусть в нашем примере Р = 0,95 (т.е. 95% обращений приходится на быструю память, что вполне реально), тогда среднее время доступа к памяти можно записать так:

Tср = 0,95*1нс + 0,05* (1нс+10нс)=1,55нс

Этот принцип можно применять не только к памяти с двумя уровнями. Реально так и происходит. Объем оперативной памяти существенно сказывается на характере протекания вычислительного процесса, так как он ограничивает число одновременно выполняющихся программ, т.е. уровень мультипрограммирования. Если предположить, что процесс проводит часть р своего времени в ожидании завершения операции ввода-вывода, то степень загрузки Z центрального процессора (ЦП) в идеальном случае будет выражаться зависимостью

Z = 1 — pn, где n – число процессов.

На рис. 6.2 показана зависимость Z=p(n) для различного времени ожидания завершения операции ввода-вывода (20%, 50% и 80%) и числа процессов n. Большое количество задач, необходимое для высокой загрузки процессора, требует большого объема оперативной памяти. В условиях, когда для обеспечения приемлемого уровня мультипрограммирования имеющейся памяти недостаточно, был предложен метод организации вычислительного процесса, при котором образы некоторых процессов целиком или частично временно выгружаются на диск.


Рис. 6.2. Загрузка процессора при различном числе процессов

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

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

В данном случае в распоряжение прикладного программиста предоставляется виртуальная оперативная память, размер которой намного превосходит реальную память системы и ограничивается только возможностями адресации используемого процесса (в ПК на базе Pentium 232 = 4 Гбайт). Вообще виртуальным (кажущимся) называется ресурс, обладающий свойствами (в данном случае большой объем ОП), которых в действительности у него нет.

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

Виртуализация памяти возможна на основе двух возможных подходов [17]:

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

Недостатки свопинга:

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

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

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

Виртуальная память и свопинг. Реализация виртуальной памяти.


⇐ ПредыдущаяСтр 6 из 11Следующая ⇒

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

• Это явление называется виртуализацией памяти

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

на самом деле не обладает

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

· свопинг – образы процессов выгружаются на диск и возвращаются в ОП целиком

· виртуальная память – между ОП и диском перемещаются части процессов

Свопинг (подкачка) представляет собой частный случай ВП и соответственно более простой в реализации способ совместного использования ОП и диска.

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

образы полностью

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

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

 

В настоящее время чаще используется более совершенный механизм ВП

• Ключевой вопрос в ВП – преобразование ВА в ФА

• Ответ на этот вопрос зависит от способа структуризации памяти

 

 

Все множество реализаций ВП может быть представлено тремя классами:

· Страничная ВП

· Сегментная ВП

· Сегментно-страничная ВП

 

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

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

• Его второе название – страничный файл

• Размер этого файла является важным настраиваемым параметром для достижения компромисса между уровнем

мультипрограммирования и быстродействием.

 

//ВАП каждого процесса делится на части одинакового, фиксированного для определенной системы размера

• В общем случае размер виртуального адресного пространства не является кратным размеру страницы, поэтому

последняя страница каждого процесса дополняется фиктивной областью

• Вся ОП вычислительной машины делится на части такого же размера, и они называются физическими

страницами (или блоками, или кадрами)

• Размер страницы обычно степень двойки

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

• Копия всего ВАП находится на диске

• Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах

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

• Запись этой таблицы – дескриптор страницы, включает следующую информацию:

· номер физической страницы

· признак присутствия

· признак модификации страницы

· признак обращения к странице, называемый иногда битом доступа

· признак защиты страницы (обычно три бита) для допуска и запрета на операции чтения, записи и выполнения;

· признак блокирования кэша и др

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

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

• Если данная страница уже находится в ОП, то выполняется преобразование ВА в ФА

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

Преобразование ВА в ФА

ВА при страничном распределении – пара чисел (P, O), где P – номер виртуальной страницы процесса (начиная с 0), а O –смещение в пределах виртуальной страницы

• Поскольку размер страницы равен 2k, смещение O получается отделением k младших разрядов в двоичной записи ВА


• Оставшиеся старшие разряды представляют собой двоичную запись номера страницы P

 

 При каждом обращении к ОП аппаратура выполняет следующие действия:

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

2. Из найденной записи извлекается номер физической страницы

3. К номеру физической страницы присоединяется смещение, то есть младшие разряды ВА

 

На производительность системы со страничной организацией памяти влияют временные затраты, связанные с

обработкой страничных прерываний и преобразованием ВА в ФА

• При часто возникающих страничных прерываниях система может затратить большую часть времени на страничный обмен

• В современных системах чаще всего размер страницы устанавливается равным 4, 8, 16 Кб, однако чаще стали

встречаться страницы 32 Кб

 

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

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

Наиболее популярные критерии выбора страницы для выгрузки на диск:

· страница, к которой в последнее время было меньше всего обращений (алгоритм NRU)

·  первая попавшаяся страница

·  стратегия FIFO

· страница, к которой не было обращений на предыдущем интервале времени

· кольцевая организация

· дольше всего не использовавшаяся страница (LRU)

· рабочее множество страниц

· кольцевой алгоритм с рабочим множеством страниц

·

Алгоритм NRU

Для своей работы он использует признаки (биты) модификации и обращения

• При появлении нового процесса в системе у всех его страниц оба этих бита сброшены

• Когда происходит страничное прерывание, система проверяет все страницы и разбивает их на четыре класса на основании значений признаков модификации и обращения:

· Не было обращений и модификаций

· Не было обращений, страница модифицирована

· Было обращение, а страница не модифицировалась

· Были обращение и модификация

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

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

 

FIFO

Еще одним простым способом вытеснения страниц считается алгоритм FIFO

• ОС хранит список всех страниц, находящихся в памяти, где первая страница является самой старшей, а

«молодые» страницы находятся в хвосте списка

• Когда происходит страничное прерывание, то выгружается страница из головы списка, а новая страница

добавляется в хвост

• Данный алгоритм не использует признак модификации страницы

 

32. Сегментное и сегментно-страничное распределение памяти. Отличительные особенности.

Сегментное распределение

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

 

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

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

 

 Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

 Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

 


Рекомендуемые страницы:

Управление виртуальной памятью — презентация на Slide-Share.ru 🎓

1

Первый слайд презентации: Управление виртуальной памятью

Понятие виртуального ресурса Общие методы реализации виртуальной памяти

Изображение слайда

2

Слайд 2

Изображение слайда

3

Слайд 3

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

Изображение слайда

4

Слайд 4: Задачи виртуализации ОЗУ

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

Изображение слайда

5

Слайд 5: Виды виртуализации:

свопинг ( swapping ) — образы процессов выгружаются на диск и возвращаются в оперативную память целиком, виртуальная память ( virtual memory ) — между оперативной памятью и диском перемещаются части (сегменты, страницы и т. п.) образов процессов.

Изображение слайда

6

Слайд 6: Классы виртуальной памяти

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

Изображение слайда

7

Слайд 7

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

Изображение слайда

8

Слайд 8: Страничное распределение памяти

Изображение слайда

9

Слайд 9

Дескриптор страницы – это запись таблицы

Изображение слайда

10

Слайд 10: Дескриптор страницы включает в себя:

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

Изображение слайда

11

Слайд 11: Распределение памяти сегментами

Изображение слайда

12

Слайд 12: Таблица сегмента процесса содержит:

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

Изображение слайда

13

Слайд 13: Сегментно-страничное распределение (1 способ)

Изображение слайда

14

Последний слайд презентации: Управление виртуальной памятью: Сегментно-страничное распределение (2 способ)

Изображение слайда

Виртуальная память в 32-битной версии Windows — Windows Server

  • Чтение занимает 7 мин

В этой статье

Применяется к:   Windows 7 Пакет обновления 1, Windows Server 2012 R2
Исходный номер КБ:   2160852

Сводка

В этой статье содержатся основные сведения о реализации виртуальной памяти в 32-битных версиях Windows.

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

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

Процессы и пространства адресов

Всем процессам (например, исполняемым приложениям), работающим в 32-битных версиях Windows, назначены виртуальные адреса памяти (виртуальное пространство адресов), в диапазоне от 0 до 4 294 967 295 (2*32-1 = 4 ГБ), независимо от того, сколько оперативной памяти установлено на компьютере.

В конфигурации Windows по умолчанию для личного использования каждого процесса назначаются 2 гигабайта (ГБ) этого виртуального адресного пространства, а остальные 2 ГБ делятся между всеми процессами и операционной системой. Как правило, приложения (например, Блокнот, Word, Excel и Acrobat Reader) используют только часть 2 ГБ частного адресного пространства. Операционная система назначает кадры страниц оперативной памяти только тем виртуальным страницам памяти, которые используются.

Расширение физического адреса (PAE) — это функция 32-битной архитектуры Intel, которая расширяет адрес физической памяти (RAM) до 36 бит. PAE не меняет размер виртуального адресного пространства (которое остается на уровне 4 ГБ), а только объем фактической оперативной памяти, который может быть рассмотрен процессором.

Перевод между 32-битным виртуальным адресом памяти, используемым кодом, работающим в процессе, и 36-битным адресом оперативной памяти обрабатывается компьютерным оборудованием автоматически и прозрачно в соответствии с таблицами переводов, которые поддерживаются операционной системой. Любая виртуальная страница памяти (32-битный адрес) может быть связана с любой физической страницей оперативной памяти (36-битным адресом).

В следующем списке описывается количество оперативной памяти различных Windows версий и выпусков (по данным на май 2010 г.):

Версия WindowsОЗУ
Windows NT 4.04 ГБ
Windows 2000 Professional4 ГБ
Windows 2000 Standard Server4 ГБ
Windows 2000 Advanced Server8 ГБ
Windows 2000 Datacenter Server32 ГБ
Windows XP Professional4 ГБ
Windows Веб-издание Server 20032 ГБ
Windows Сервер 2003 выпуск Standard4 ГБ
Windows Сервер 2003 выпуск Enterprise32 ГБ
Windows Выпуск центра обработки данных Server 200364 ГБ
Windows Vista4 ГБ
Windows Server 2008 Standard4 ГБ
Windows Server 2008 Enterprise64 ГБ
Windows Server 2008 Datacenter64 ГБ
Windows 74 ГБ

Файл подкачки

Оперативная память — это ограниченный ресурс, в то время как для большинства практических целей виртуальная память не ограничена. Может быть много процессов, и каждый процесс имеет свои собственные 2 ГБ частного виртуального адресного пространства. Если память, используемая всеми существующими процессами, превышает доступную оперативную память, операционная система перемещает страницы (4-КБ частей) одного или более виртуальных адресных пространств на жесткий диск компьютера. Это освободит раму оперативной памяти для других применений. В Windows системах указанные страницы хранятся в одном или Pagefile.sys файлах в корне раздела. В каждом разделе диска может быть один такой файл. Расположение и размер файла страницы настроены в System Properties (нажмите кнопку Advanced, щелкните Производительность и нажмите кнопку Параметры).

Пользователи часто задают вопрос о том, насколько большим должен быть этот pagefile? На этот вопрос нет единого ответа, так как он зависит от количества установленной оперативной памяти и от объема виртуальной памяти, требуемой рабочей нагрузкой. Если других сведений нет, то обычная рекомендация в 1,5 раза больше установленной оперативной памяти является хорошей отправной точкой. В серверных системах обычно необходимо иметь достаточно оперативной памяти, чтобы не было недостатка и чтобы не использовался pagefile. В этих системах это может не служить никакой полезной цели для поддержания большого pagefile. С другой стороны, если дискового пространства достаточно, сохранение большого pagefile (например, в 1,5 раза больше установленной оперативной памяти) не вызывает проблем, и это также устраняет необходимость беспокоиться о том, насколько большим он должен быть.

Производительность, ограничения архитектуры и оперативная память

На любой компьютерной системе по мере увеличения нагрузки (количество пользователей, объем работы) производительность снижается, но нелинейно. Любое увеличение нагрузки или спроса за определенной точкой приводит к значительному снижению производительности. Это означает, что некоторые ресурсы в критическом дефиците и стали узким местом.

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

  • 2 ГБ общего виртуального адресного пространства для системы (ядра)
  • 2 ГБ частного виртуального адресного пространства за один процесс (режим пользователя)
  • 660 МБ системного хранилища PTE (Windows Server 2003 и ранее)
  • 470 МБ хранилища пула страниц (Windows Server 2003 и ранее)
  • 256 МБ неоплаченного хранилища пула (Windows Server 2003 и ранее)

Это относится к Windows Server 2003 в частности, но это может также применяться к Windows XP и Windows 2000. Однако Windows Vista, Windows Server 2008 и Windows 7 не разделяют эти архитектурные ограничения. Ограничения на память пользователя и ядра (цифры 1 и 2 здесь) одинаковы, но ресурсы ядра, такие как PTEs и различные пулы памяти, динамически. Эта новая функция позволяет использовать как страницу, так и неоплаченную память. Это также позволяет PTEs и пул сеансов расти за пределы, которые были рассмотрены ранее, до точки, где все ядро исчерпано.

Часто находятся и цитируются такие утверждения, как следующие:

С помощью терминалного сервера 2 ГБ общего адресного пространства будут полностью использоваться до использования 4 ГБ оперативной памяти.

В некоторых случаях это может быть верно. Однако необходимо следить за системой, чтобы узнать, применяются ли они к вашей конкретной системе или нет. В некоторых случаях эти утверждения являются выводами из определенных сред Windows NT 4.0 или Windows 2000 и не обязательно применимы к Windows Server 2003. В Windows Server 2003 были внесены значительные изменения, чтобы снизить вероятность того, что эти архитектурные ограничения будут фактически достигнуты на практике. Например, некоторые процессы, которые находились в ядре, были перенесены в неядерные процессы, чтобы уменьшить объем памяти, используемый в общем виртуальном пространстве адресов.

Мониторинг использования оперативной памяти и виртуальной памяти

Монитор производительности является принципиальным средством для мониторинга производительности системы и определения расположения узких мест. Чтобы запустить монитор производительности, нажмите кнопку Начните, нажмите панель управления, нажмите административные средства, а затем дважды щелкните Монитор производительности. Вот сводка некоторых важных счетчиков и то, что они вам говорят:

  • Memory, Committed Bytes: This counter is a measure of the demand for virtual memory.

    Это показывает, сколько bytes было выделено процессами и к которым операционная система совершила раму страницы ram или слот страницы в pagefile (или возможно оба). По мере того, как количество совершенных bytes будет больше, чем доступная оперативная память, будет увеличиваться и размер используемой страницы также увеличится. В какой-то момент действие paging начинает существенно влиять на производительность.

  • Process, Working Set, _Total: Этот счетчик является показателем виртуальной памяти в активном использовании.

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

  • Paging File, %pagefile in use: This counter is a measure of how much of the pagefile is actually being used.

    Используйте этот счетчик, чтобы определить, является ли pagefile подходящим размером. Если этот счетчик достигает 100, страница заполнена, и все перестает работать. В зависимости от волатильности рабочей нагрузки, возможно, необходимо, чтобы эта страница была достаточно большой, чтобы она использовалась не более чем на 50-075 процентов. Если большая часть страницы используется, наличие более одного на разных физических дисках может повысить производительность.

  • Memory, Pages/Sec. Этот счетчик является одним из наиболее непонимаемого.

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

  • Memory, Pages Output/Sec. На этом счетчике показано, сколько страниц виртуальной памяти было записано на страницу, чтобы освободить кадры страниц оперативной памяти для других целей каждую секунду.

    Это лучший счетчик, чтобы отслеживать, если вы подозреваете, что paging является узким местом производительности. Даже если установленный объем оперативной памяти превышает установленный объем оперативной памяти, если выход страниц/сек в основном низкий или нулевой, существенной проблемы производительности из-за недостаточной оперативной памяти не возникает.

  • Память, кэш-bytes, memory, Pool Nonpaged Bytes, Memory, Pool Paged Bytes, Memory, System Code Total Bytes, Memory, System Driver Total Bytes:

    Сумма этих счетчиков — это показатель того, сколько из 2 ГБ общей части виртуального адресного пространства с 4 ГБ фактически используется. Используйте эти данные, чтобы определить, достигает ли ваша система одного из обсуждающихся ранее архитектурных ограничений.

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

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

Ссылки

Расширения адресного окна

Управление виртуальной памятью 1 Понятие виртуального ресурса 2

Управление виртуальной памятью 1. Понятие виртуального ресурса 2. Общие методы реализации виртуальной памяти

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

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

Виды виртуализации: Ø свопинг (swapping) — образы процессов выгружаются на диск и возвращаются в оперативную память целиком, Ø виртуальная память (virtual memory) — между оперативной памятью и диском перемещаются части (сегменты, страницы и т. п. ) образов процессов.

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

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

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

Дескриптор страницы – это запись таблицы

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

Распределение памяти сегментами

Таблица сегмента процесса содержит: Ø базовый физический адрес сегмента в оперативной памяти; Ø размер сегмента; Ø правила доступа к сегменту; Ø признаки модификации, присутствия и обращения к данному сегменту, а также некоторая другая информация.

Сегментно-страничное распределение (1 способ)

Сегментно-страничное распределение (2 способ)

28) Виртуальная память в ОС

Что такое виртуальная память?

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

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

Из этого руководства по операционной системе вы узнаете:

Зачем нужна виртуальная память?

Вот причины использования виртуальной памяти:

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

Как работает виртуальная память?

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

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

Давайте разберемся с управлением виртуальной памятью с помощью одного примера.

Например:

Давайте предположим, что ОС требуется 300 МБ памяти для хранения всех запущенных программ. Однако в настоящее время в оперативной памяти хранится только 50 МБ доступной физической памяти.

  • Затем ОС установит 250 МБ виртуальной памяти и будет использовать программу, называемую Virtual Memory Manager (VMM), для управления этими 250 МБ.
  • Таким образом, в этом случае VMM создаст на жестком диске файл размером 250 МБ для хранения дополнительной необходимой памяти.
  • Теперь ОС перейдет к адресной памяти, поскольку она считает 300 МБ реальной памяти, хранящейся в ОЗУ, даже если доступно только 50 МБ.
  • Работа VMM заключается в управлении 300 МБ памяти, даже если доступно только 50 МБ реальной памяти.

Что такое пейджинг по требованию?

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

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

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

Типы методов замены страниц

Вот несколько важных методов замены страниц

  • ФИФО
  • Оптимальный алгоритм
  • Замена страницы LRU

Замена страницы FIFO

FIFO («первым пришел — первым вышел») — это простой метод реализации. В этом методе память выбирает страницу для замены, которая долгое время находилась в виртуальном адресе памяти.

Особенности:

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

Оптимальный алгоритм

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

Особенности:

  • Оптимальный алгоритм приводит к наименьшему количеству ошибок страниц. Этот алгоритм сложно реализовать.
  • Оптимальный метод алгоритма замены страниц имеет наименьшую частоту ошибок страниц среди всех алгоритмов. Этот алгоритм существует и который должен называться MIN или OPT.
  • Замените страницу, которую не хотите использовать в течение более длительного периода времени. Используется только время, когда страница должна быть использована.

Замена страницы LRU

Полной формой LRU является страница «Наименее недавно использованные». Этот метод помогает ОС найти страницу за короткий промежуток времени. Этот алгоритм должен быть реализован путем связывания счетчика с четной страницей.

Как это работает?

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

Особенности:

  • Метод замены LRU имеет наибольшее количество. Этот счетчик также называется регистрами старения, которые указывают их возраст и количество ссылок на связанные страницы.
  • Страница, которая долгое время не использовалась в основной памяти, должна быть выбрана для замены.
  • Он также ведет список и заменяет страницы, оглядываясь назад во времени.

Частота отказов

Частота отказов — это частота, с которой отказывает разработанная система или компонент. Это выражается в сбоях за единицу времени. Обозначается греческой буквой λ (лямбда).

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

Вот преимущества / преимущества использования виртуальной памяти:

  • Виртуальная память помогает набирать скорость, когда для выполнения программы требуется только определенный сегмент программы.
  • Это очень полезно при реализации многопрограммной среды.
  • Это позволяет вам запускать больше приложений одновременно.
  • Это поможет вам встроить множество больших программ в небольшие.
  • Общие данные или код могут совместно использоваться памятью.
  • Процесс может стать даже больше, чем вся физическая память.
  • Данные / код следует читать с диска всякий раз, когда это необходимо.
  • Код может быть размещен в любом месте физической памяти, не требуя перемещения.
  • В основной памяти должно поддерживаться больше процессов, что увеличивает эффективное использование процессора.
  • Каждая страница хранится на диске до тех пор, пока она не потребуется, после чего она будет удалена.
  • Это позволяет одновременно запускать больше приложений.
  • Нет конкретного ограничения на степень мультипрограммирования.
  • Большие программы должны быть написаны, так как доступное виртуальное адресное пространство больше по сравнению с физической памятью.

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

Вот недостатки / недостатки использования виртуальной памяти:

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

Резюме:

  • Виртуальная память — это механизм хранения, который предлагает пользователю иллюзию наличия очень большой основной памяти.
  • Виртуальная память необходима, когда на вашем компьютере нет места в физической памяти.
  • Механизм подкачки по требованию очень похож на систему подкачки с подкачкой, где процессы, хранящиеся во вторичной памяти и страницах, загружаются только по требованию, а не заранее.
  • Важные методы замены страницы: 1) FIFO 2) Оптимальный алгоритм 3) Замена страницы LRU.
  • В методе FIFO (первым пришел-первым обслужен) память выбирает страницу для замены, которая долгое время находилась в виртуальном адресе памяти.
  • Оптимальный метод замены страницы выбирает эту страницу для замены, для которой время до следующей ссылки самое большое.
  • Метод LRU помогает ОС находить использование страницы за короткий промежуток времени.
  • Виртуальная память помогает набирать скорость, когда для выполнения программы требуется только определенный сегмент программы.
  • Приложения могут работать медленнее, если система использует виртуальную память.

 

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

в операционной системе

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

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

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

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

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


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

  1. Если ЦП пытается обратиться к странице, которая в настоящее время недоступна в основной памяти, он генерирует прерывание, указывающее на ошибку доступа к памяти.
  2. ОС переводит прерванный процесс в состояние блокировки. Для продолжения выполнения ОС должна занести в память нужную страницу.
  3. ОС будет искать нужную страницу в логическом адресном пространстве.
  4. Требуемая страница будет перенесена из логического адресного пространства в физическое адресное пространство. Алгоритмы замены страниц используются для принятия решения о замене страницы в физическом адресном пространстве.
  5. Таблица страниц будет обновлена ​​соответствующим образом.
  6. Сигнал будет отправлен в CPU, чтобы продолжить выполнение программы, и он вернет процесс обратно в состояние готовности.

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


Преимущества:

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

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

Пусть время доступа к основной памяти: m
Время обслуживания ошибки страницы составляет: с
Частота ошибок страницы: p
Тогда эффективное время доступа к памяти = (p * s) + (1-p) * m
 

Обмен:

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

Thrashing:

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

На данной диаграмме начальная степень многопрограммирования до некоторой степени (lamda), загрузка ЦП очень высока, а системные ресурсы используются на 100%.Но если мы еще больше увеличим степень многопрограммирования, загрузка ЦП резко упадет, и система будет тратить больше времени только на замену страниц, а время, необходимое для завершения выполнения процесса, увеличится. Такая ситуация в системе называется перебивкой.

Причины сбоя:

  1. Высокая степень мультипрограммирования : Если количество процессов продолжает увеличиваться в памяти, то количество кадров, выделенных каждому процессу, будет уменьшено.Таким образом, каждому процессу будет доступно меньшее количество кадров. Из-за этого отказ страницы будет происходить чаще, и больше процессорного времени будет тратиться на простую замену страниц и их использование, а использование будет продолжать снижаться.

    Например:
    Пусть количество свободных кадров = 400
    Случай 1 : Количество процессов = 100
    Тогда каждый процесс получит 4 кадра.

    Случай 2 : Количество процессов = 400
    Каждый процесс получит 1 кадр.
    Случай 2 — это условие перегрузки, когда количество процессов увеличивается, количество кадров на процесс уменьшается.Следовательно, процессорное время будет расходоваться только на замену страниц.

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

Восстановление перебивки:

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


Автор статьи: Ааканша ядав

Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные концепции теории CS для собеседований SDE с помощью курса CS Theory Course по доступной для студентов цене и станьте готовым к работе в отрасли.

Что такое виртуальная память и как она реализована?

Что такое виртуальная память и как она реализована?

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

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

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

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

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

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

Пейджинг по запросу

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

Ниже приведены шаги, связанные с подкачкой по запросу:

  1. ЦП сначала пытается найти запрошенную страницу в основной памяти, и если она будет найдена, то она будет предоставлена ​​немедленно, в противном случае генерируется прерывание, указывающее на ошибку доступа к памяти.
  2. Теперь процесс переходит в состояние блокировки / ожидания, потому что для выполнения процесса нам нужно найти нужную страницу во вторичной памяти.
  3. Логический адрес процесса будет преобразован в физический адрес, потому что, не имея физического адреса, вы не можете найти страницу во вторичной памяти.
  4. Теперь мы применяем некоторые алгоритмы замены страниц, которые можно использовать для обмена страниц из основной памяти во вторичную и наоборот.
  5. Наконец, таблица страниц будет обновлена ​​с удалением адреса старой страницы и добавлением адреса новой страницы.
  6. Наконец, ЦП предоставляет страницу процессу, и процесс переходит в рабочее состояние из состояния ожидания / блокировки.

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

Вот и все для этого блога. Надеюсь, вам понравился этот блог.

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

Продолжайте учиться 🙂

Команда AfterAcademy!

Что такое виртуальная память и как она работает?

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

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

Сегодня большинство ПК имеют до 4 ГБ оперативной памяти. Однако иногда этого недостаточно для одновременного запуска всех программ, которые пользователь может захотеть использовать. Здесь на помощь приходит виртуальная память.Виртуальную память можно использовать для обмена данными, которые в последнее время не использовались, и переноса их на устройство хранения, такое как жесткий диск или твердотельный накопитель (SDD). Это освободит больше места в ОЗУ.

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

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

Как работает виртуальная память

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

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

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

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

Типы виртуальной памяти

MMU компьютера обрабатывает операции с памятью, включая управление виртуальной памятью. В большинстве компьютеров оборудование MMU интегрировано в ЦП. Есть два способа обработки виртуальной памяти: страничная и сегментированная.

Подкачка разделяет память на разделы или файлы подкачки, обычно размером около 4 КБ. Когда компьютер использует свою оперативную память, неиспользуемые страницы передаются в раздел жесткого диска, предназначенный для виртуальной памяти, с помощью файла подкачки. Файл подкачки — это пространство на жестком диске, предназначенное для расширения виртуальной памяти ОЗУ компьютера. Когда требуется файл подкачки, он отправляется обратно в ОЗУ с помощью процесса, называемого подкачкой страниц. Эта система гарантирует, что операционная система компьютера и приложения не исчерпают реальную память.

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

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

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

Как управлять виртуальной памятью

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

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

Однако управление виртуальной памятью может осуществляться по-разному в разных типах операционных систем. ИТ-специалисты должны понимать основы управления физической памятью, виртуальной памятью и виртуальными адресами. Например, вот несколько советов по управлению виртуальной памятью в операционной системе Windows 10.

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

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

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

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

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

Виртуальная память и физическая память

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

Когда компьютеру требуется хранилище, в первую очередь используется ОЗУ. Виртуальная память используется при заполнении ОЗУ, потому что она медленнее.

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

История

До того, как была разработана виртуальная память, компьютеры имели ОЗУ и вторичную память.Ранние компьютеры использовали память на магнитных сердечниках для основной памяти и магнитные барабаны для вторичной памяти. Компьютерная память была дорогой, и ее обычно не хватало еще в 1940-х и 1950-х годах. По мере того как компьютерные программы росли в размерах и сложности, разработчикам приходилось беспокоиться о том, что их программы будут использовать всю основную память компьютера и не хватить памяти.

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

Немецкому физику Фрицу-Рудольфу Гюнчу приписывают разработку концепции виртуальной памяти в 1956 году, хотя этот пункт оспаривается. Однако Гюнч описал кеш-память.

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

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

В 1969 году исследователи IBM продемонстрировали, что системы наложения виртуальной памяти работают лучше, чем более ранние системы с ручным управлением. До этого момента по этому поводу все еще велись споры.В мэйнфреймах и мини-компьютерах в 1970-х годах обычно использовалась виртуальная память. Технология виртуальной памяти не была включена в первые персональные компьютеры, потому что разработчики думали, что нехватка памяти не будет проблемой для этих машин. Это предположение оказалось неверным. Intel представила виртуальную память в защищенном режиме процессора 80286 в 1982 году и поддержку подкачки, когда вышел 80386 в 1985 году.

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

— обзор

10.15 История Примечания и дополнительная литература

Виртуальная память была первым применением концепций виртуализации в коммерческих компьютерах.Виртуальная память позволяла осуществлять мультипрограммирование и избавляла пользователей от необходимости адаптировать свои приложения к физической памяти, доступной в отдельных системах. Подкачка и сегментация — это два механизма, поддерживающих виртуальную память. Пейджинг был разработан для компьютера Atlas, построенного в 1959 году в Манчестерском университете. Независимо, Burroughs Corporation разработала B5000, первый коммерческий компьютер с виртуальной памятью, и выпустила его в 1961 году; виртуальная память B5000 использовала сегментацию, а не разбиение на страницы.

В 1967 году IBM представила 360/67, первую систему IBM с виртуальной памятью, которая, как ожидается, будет работать на новой ОС под названием TSS. Перед выпуском TSS была создана операционная система под названием CP-67; CP-67 создавал иллюзию нескольких стандартных систем IBM 360 без виртуальной памяти. Первым гипервизором, поддерживающим полную виртуализацию, была система CP-40, работавшая на S / 360-40, который был модифицирован в IBM Cambridge Scientific Center для поддержки динамической трансляции адресов, ключевой функции, позволяющей виртуализацию.В CP-40 состояние супервизора оборудования также было виртуализировано, что позволило нескольким операционным системам работать одновременно в разных контекстах виртуальных машин.

Виртуализация была вызвана необходимостью совместного использования очень дорогого оборудования среди большого количества пользователей и приложений на раннем этапе развития вычислительной техники. Система VM / 370, выпущенная в начале 1970-х для больших мэйнфреймов IBM, оказалась очень успешной; он был основан на повторной реализации CP / CMS. В VM / 370 для каждого пользователя была создана новая виртуальная машина, и эта виртуальная машина взаимодействовала с приложениями.Гипервизор управлял аппаратными ресурсами и обеспечивал мультиплексирование ресурсов. Современные мэйнфреймы IBM, такие как линейка zSeries, сохраняют обратную совместимость с линейкой IBM S / 360 1960-х годов.

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

Достижения в области компьютерного и коммуникационного оборудования, а также взрыв Интернета, частично связанный с успехом всемирной паутины в конце 1990-х годов, возродили интерес к виртуализации для поддержки безопасности серверов и изоляции сервисов.В своей обзорной статье Розенблум и Графинкель пишут [429]: «Гипервизоры дают разработчикам ОС еще одну возможность разработать функциональность, которая больше не практична в сегодняшних сложных и закостенелых операционных системах, где инновации движутся геологическими темпами».

Вложенная виртуализация впервые обсуждалась в начале 1970-х годов Попеком и Голдбергом [196,406].

Дополнительная литература. Текст Зальцера и Каашука [434] — очень хорошее введение в принципы виртуализации.Виртуальные машины анализируются в статье Смита и Наира [455], а принципы архитектуры виртуальных компьютерных систем анализируются в [195,196].

Подробное обсуждение гипервизоров содержится в статье Розенблюма и Гарфинкеля [429]. В нескольких статьях [53,340,341] подробно обсуждается гипервизор Xen и анализируется его производительность, а [529] представляет собой репозиторий кода для Xen. Система Денали представлена ​​в [522].

Современные системы, такие как Linux Vserver (http: // linux-vserver.org /), OpenVZ (Open VirtualiZation) [378], FreeBSD Jails [419] и Solaris Zones [409] реализуют технологий виртуализации на уровне ОС . В [387] сравнивается производительность двух методов виртуализации со стандартной ОС.

В статье 2001 г. [102] утверждается, что виртуализация позволяет добавлять новые службы без изменения ОС. Такие службы добавляются ниже уровня ОС, но этот процесс создает семантический разрыв между виртуальными машинами и этими службами. Размышления о конструкции гипервизоров являются предметом [103], а обсуждение Xen — в [110].Современное состояние и будущее вложенной виртуализации являются предметом обсуждения [128]. Реализация вложенной виртуализации для KVM обсуждается в [61]. [549] исследует вопросы безопасности в виртуальных системах и [281] рассматривает надежность в виртуальных инфраструктурах. Технологии виртуализации в HPC анализируются в [415], а [457] дает критический взгляд на виртуализацию. [516] сообщает о стратегиях виртуализации IBM.

Что такое виртуальная память и подкачка по запросу?

By Jithin 29 ноября, 2016

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

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

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

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

Виртуальная память — это метод управления памятью, который может быть реализован как с использованием оборудования, так и программного обеспечения. Как видно из названия, он добавляет виртуальную память к доступной памяти, так что ваша система будет иметь больше памяти, чем есть на самом деле.Виртуальная память — это слой адресов памяти (виртуальных адресов), которые сопоставляются с физическими адресами. Адреса памяти, используемые программой, являются виртуальными адресами. Операционная система управляет этими виртуальными адресными пространствами и назначением реальной памяти виртуальной памяти. Работа виртуальной памяти происходит следующим образом. Компьютерная система имеет ограниченный объем статической ОЗУ. Когда программа запускается, экземпляр программы загружается в ОЗУ. Это процесс выделения памяти для выполнения инструкций.Когда программе требуется больше оперативной памяти, чем доступно, она будет выделена в виртуальную память. Это предотвращает недостаток оперативной памяти в программе. Эта виртуальная память на самом деле является памятью жесткого диска, которая затем отображается в физическую память.

Пейджинг по запросу

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

Предварительный пейджинг

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

Пейджинг по запросу работает

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

1) Попытка получить доступ к странице

2) Страница действующая. Инструкция по обработке страницы продолжается в обычном режиме.

3) Если страница недействительна, происходит перехват ошибки страницы.

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

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

6) Наконец, команда, которая была прервана прерыванием операционной системы, перезапускается.

Если вам потребуется дополнительная помощь, обратитесь в нашу службу поддержки.

Управление виртуальной памятью для систем обработки транзакций (Разное)

Эппингер, Дж. Л. Управление виртуальной памятью для систем обработки транзакций .США: Н. П., 1989. Интернет.

Эппингер, Дж. Л. Управление виртуальной памятью для систем обработки транзакций . Соединенные Штаты.

Эппингер, Дж. Л. Сан. «Управление виртуальной памятью для систем обработки транзакций».Соединенные Штаты.

@article {osti_6472855,
title = {Управление виртуальной памятью для систем обработки транзакций},
author = {Eppinger, J L},
abstractNote = {Для поддержки атомарности и постоянства отказов системы обработки транзакций хранят данные в восстанавливаемом хранилище. Восстанавливаемое хранилище обычно реализуется с использованием комбинации энергозависимого, энергонезависимого и стабильного хранилища.Данные хранятся в энергонезависимой памяти в течение длительного времени. Пока данные обрабатываются, они кэшируются в энергозависимой первичной памяти. Стабильное хранилище используется для журнала, который позволяет отменять или повторять операции. Системы обработки транзакций обычно сами реализуют восстанавливаемое хранилище, используя виртуальную память или специально отображаемую физическую память для энергозависимого буферного пространства. Однако можно получить много преимуществ, если операционная система предоставляет восстанавливаемую виртуальную память: данные отображаются в виртуальной памяти и, таким образом, доступ к ним становится более удобным; компоненты быстрой трансляции адресов и подкачки в операционной системе обеспечивают повышенную производительность; объем первичной памяти, выделенной для буферизации данных, адаптируется к загрузке системы, что позволяет исключить двойную подкачку страниц.Восстанавливаемая виртуальная память не исключает использования других методов обработки транзакций. Для систем обработки транзакций может быть предоставлена ​​поддержка виртуальной памяти. Некоторые обзоры сделаны о новом оборудовании и специальных реализациях восстанавливаемой виртуальной памяти. Подробно описана система, реализующая восстанавливаемую виртуальную память: средство обработки транзакций Camelot. Реализация Camelot использует общий программный подход, который не использует никакого специального оборудования (кроме стандартного оборудования виртуальной памяти).Реализация переносима: она работает на IBM RT, Sun и Vax, включая многопроцессорные Vax с разделяемой памятью. Используются различные методы регистрации и блокировки. Другие специализированные реализации восстанавливаемой виртуальной памяти налагают серьезные ограничения на пользователей. Демонстрируется использование восстанавливаемой виртуальной памяти для систем обработки транзакций общего назначения.},
doi = {},
url = {https://www.osti.gov/biblio/6472855}, журнал = {},
номер =,
объем =,
место = {США},
год = {1989},
месяц = ​​{1}
}

COS 318 — пр.5

Настройка таблицы страниц

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

Это последнее заявление необходимо повторить. Вам нужно будет понять, как должны выглядеть записи таблицы страниц. Как там флаги набор? Как сопоставить виртуальный адрес с конкретной записью? Как вы храните физический адрес страницы для записи? Воспользуйтесь предоставленными функциями init_ptab_entry (), insert_ptab_dir () и set_ptab_entry_flags () при установке записей таблицы страниц, записей каталога страниц и флагов записи страницы.

Все потоки ядра используют одно и то же адресное пространство ядра и экранную память, поэтому они могут использовать та же таблица страниц. Используйте N_KERNEL_PTS (номер страницы ядра таблицы в каталоге страницы ядра), чтобы определить, сколько ядра страниц таблицы сделать. Каждая таблица страниц ядра должна содержать записи PAGE_N_ENTRIES (1024), пока базовый адрес страницы не достигнет MAX_PHYSICAL_MEMORY.

Обратите внимание, что наши начальные значения для констант даны в памяти.час все может уместиться в одном столе. Можно нанести на карту больше, чем требуется (например, вы можете отобразить всю таблицу страниц).

Реализуйте init_memory () для первоначального сопоставления вашего страницы физической памяти для запуска потоков ядра.

Виртуальное адресное пространство пользовательского процесса:

  • Сопоставьте ядро ​​и экран с их физическими адресами (virtual = физический)
  • Сопоставьте адреса для кода процесса и сегментов данных с его собственные страницы.Это означает, что каждый процесс имеет четыре типа страниц: , каталог страниц, , Таблица страниц , таблица стопки и страница стопки . Посмотрите на PROCESS_START и PROCESS_STACK для идеи где в виртуальной памяти все находится. Вы должны выделить N_PROCESS_STACK_PAGES страниц для стека процессов.
  • Память ядра: недоступна
  • Память экрана: чтение-запись
  • Другая память: чтение-запись

Реализуйте setup_page_table () для загрузки кода и данных пользовательский процесс в его виртуальное адресное пространство.Вам нужно будет выделить его страницы и загрузите процесс. Определяется каталог страниц задачи. через pcb-> page_directory. Это необходимо установить при настройке таблиц страниц.

Есть еще две вещи, которые вам понадобятся для настройки адресного пространства и которые помогут вам: с отслеживанием сопоставлений страниц:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *