00010110 01000110 01110110 10100110 11010110 100000110
00010111 01000111 01110111 10100111 11010111 100000111
00011000 01001000 01111000 10101000 11011000 100001000
00011001 01001001 01111001 10101001 11011001 100001001
00011010 01001010 01111010 10101010 11011010 100001010
00011011 01001011 01111011 10101011 11011011 100001011
00011100 01001100 01111100 10101100 11011100 100001100
00011101 01001101 01111101 10101101 11011101 100001101
00011110 01001110 01111110 10101110 11011110 100001110
00011111 01001111 01111111 10101111 11011111 100001111
00100000 01010000 10000000 10110000 11100000 100010000
00100001 01010001 10000001 10110001 11100001 100010001
00100010 01010010 10000010 10110010 11100010 100010010
00100011 01010011 10000011 10110011 11100011 100010011
00100100 01010100 10000100 10110100 11100100 100010100
00100101 01010101 10000101 10110101 11100101 100010101
00100110 01010110 10000110 10110110 11100110 100010110
00100111 01010111 10000111 10110111 11100111 100010111
00101000 01011000 10001000 10111000 11101000 100011000
00101001 01011001 10001001 10111001 11101001 100011001
00101010 01011010 10001010 10111010 11101010 100011010
00101011 01011011 10001011 10111011 11101011 100011011
00101100 01011100 10001100 10111100 11101100 100011100
00101101 01011101 10001101 10111101 11101101 100011101
00101110 01011110 10001110 10111110 11101110 100011110
00101111 01011111 10001111 10111111 11101111 100011111
Поэтому страничное преобразование памяти широко распространено при организации систем виртуальной памяти. Прикладные программы не касаются процесса страничного преобразования адреса и могут использовать все линейное адресное пространство. Когда программа обращается к странице, отсутствующей в физической памяти, процессор автоматически формирует особый случай страничного нарушения. При этом адрес, по которому был обнаружен последний отказ страницы, заносится и хранится в регистре управления CR2. При обработке этого особого случая операционная система загружает в оперативную память, затребованную страницу из внешней памяти (при необходимости отправляя ненужную страницу из оперативной памяти на диск). Поэтому сутью страничного преобразования является способ отображения любой страницы линейного адресного пространства на страничный кадр физического памяти.
Границы страниц следуют через одинаковые интервалы 4Кбайт. В то же время границы сегментов являются произвольными, так как определяются базовыми адресами конкретного сегмента. Строго говоря, границы страниц и сегментов не зависят друг от друга и не обязательно должны быть выровнены. Однако для повышения производительности процессора рекомендуется выравнивать небольшие сегменты (с размером 4Кбайт и менее, например сегменты состояния задач TSS), так, чтобы они полностью находились в пределах одной страницы. Такое выравнивание гарантирует, что при загрузке одной страницы будет полностью загружен весь сегмент.
Отметим также, что система защиты используется как на уровне сегментов, так и на уровне страниц. Отличие заключается в том, что если для сегментов предусмотрено 4 уровня привилегий (0,1,2,3), то при страничной организации памяти имеется всего два уровня привилегий: пользователь и супервизор. При этом уровень 3 соответствует уровню пользователя (User), а уровни 0,1,2 – уровню супервизора (Supervisor).
Организация страничного преобразования.
В процессе страничного преобразования старшие 20 бит 32-разрядного линейного адреса, которые представляют номер виртуальной страницы, заменяется другим 20-битным значением – номером физической страницы. Это осуществляется с помощью специальной таблицы страниц.
Остающиеся младшие 12 бит линейного адреса, определяют положение адресуемого байта внутри страницы (смещение в странице), и остаются неизменными. Прежде чем рассмотреть схему устройства реализации страничного преобразования адресов в современных микропроцессорах, рассмотрим общий принцип страничного преобразования виртуальных адресов адресного пространства размером 4 Г (т.е. 32-разрядных адресов) в адреса физической оперативной памяти общим объемом 32 Кбайт.
Рис III.19 Схема преобразования адреса виртуальной памяти в физический
адрес реальной оперативной памяти.
Будем считать, что размер страничного кадра физической оперативной памяти равен 4 Кбайт (наиболее широко используемый размер страниц). Следовательно, наша оперативная память будет содержать всего 8 страничных кадров. А поскольку пользователю дается в распоряжение 4 Гбайт памяти, то устройство преобразования адресов должно отображать 4 Гбайт виртуальной памяти на 32 Кбайт реальной физической оперативной памяти используемого компьютера. В случае же отсутствия запрашиваемого адреса в оперативной памяти, недостающая страница с требуемым адресом должна быть вызвана из внешней памяти, помещена в оперативную память и запрос по требуемому адресу должен быть повторен.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.