ScholarGate
Ассистент

Виртуальная память и страничная организация

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

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

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

Scope

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

Core questions

  • Как виртуальные адреса преобразуются в физические адреса через таблицы страниц?
  • Как TLB ускоряет преобразование и что происходит при промахе TLB?
  • Что происходит при страничной ошибке и как обрабатывается страничная подкачка по требованию?
  • Как концепция рабочего набора направляет замещение страниц и предотвращает "пробуксовку"?

Key concepts

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

Key theories

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

Mechanisms

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

Clinical relevance

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

History

Виртуальная память возникла с компьютером Atlas в Манчестере в начале 1960-х годов, представив страничную организацию и механизм страничных ошибок. Модель рабочего набора Деннинга 1968 года дала принципиальное объяснение локальности и "пробуксовки" (thrashing). Аппаратная поддержка через TLB и многоуровневые таблицы страниц, а затем и такие функции, как большие страницы, сделали виртуальную память повсеместной в системах общего назначения.

Key figures

  • Peter J. Denning
  • Maurice Wilkes
  • John L. Hennessy
  • Abraham Silberschatz

Related topics

Seminal works

  • denning1968
  • hennessy2019
  • silberschatz2018

Frequently asked questions

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

Methods for this concept

Related concepts