Виртуальная память и страничная организация
Виртуальная память предоставляет каждой программе собственное большое, непрерывное адресное пространство, которое аппаратное и программное обеспечение отображает на физическую память фиксированными страницами, обеспечивая изоляцию, защиту и иллюзию большего объема памяти, чем существует физически.
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) — это падение производительности, когда объединенные рабочие наборы активных процессов превышают объем физической памяти, поэтому система тратит большую часть своего времени на подкачку данных вместо выполнения полезной работы. Поддержание рабочих наборов в памяти или снижение нагрузки позволяет избежать этого.