Виртуальная память
Хотя базовый регистр и индексный регистр используются для создания абстракции адресного пространства, необходимо решить еще одну проблему:管理软件的膨胀(managing bloatware)
. Хотя размер памяти быстро растет, размер программного обеспечения растет еще быстрее, чем объем памяти. В 1980-х годах многие университеты использовали операционную систему с разделением времени с компьютером VAX на 4 МБ для одновременной работы дюжины пользователей. Рекомендованная Microsoft 64-разрядная система Windows 8 теперь требует не менее 2 ГБ памяти, и многие мультимедийные тенденции еще больше увеличивают потребность в памяти.
В результате такого развития программы, которые необходимо запустить, часто слишком велики, чтобы поместиться в памяти, и система должна поддерживать несколько программ, работающих одновременно. одной программы, общей памяти все равно не хватает.Растущий спрос на софт (по ощущениям очень похоже на противоречие между ххх и ххх). Однако технология подкачки не очень эффективное решение.В некоторых малых и средних приложениях подкачка все же может использоваться.Если приложение слишком большое, сколько ГБ памяти нужно каждый раз подкачивать? Это явно неуместно, типичноеSATA
Пиковая скорость передачи данных на диске составляет сотни мегабит в секунду, что означает, что для загрузки или замены программы размером 1 ГБ требуется несколько секунд.
Жесткий диск SATA (Serial ATA), также известный как последовательный жесткий диск, является тенденцией жесткого диска ПК в будущем и в основном заменил традиционный жесткий диск PATA.
Так есть ли эффективный способ справиться с этим? Да, это использовать虚拟内存(virtual memory)
, основная идея виртуальной памяти заключается в том, что каждая программа имеет свое адресное пространство, это адресное пространство делится на несколько页面(page)
блокировать. Каждая страница представляет собой непрерывный диапазон адресов. Эти страницы сопоставляются с физической памятью, но не все страницы должны находиться в памяти для запуска программы. Когда программа обращается к части адресного пространства в физической памяти, оборудование немедленно выполняет необходимое отображение. Когда программа ссылается на часть адресного пространства, которая не находится в физической памяти, операционная система несет ответственность за загрузку недостающей части в физическую память и повторное выполнение неудачной инструкции.
В некотором смысле виртуальный адрес — это обзор базового и индексного регистров. 8088 имеет отдельные базовые регистры (но не индексные регистры) для размещения текста и данных.
Используя виртуальную память, все адресное пространство может быть отображено в физической памяти небольшими единицами, а не только перемещением для текстовых областей и областей данных. Ниже мы обсудим, как реализована виртуальная память.
Виртуальная память хорошо подходит для использования в мультипрограммных системах, где фрагменты многих программ хранятся в памяти одновременно, и пока одна программа ждет, пока часть ее будет прочитана в память, ЦП может быть передан другой процесс.
нумерация страниц
Большинство систем, использующих виртуальную память, используют分页(paging)
Технологии. На любом компьютере программа обращается к набору адресов памяти. когда программа выполняется
MOV REG,1000
Когда эта инструкция выполняется, она копирует содержимое ячейки памяти 1000 в REG (или наоборот, в зависимости от компьютера). Адрес может быть сгенерирован индексом, базовым регистром, сегментным регистром или другими способами.
Адреса, генерируемые этими программами, называются虚拟地址(virtual addresses)
и форма虚拟地址空间(virtual address space)
, На компьютере без виртуальной памяти система напрямую отправляет виртуальный адрес в строку памяти, и операции чтения и записи используют физическую память одного и того же адреса.При использовании виртуальной памяти виртуальные адреса не отправляются напрямую на шину памяти.. Вместо этого используйтеMMU(Memory Management Unit)
блок управления памятьюВиртуальные адреса сопоставляются с адресами физической памяти., как показано ниже
На изображении ниже показано, как работает это сопоставление.
Таблица страниц дает сопоставление между виртуальными адресами и адресами физической памяти. Каждая страница начинается с числа, кратного 4096, и заканчивается числом 4095, поэтому от 4K до 8K на самом деле 4096–8191, а от 8K до 12K — 8192–12287.
В этом примере у нас может быть компьютер с 16-битными адресами от 0 до 64K-1, это虚拟地址
. Однако физических адресов всего 32 КБ. Таким образом, хотя программа размером 64 КБ может быть написана, программа не может быть полностью загружена в память для запуска, и должна быть полная копия образа ядра программы размером до 64 КБ на диске, чтобы гарантировать загрузку фрагментов программы в память при необходимости. .
Как сопоставляются сопоставленные страницы
Виртуальное адресное пространство состоит из блоков фиксированного размера, называемых页(pages)
. Напротив, в физической памяти также есть физические единицы фиксированного размера, называемые页框(page frames)
. Страницы и рамки страниц имеют одинаковый размер. В приведенном выше примере размер страницы составляет 4 КБ, но на практике размер страницы может варьироваться от 512 байт до 1 Гбайт. Соответственно 64 КБ виртуального адресного пространства и 32 КБ физической памяти вы получаете 16 виртуальных страниц и 8 фреймов страниц. Переключение между оперативной памятью и диском всегда выполняется в единицах целых страниц.
Например, когда программа пытается получить доступ к адресу, выполните следующую инструкцию
MOV REG, 0
Отправит виртуальный адрес 0 в MMU. MMU видит, что виртуальный адрес приходится на страницу 0 (0 - 4095), и по результату его сопоставления эта страница соответствует страничному фрейму 2 (8192 - 12287), поэтому MMU конвертирует адрес в 8192 и отправляет адрес 8192 к автобусу. Память ничего не знает о MMU, она просто видит запрос на чтение и запись по адресу 8192 и выполняет его. Таким образом, MMU эффективно отображает все виртуальные адреса 0–4095 в физические адреса 8192–12287. Аналогично, команда
MOV REG, 8192
также эффективно преобразуется в
MOV REG, 24576
Виртуальный адрес 8192 (на виртуальной странице 2) сопоставляется с физическим адресом 24576 (во фрейме 6 физической страницы).
При соответствующих настройках MMU 16 виртуальных страниц могут быть сопоставлены с любым из 8 фреймов страниц. Но это не решает проблему того, что виртуальное адресное пространство больше физической памяти.
На приведенном выше рисунке 8 кадров физических страниц, поэтому в физическую память отображается только 8 виртуальных страниц.X
Остальные страницы, отмеченные знаком, не отображаются. В реальном аппаратном обеспечении在/不在(Present/absent bit)
Биты записывают фактическое существование страницы в памяти.
Как сопоставляются несопоставленные страницы
Когда программа обращается к несопоставленной странице, например, выполняет инструкцию
MOV REG, 32780
Что случится? Каков физический адрес 12-го байта виртуальной страницы 8 (начиная с 32768)? MMU замечает, что страница не отображена (обозначена X на диаграмме), поэтому CPU陷入(trap)
в операционную систему. Эта ловушка называется缺页中断(page fault)
или缺页错误
. Операционная система выберет редко используемую страницу и запишет ее содержимое на диск (если ее еще нет на диске). Затем прочитайте страницу, к которой нужно получить доступ, в только что восстановленный фрейм страницы, измените отношение сопоставления, а затем перезапустите инструкцию, вызвавшую ловушку. Это немного сложно понять, давайте возьмем пример.
Например, если операционная система решит удалить кадр страницы 1, она загрузит страницу 8 виртуальной машины по физическому адресу 4096 и внесет два изменения в карту MMU. Во-первых, он помечает запись 1 на виртуальной странице как несопоставленную, так что любой будущий доступ к виртуальным адресам 4096–8191 приведет к ловушке. Запись для виртуальной страницы 8 затем изменяется, чтобы иметь перекрестный номер 1, поэтому, когда инструкция, вызвавшая прерывание, перезапускается, она сопоставляет виртуальный адрес 32780 с физическим адресом (4096 + 12).
Давайте взглянем на внутренности MMU, чтобы понять, как они работают и почему мы выбираем размеры страниц, все степени двойки. Ниже мы можем увидеть пример виртуального адреса
Виртуальный адрес 8196 (двоичный 0010000000000100) отображается с помощью механизма отображения MMU, показанного на карте таблицы страниц выше, а входной 16-битный виртуальный адрес делится на 4-битный номер страницы и 12-битное смещение. 4-битный номер страницы может представлять 16 страниц, а 12-битное смещение может соответствовать всем 4096 байтам страницы.
Доступные номера страниц как页表(page table)
index для получения номера фрейма страницы, соответствующего этой виртуальной странице. если在/不在
Бит равен 0, вызывая ловушку операционной системы. Если этот бит равен 1, номер страничного фрейма, найденный в таблице страниц, копируется в 3 старших бита выходного регистра плюс младшие 12-битное смещение во входном виртуальном адресе. Это составляет 15-битный физический адрес. Затем содержимое выходного регистра отправляется на шину как физический адрес.
таблица страниц
В приведенном выше простом примере сопоставление виртуальных адресов с физическими можно резюмировать следующим образом: Виртуальные адреса делятся на虚拟页号(高位部分)
и偏移量(低位部分)
. Например, для 16-битного адреса и размера страницы 4 КБ верхние 4 бита могут указывать одну из 16 виртуальных страниц, а младшие 12 бит определяют смещение (0-4095) в пределах выбранной страницы.
Номер виртуальной страницы можно использовать в качестве индекса в таблице страниц для поиска содержимого виртуальной страницы. Номер страничного фрейма (если есть) можно найти в записи таблицы страниц. Затем номер кадра страницы присоединяется к старшему концу смещения, чтобы заменить номер виртуальной страницы и сформировать физический адрес.
Таким образом, цель таблицы страниц — отображать виртуальные страницы в страничные фреймы. С математической точки зрения таблица страниц — это функция, аргументом которой является номер виртуальной страницы, а результатом — номер физического кадра страницы.
С помощью этой функции виртуальная страница в виртуальном адресе может быть преобразована в страничный фрейм, тем самым формируя физический адрес.
Структура записей таблицы страницы
Давайте обсудим конкретную структуру записи таблицы страниц.Вы знаете общий состав записи таблицы страниц, который состоит из номера фрейма страницы и присутствия/отсутствия.Теперь давайте подробно обсудим состав записи таблицы страниц.
Структура записей таблицы страниц зависит от машины, но записи таблицы страниц примерно одинаковы на разных машинах. Выше приведен состав записи таблицы страниц.Записи таблицы страниц на разных компьютерах могут быть разными, но обычно они 32-битные. Наиболее важным полем в записи таблицы страниц является页框号(Page frame number)
. В конце концов, самым важным шагом в работе таблицы страниц с фреймом страницы является сопоставление этого значения. Следующее более важное在/不在
бит, если значение этого бита равно 1, то запись в таблице страниц действительна и может быть使用
.如果此值是 0 的话,则表示该页表项对应的虚拟页面不在
память, доступ к странице вызовет缺页异常(page fault)
.
保护位(Protection)
Расскажите, какой доступ разрешен, что это значит? Самое простое представление состоит в том, что это поле имеет только один бит,0 означает чтение и запись, 1 означает только чтение.
修改位(Modified)
и访问位(Referenced)
Использование страницы отслеживается. Когда страница записывается, аппаратное обеспечение автоматически устанавливает бит модификации. Бит модификации полезен, когда страница перераспределяет страничный фрейм. Если страница была изменена (т.е.脏
), он должен быть записан обратно на диск. Если страница не была изменена (т.е.干净
), то фрейм страницы будет удален непосредственно при перераспределении, поскольку копия на диске все еще действительна. Этот бит иногда называют脏位(dirty bit)
, так как он отражает состояние страницы.
访问位(Referenced)
Установите, когда к странице обращаются, либо для чтения, либо для записи. Это значение помогает операционной системе выбирать, какие страницы удалять при возникновении ошибки страницы. Страницы, которые больше не используются, более подходят для удаления, чем страницы, которые используются. Этот бит будет обсуждаться позже页面置换
Алгоритмы играют большую роль.
Последний бит используется для предотвращения кэширования страницы, функция, которая играет ключевую роль в сопоставлении с регистрами устройства или памятью. Используйте этот бит, чтобы отключить кэширование. Этот бит не требуется для машин с отдельным пространством ввода-вывода, а не с отображением ввода-вывода в память.
Прежде чем подробно обсудить следующие вопросы, необходимо подчеркнуть: виртуальная память — это, по сути, абстракция, используемая для создания адресного пространства, которое можно понимать как процесс — это абстракция ЦП, а реализация виртуальной памяти — это, по сути, разложить виртуальное адресное пространство на страницы и сопоставить каждый элемент со страничным фреймом в физической памяти. Потому что мы сосредоточены на том, как управлять этой абстракцией виртуальной памяти.
Ускорить процесс подкачки
До сих пор у нас есть虚拟内存(virtual memory)
и分页(paging)
Теперь мы можем сосредоточиться на конкретной реализации. В любой системе с пейджингом есть две основные проблемы:
- Скорость сопоставления виртуальных адресов с физическими адресами должна быть высокой.
- Если виртуальное адресное пространство достаточно велико, таблица страниц также будет достаточно большой.
Первый вопросПоскольку каждый доступ к памяти должен сопоставляться с виртуального адреса на физический адрес, все инструкции в конечном счете поступают из памяти, и многие инструкции также обращаются к операндам в памяти.
Операнды: операнд — это компонент компьютерной инструкции, определяющий количество числовых операций, выполняемых в инструкции. Операнды указывают источник данных, необходимых для операции, выполняемой инструкцией. Операнд — это поле ассемблерной инструкции. Например, MOV, ADD и т. д.
Следовательно, каждая инструкция может обращаться к таблице страниц несколько раз, и если для выполнения инструкции требуется 1 нс, поиск в таблице страниц должен завершиться в течение 0,2 нс, чтобы сопоставление не стало серьезным узким местом в производительности.
Вторая проблема заключается в том, что все современные операционные системы используют как минимум 32-битные виртуальные адреса, а 64-битные становятся все более распространенными. Если предположить, что размер страницы составляет 4 КБ, 32-битное адресное пространство составляет почти миллион страниц, а 64-битное адресное пространство просто невообразимо.
Потребность в больших и быстрых картах страниц стала очень важным ограничением при создании компьютеров. Как и на диаграмме в таблице страниц выше,Каждая запись соответствует виртуальной странице, номер виртуальной страницы в качестве индекса. При запуске процесса операционная система помещает прочитанную копию таблицы страниц процесса, хранящуюся в памяти, в регистр.
Последнее предложение непонятно? Помните, что такое таблица страниц? Это таблица страниц, которая сопоставляет виртуальные адреса с адресами памяти. Таблицы страниц являются ключевым компонентом преобразования виртуальных адресов, которое требуется для доступа к данным в памяти. Когда процесс начинается, преобразование виртуального адреса в физический выполняется много раз, копия физического адреса считывается из памяти в регистр, а затем выполняется процесс преобразования.
Следовательно, во время работы процесса больше нет необходимости обращаться к памяти для таблицы страниц. Преимущество использования этого метода в том, что简单而且映射过程中不需要访问内存
. слабость это页表太大时,代价高昂
, и каждый раз, когда переключение контекста должно装载整个页表
, что приведет к снижению производительности. В связи с этим мы обсуждаем реализацию механизма ускоренного пейджинга и работу с большим виртуальным адресным пространством.
буфер обнаружения перехода
Давайте сначала обсудим проблему ускоренного пейджинга. Большинство схем оптимизации начинаются с таблиц страниц в памяти. Эта конструкция оказывает огромное влияние на эффективность. Рассмотрим, например, 1-байтовую инструкцию, которая копирует данные из одного регистра в другой. В случае отсутствия подкачки эта инструкция обращается к памяти только один раз, то есть извлекает инструкцию из памяти. При использовании механизма подкачки для доступа к таблице страниц требуется больше обращений к памяти. Поскольку скорость выполнения обычно ограничивается скоростью, с которой ЦП извлекает инструкции и данные из памяти, в этом случае только два обращения могут дать эффект от одного обращения, поэтому производительность обращения к памяти упадет вдвое. В этом случае пейджинговый механизм вообще не будет задействован.
Что такое 1-байтовая инструкция? Для иллюстрации возьмем в качестве примера микропроцессор 8085. В микропроцессоре 8085 имеется в общей сложности 3 вида байтовых инструкций:
1-byte(1 字节)
,2-byte(2 字节)
,3-byte(3 字节)
, Давайте поговорим о1-байтовый: 1-байтовые операнды и коды операций вместе представлены в 1 байте; операнды являются внутренними регистрами и закодированы в инструкции; для инструкций требуется ячейка памяти для хранения одного регистра в ячейке памяти. Инструкции без операндов также являются 1-байтовыми инструкциями.
Например: MOV B, C, LDAX B, NOP, HLT (читатели, которые не понимают, что это может проверить это сами по себе)
2-байтовый: 2 байта состоят из: первый байт определяет код операции, второй байт определяет операнд, инструкция требует двух ячеек памяти для хранения в памяти.
Например МВИ Б, 26 Ч, ИН 56 Ч
3 байта: в 3-байтовой инструкции первый байт указывает код операции, следующие два байта определяют 16-битный адрес, второй байт содержит
低位
адрес; третий байт содержит高位
адрес. Инструкция требует трех ячеек памяти для хранения одного байта в памяти.Например LDA 2050 H, JMP 2085 H
Большинство программ всегда совершают множество посещений небольшого количества страниц, а не небольшое количество посещений большого количества страниц. Таким образом, только к нескольким страницам возможен повторный доступ, а доступ к другим записям таблицы страниц осуществляется редко.
Записи таблицы страниц также обычно называют
Page Table Entry(PTE)
.
Основываясь на этой идее, предлагается схема, которая должна решить эту проблему с точки зрения аппаратного обеспечения и настроить небольшое аппаратное устройство для компьютера, которое может напрямую сопоставлять виртуальный адрес с физическим адресом без необходимости доступа к странице. Таблица. Это устройство называется转换检测缓冲区(Translation Lookaside Buffer, TLB)
, иногда называемый相联存储器(associate memory)
.
значащий бит | виртуальный номер страницы | изменить бит | защитный бит | номер кадра |
---|---|---|---|---|
1 | 140 | 1 | RW | 31 |
1 | 20 | 0 | R X | 38 |
1 | 130 | 1 | RW | 29 |
1 | 129 | 1 | RW | 62 |
1 | 19 | 0 | R X | 50 |
1 | 21 | 0 | R X | 45 |
1 | 860 | 1 | RW | 14 |
1 | 861 | 1 | RW | 75 |
Ускоренная пейджинговая связь TLB
TLB обычно располагается в MMU и содержит небольшое количество записей.Каждая запись записывает соответствующую информацию о странице.За исключением номера виртуальной страницы,остальные записи находятся во взаимно-однозначном соответствии с таблицей страниц.
Вы все еще немного запутались в том, что такое TLB?TLB на самом деле является своего рода кешем памяти, который используется для сокращения времени, необходимого для доступа к памяти.Это часть MMU.TLB будет хранить преобразование виртуальных адресов в физические адреса , обычно можно назвать地址翻译缓存(address-translation cache)
. TLB обычно расположен между CPU и кэшем CPU, кэш CPU - это разные уровни кэша. Здесь мы посмотрим, как это работает TLB.
Когда виртуальный адрес в MMU необходимо преобразовать, аппаратное обеспечение сначала проверяет номер виртуальной страницы и параллельно сопоставляет все записи в TLB, чтобы определить, находится ли виртуальная страница в TLB. Если найдено допустимое совпадение и требуемая операция доступа не нарушает биты защиты, номер страничного фрейма берется непосредственно из TLB без прямого обращения к таблице страниц. Если виртуальная страница находится в TLB, но нарушает разрешения битов защиты (например, разрешено только чтение, но инструкция записи),保护错误(protection fault)
возвращение.
Вышеприведенное обсуждение касается виртуального адреса в TLB, что же делать, если виртуального адреса больше нет в TLB? Если MMU обнаруживает, что действительного совпадения нет, он выполняет обычный поиск в таблице страниц, удаляет запись из TLB и помещает запись, найденную в таблице страниц, в TLB. Когда запись удаляется из TLB, измененные биты копируются в запись таблицы страниц в памяти, оставляя остальные биты без изменений, кроме битов доступа. Когда записи таблицы страниц загружаются из таблицы страниц в TLB, все значения поступают из памяти.
Программное обеспечение для управления TLB
До сих пор мы предполагали, что каждый компьютер имеет таблицы страниц, распознаваемые аппаратным обеспечением, плюс TLB. В этой схеме управление TLB и обработка ошибок TLB полностью выполняются аппаратно. Только когда страница не находится в памяти, операционная система陷入(trap)
.
В прошлом наши предположения, приведенные выше, обычно были правильными. Однако многие современныеRISC
В машинах, включая SPARC, MIPS и HP PA, почти все управление страницами выполняется программно.
Компьютер с сокращенным набором команд или RISC - это набор компьютерных инструкций, который позволяет микропроцессору компьютера выполнять меньше циклов на инструкцию (CPI), чем компьютер со сложным набором команд (CISC).
На этих машинах записи TLB явно загружаются операционной системой. Когда происходит потеря доступа к TLB,Вместо поиска и извлечения требуемой записи таблицы страниц из таблицы страниц с помощью MMU генерируется ошибка TLB, и проблема передается операционной системе для решения.. Операционная система должна найти страницу, удалить ее из TLB (удалить запись в таблице страниц), поместить вновь найденную страницу в TLB и, наконец, выполнить ранее ошибочную инструкцию. Однако все эти операции должны выполняться с небольшим количеством инструкций, поскольку промахи TLB происходят гораздо чаще, чем ошибки.
Независимо от того, используется ли аппаратное или программное обеспечение для обработки сбоев TLB, общий способ - найти таблицу страницы и выполнить операцию индекса, чтобы найти доступ к доступу страницы. Проблема с поиском в программное обеспечение заключается в том, что страница, удерживающая таблица страницы, может не быть В TLB это приведет к другим ошибкам TLB во время обработки. Улучшение состоит в том, чтобы поддерживать большие кэширование записей TLB в фиксированном месте в памяти, чтобы уменьшить аннулирование TLB. Сначала проверяя кеш программного обеспечения,操作系统
Может эффективно уменьшить проблемы сбоя TLB.
В управлении программным обеспечением TLB возникают две проблемы недействительности TLB.Когда доступ к странице осуществляется в памяти, но не в TLB, она软失效(soft miss)
, то все, что нужно сделать на этом этапе, — это обновить таблицу страниц в TLB (процесс, который мы обсуждали выше) без создания дискового ввода-вывода, а обработка требует всего нескольких машинных инструкций для завершения за несколько наносекунд. Однако, когда самой страницы нет в памяти, она сгенерирует硬失效(hard miss)
, то в это время необходимо получить таблицу страниц с диска, а время обработки жесткого сбоя обычно в миллион раз больше, чем мягкого сбоя. Процесс поиска отображения в структуре таблицы страниц называется页表遍历(page table walk)
.
Вышеуказанные два случая являются идеальными явлениями, но ситуация будет более сложной в реальном процессе подачи заявки, и ситуация промаха может не быть ни серьезным сбоем, ни мягким сбоем. некоторые промахи могут быть больше软
или больше硬
(Смеющийся). Например, если обход таблицы Page Page не требуется, чтобы найти страницу, она появится тремя способами:
- Нужная вам страница находится в памяти, но не в таблице страниц процесса, эта ситуация может быть удалена с диска с диска, которому нужно только правильно отобразить страницу, и не нужно Это мягкая реализация от жесткой диск.
次要缺页错误(minor page fault)
. - Исходя из вышеописанной ситуации, если вам нужно загрузить страницу прямо с жесткого диска, это
严重缺页错误(major page falut)
. - В другом случае программа могла получить доступ к недопустимому адресу вообще без добавления отображения в TLB. В этот момент операционная система сообщит о
段错误(segmentation fault)
чтобы завершить программу. Только третий тип ошибки страницы является программной ошибкой, другие ошибки страницы будут исправлены аппаратным обеспечением или операционной системой за счет снижения производительности программы.
Таблица таблиц страниц для большой памяти
Помните, какая проблема, о которой мы говорим об этом? (Wulian), слишком много, возможно, обсуждали, не знаете вас, и я бы напомнил вам, выше加速分页
Обсуждаемый процессСкорость сопоставления виртуальных адресов с физическими адресами должна быть высокой.проблема, и еще одна проблемаЕсли виртуальное адресное пространство достаточно велико, таблица страниц также будет достаточно большой.Как быть с огромным виртуальным адресным пространством, мы начнем наше обсуждение ниже.
многоуровневая таблица страниц
Первый вариант заключается в использовании多级页表(multi)
, Ниже приведен пример
32-битный виртуальный адрес делится на 10-битное поле PT1, 10-битное поле PT2 и 12-битное поле смещения. Поскольку смещение составляет 12 бит, размер страницы составляет 4 КБ, а общих страниц 2^20.
Причина введения многоуровневых таблиц страниц состоит в том, чтобы избежать постоянного хранения всех таблиц страниц в памяти. Таблицы страниц, которые не нужны, не должны храниться.
Многоуровневая таблица страниц — это схема страниц, состоящая из двух или более уровней таблиц страниц, также известная как иерархическая страница страниц. Записи таблицы страниц уровня 1 являются указателями на таблицы страниц уровня 2, записи таблицы страниц уровня 2 являются указателями на таблицы страниц уровня 3 и так далее. Последний уровень таблиц страниц хранит актуальную информацию.
Ниже приведен рабочий процесс вторичной страницы таблицы
Слева находится таблица страниц верхнего уровня, в ней 1024 записи, соответствующие 10-битному полю PT1. Когда виртуальный адрес отправляется в MMU, MMU сначала извлекает поле PT1 и значение в качестве индекса доступа к верхней части таблицы страниц. Поскольку весь виртуальный адрес размером 4 ГБ (т. е. 32-разрядный) делится на размер блока 4 КБ, каждая из верхних записей таблицы страниц по 1024 указывает диапазон адресов блока 4M.
Запись, полученная путем индексации таблицы страниц верхнего уровня, содержит адрес или номер страничного фрейма таблицы страниц второго уровня. Запись 0 верхней таблицы страниц указывает на таблицу страниц тела программы, запись 1 указывает на таблицу страниц, содержащую данные, запись 1023 указывает на таблицу страниц стека, а остальные项(用阴影表示)
Указывает, что не используется. Поле PT2 теперь используется в качестве индекса для доступа к выбранной вторичной таблице страниц, чтобы найти соответствующий номер страничного фрейма виртуальной страницы.
Перевернутая таблица страниц
Альтернативой увеличению иерархии страниц является использование倒排页表(inverted page tables)
. PowerPC, UltraSPARC и Itanium используют это решение. В этой схеме на каждый страничный фрейм в реальной памяти приходится одна запись, а не одна запись на виртуальную страницу.
Хотя инвертированная таблица страниц экономит много места, у нее есть и свой недостаток: преобразование виртуальных адресов в физические может стать затруднительным. Когда процесс n обращается к виртуальной странице p, аппаратное обеспечение больше не может искать физическую страницу, рассматривая p как индекс в таблице страниц. Вместо этого необходимо просмотреть весь инвертированный список, чтобы найти запись. Кроме того, поиск должен выполняться один раз для каждой операции доступа к памяти, а не для ошибок страниц.
При использовании TLB способ решить эту проблему. Когда происходит сбой TLB, нам нужно все программное обеспечение для поиска инвертированной таблицы страниц. Одним из возможных способов является создание хэш-таблицы, хэш-виртуальный адрес. Все текущие страницы виртуальной памяти с одинаковым значением хеш-функции связываются вместе. Как показано ниже
Если количество канавок в хеш-таблице равно количеству физических страниц в машине, длина цепочки коллизий хеш-таблицы будет равна длине одной записи, что значительно увеличит скорость отображения. Как только страничный фрейм будет найден, новый (номер виртуальной страницы, номер физической страницы) будет смонтирован в TLB.
опечатка
На странице P115 положение двух строк перепутано.Согласно приведенному ниже описанию, легко ввести других в заблуждение.Пожалуйста, исправьте это.
Ссылка на статью:
En. Wikipedia.org/wiki/Page_th…
факультет.Salina.can-state.quota/title/OS is a/me…
Woohoo. geek для гиков — это .org/afraid-rep AC…
woohoo.geek для гиков is.org/multilevel-…
Хорошо. Wikipedia.org/wiki/trans out…
электроника voice.com/instruction…
En. Wikipedia.org/wiki/Page_he…
Woohoo. Вопрос о Java point.com/OS-боится-он не…
baike.baidu.com/item/memory/103…
baike.baidu.com/item/data segment/51…
Современные операционные системы, четвертое издание
《Современная операционная система》четвертый