Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Архитектура компьютера - Таненбаун Э.

Таненбаун Э. Архитектура компьютера — Спб.: Питер, 2007. — 844 c.
ISBN 5-469-01274-3
Скачать (прямая ссылка): arhkomputera2007.DjVu
Предыдущая << 1 .. 234 235 236 237 238 239 < 240 > 241 242 243 244 245 246 .. 422 >> Следующая

480
Глава 6. Уровень операционной системы
или микроволновую печь, этого достаточно) или 2) оставшаяся часть памяти
занята другими программами.
Страница Виртуальный адрес
15 61440-65535
14 57344-61439
13 53248-57343
12 49152-53247
11 45056-49151
10 40960-45055
36864 - 40959 32768 - 36863 28672 - 32767 24576 - 28671 20480 - 24575
16384-20479 12288-16383
8192-12287
4096- 8191 0- 4095
Нижние 32 Кбайт адресов основной памяти
Страничный Физические кадр адреса
7 28672 - 32767
6 24576 - 28671
5 20480 - 24575
4 16384-20479
3 12288-16383
2 8192-12287
1 4096- 8191
0 0 - 4095
Рис. 6.3. Первые 64 Кбайт виртуального адресного пространства разделены
на 16 страниц по 4 Кбайт каждая (а); 32 Кбайт основной памяти разделены
на 8 страничных кадров
по 4 Кбайт каждый (б)
А теперь посмотрим, как 32-разрядный виртуальный адрес можно отобразить
на физический адрес основной памяти. В конце концов, память воспринимает
только реальные, а не виртуальные адреса, поэтому такое отображение
должно быть сделано. Каждый компьютер с виртуальной памятью содержит
устройство для отображения виртуальных адресов на физические. Это
устройство называется диспетчером памяти (Memory Management Unit, MMU).
Он может находиться на микросхеме процессора или на отдельной микросхеме
рядом с процессором. В нашем примере диспетчер памяти отображает 32-
разрядный виртуальный адрес на 15-разрядный физический адрес, поэтому ему
требуется 32-разрядный входной регистр и 15-разрядный выходной.
Чтобы понять, как работает диспетчер памяти, рассмотрим пример на рис.
6.4. Когда в диспетчер памяти поступает 32-разрядный виртуальный адрес,
он разделяет этот адрес на 20-разрядный номер виртуальной страницы и 12-
разрядное смещение внутри этой страницы (поскольку страницы в нашем
примере имеют размер 4 Кбайт). Номер виртуальной страницы используется в
качестве индекса в таблице страниц для нахождения нужной страницы. На
рис. 6.4 номер виртуальной страницы равен 3, поэтому в таблице выбирается
элемент 3.
Сначала диспетчер памяти проверяет, находится ли нужная страница в
текущий момент в памяти. Поскольку у нас есть 220 виртуальных страниц и
всего 8 страничных кадров, не все виртуальные страницы могут находиться в
памяти
Виртуальная память 481
одновременно. Диспетчер памяти проверяет бит присутствия в данном
элементе таблицы страниц. В нашем примере этот бит равен 1. Это значит,
что страница в данный момент находится в памяти.
- 15-разрядный адрес памяти-
Виртуальная
страница
Бит присутствия
1 1 0 0 0 0 0 0 0 0 1 0 1
1 0


Таблица
страниц
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0



0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0 ° 0 0 0
0 0 1 0 1 1 0
-20-разрядная виртуальная страница-^-^12-разрядное смещение*-------------
--32-разрядный виртуальный адрес---------------
Выходной
регистр
Входной
регистр
Рис. 6.4. Формирование адреса основной памяти из адреса виртуальной
памяти
Далее из выбранного элемента таблицы нужно взять значение страничного
кадра (в нашем примере - 6) и скопировать его в старшие 3 бита 15-
разрядного выходного регистра. Нужно именно 3 бита, потому что в
физической памяти находится 8 страничных кадров. Параллельно с этой
операцией младшие 12 бит виртуального адреса (поле смещения страницы)
копируются в младшие 12 бит
482
Глава 6. Уровень операционной системы
выходного регистра. Затем полученный 15-разрядный адрес отправляется в
кэшпамять или основную память для поиска.
На рис. 6.5 показан возможный вариант отображения виртуальных страниц на
физические страничные кадры. Виртуальная страница 0 находится в
страничном кадре 1. Виртуальная страница 1 находится в страничном кадре
0. Виртуальной страницы 2 нет в основной памяти. Виртуальная страница 3
находится в страничном кадре 2. Виртуальной страницы 4 нет в основной
памяти. Виртуальная страница 5 находится в страничном кадре 6 и т. д.
Таблица страниц
Виртуальная Страничный страница кадр
1 - присутствует в основной памяти 0 - отсутствует в основной памяти
Рис. 6.5. Возможное отображение первых 16 виртуальных страниц в основную
память, содержащую 8 страничных кадров
Вызов страниц по требованию и рабочее множество
В предыдущем обсуждении предполагалось, что виртуальная страница, к
которой происходит обращение, находится в основной памяти. Однако это
предположение не всегда верно, поскольку в основной памяти недостаточно
места для
Виртуальная память 483
всех виртуальных страниц. При обращении к адресу страницы, которой нет в
основной памяти, происходит ошибка отсутствия страницы. В случае такой
ошибки операционная система должна считать нужную страницу с диска,
ввести новый адрес физической памяти в таблицу страниц, а затем повторить
команду, вызвавшую ошибку.
На машине с виртуальной памятью можно запустить программу даже в том
случае, если в основной памяти нет ни одной части программы. Просто
таблица страниц должна показать, что абсолютно все виртуальные страницы
Предыдущая << 1 .. 234 235 236 237 238 239 < 240 > 241 242 243 244 245 246 .. 422 >> Следующая