Пятница, 26.06.2026
Шпаргалка :)
Меню сайта
Категории раздела
Мои статьи [172]
Наш опрос
Оцените мой сайт
Всего ответов: 259
Форма входа
Главная » Статьи » Мои статьи

8 Страничная организация памяти

7. Страничная организация памяти

Адреса могут форми­роваться с использованием индексации, базовых регистров, сегментных регистров и другими путями.

Эти программно формируемые адреса, называемые виртуальными адресами, формируют виртуальное адресное пространство. На компьютерах без виртуальной памяти виртуальные адреса подаются непосредственно на шину памяти и вызыва­ют для чтения или записи слово в физической памяти с тем же самым адресом. Когда используется виртуальная память, виртуальные адреса не передаются на­прямую шиной памяти. Вместо этого они передаются диспетчеру памяти (MMUMemory Management Unit), который отображает виртуальные адреса на физичес­кие адреса памяти.

Пространство виртуальных адресов разделено на единицы, называемые стра­ницами. Соответствующие единицы в физической памяти называются странич­ными блоками (page frame). Страницы и их блоки имеют всегда одинаковый раз­мер. размеры страниц от 512 байт до 64 Кбайт. Имея 64 Кбайт виртуального адресного пространства и 32 Кбайт физической памяти, мы получаем 16 виртуальных стра­ниц и 8 страничных блоков. Передача данных между ОЗУ и диском всегда проис­ходит в страницах.

размер виртуаль­ного адресного пространства больше физической памяти.

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

Диспетчер памяти замечает, что страница не отображается, и инициирует прерывание центрального процессора. Такое прерывание называется ошибкой из-за отсутствия страницы или страничным прерыванием (page fault). Операционная система выбирает малоиспользуемый страничный блок и записы­вает его содержимое на диск. Затем она считывает с диска страницу, на которую произошла ссылка, в только что освободившийся блок, изменяет карту отображе­ния и запускает заново прерванную команду.

Номер страницы используется в качестве индекса в таблице страниц, выдаю­щей номер страничного блока, соответствующего виртуальной странице. Если бит Присутствия/отсутствия равен 0, управление переходит к операционной систе­ме. Если этот бит равен 1, то номер страничного блока, найденный в таблице стра­ниц, записывается в три старших бита выходного регистра, а 12 битов смещения копируются без изменения из входящего виртуального адреса. Все вместе они со­ставляют 15-разрядный физический адрес. Затем выходной регистр помещается на шину памяти как адрес физической памяти.

Таблицы страниц

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

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

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

      Несмотря на столь простое описание, нам придется столкнуться с двумя важ­ными проблемами:

1.               Таблица страниц может быть слишком большой.

2.               Отображение должно быть быстрым.

Первый пункт следует из того факта, что современные компьютеры исполь­зуют по крайней мере 32-разрядные виртуальные адреса. При размере страницы, скажем, 4 Кбайт, 32-разрядное адресное пространство будет состоять из одного миллиона страниц, а 64-разрядное адресное пространство будет включать в себя намного больше страниц, чем то количество, с которым вы захотите иметь дело. При одном миллионе страниц в виртуальном адресном пространстве таблица страниц должна состоять из одного миллиона записей. И помните, что каждый процесс нуждается в своей собственной таблице страниц (потому что у него есть свое собственное виртуальное адресное пространство).

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

Многоуровневые таблицы страниц

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

Запись, место которой определяется но индексу в таблице страниц верхнего уровня, выдает адрес или номер страничного блока таблицы страниц второго уров­ня.

Если данная страница не находится в памяти, бит Присутствия/от­сутствия в записи таблицы страниц будет равен нулю, что приведет к страничному прерыванию. Если страница в памяти, то номер страничного блока, взятый из таб­лицы страниц второго уровня, присоединяется к смещению (4), создавая физичес­кий адрес. Этот адрес выставляется на шину и передается памяти.

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

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

Структура элемента таблицы страниц

Ее длина изменяется от компьютера к компьютеру, но 32 бита — это наиболее распространенный раз­мер. Наиболее важным полем является Номер страничного блока. Прежде всего, задачей отображения страниц является определение этой величины. За этим по­лем следует бит Присутствия/отсутствия. Если этот бит равен 1, запись имеет силу и может использоваться. Если он равен 0, виртуальная страница, которой соответствует эта запись, в данный момент отсутствует в памяти. Обращение к за­писи в таблице страниц, у которой этому биту присвоено нулевое значение, при­водит к страничному прерыванию.

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

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

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

Наконец, последний бит позволяет запретить кэширование страницы. Это свой­ство важно для страниц, отображающихся не на память, а на регистры устройств. Если операционная система находится в цикле ожидания ответа от некоторого устройства ввода-вывода, которому была только что дана команда, существенно, чтобы аппаратура продолжала получать слово из устройства, а не использовало старую копию, находящуюся в кэш-памяти. При помощи этого бита кэширование можно отключить. Машины, имеющие отдельное пространство адресов ввода-вы­вода и не использующие отображения регистров ввода-вывода на память, не нуж­даются в этом бите. Адрес места на диске, в котором хранится страница тогда, когда она не находится в памяти, не является частью таблицы страниц. 

Категория: Мои статьи | Добавил: Eskander (14.06.2012)
Просмотров: 1004 | Рейтинг: 4.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2026
    Бесплатный конструктор сайтовuCoz