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

Виртуальная память. Память можно описать в терминах: физической структуры, логической структуры, а также способа, которым ОС транслирует (или не транслирует) одну структуру в

Читайте также:
  1. Автомат с магазинной памятью
  2. Автоматы с магазинной памятью
  3. Ассоциативная память
  4. АССОЦИАТИВНАЯ ПАМЯТЬ
  5. Б) Материал сновидения. Память в сновидении.
  6. В13. Какой из памятников, представленных ниже, был сооружен в память о еще одном ярком эпизоде этой военной компании? В ответе запишите цифру, под которой оно указано.
  7. Виртуальная память
  8. Виртуальная память Pentium 4
  9. Виртуальная память в Windows
  10. Виртуальная реальность
  11. Виртуальная реальность, ее концептуальные параметры. Виртуальность в истории философии и культуры. Проблема симулякров

Память можно описать в терминах: физической структуры, логической структуры, а также способа, которым ОС транслирует (или не транслирует) одну структуру в другую.

Физическая память организована как последовательность однобайтовых ячеек. Байты пронумерованы от нуля и до общего размера памяти, доступного в данной конфигурации, минус 1, как показано на рис. 6-1. Этот набор чисел (показанных здесь в шестнадцатиричной системе счисления) составляет физическое адресное пространство машины2

Рис. 6-1. физическое адресное пространство.

Логическая память, чаще называемая виртуальной (virtual memory) — это способ представления памяти для программы, и в современных ОС она редко совпадает с физической структурой памяти. Обычно системы виртуальной памяти используют либо сегментное, либо линейное представление памяти. Во всех первых персональных компьютерах на основе процессоров Intel, начиная с Intel 8086 и заканчивая Intel 80286, была использована сегментная модель. В системе сегментной адресации физическая память разделена на блоки адресов, обычно последовательных, называемые сегментами. В типичном случае адрес состоит из номера сегмента и смещения в сегменте.

С другой стороны, большинство процессоров RISC и даже последние CISC-процессоры Intel поддерживают линейную структуру адресов. Линейная адресация соответствует физической структуре памяти точнее, чем сегментная. В линейной схеме адреса начинаются с 0 и возрастают, байт за байтом, до верхней границы адресного пространства.

Виртуальное адресное пространство (virtual address space) — это набор адресов памяти, которые могут использовать потоки процесса. Каждый процесс имеет отдельное адресное пространство, которое обычно гораздо больше размера физической памяти. Хотя диапазон физических адресов для конкретного компьютера ограничен объемом имеющейся у него памяти (каждый байт которой обладает уникальным адресом), диапазон виртуальных адресов ограничен только количеством битов в адресе. Каждый бит может быть либо установлен, либо сброшен; таким образом, например, процессор MIPS R4000, имеющий 32-разрядные адреса3, является счастливым обладателем виртуального адресного пространства в 232, или 4 миллиарда байт (4 Гбайт), как показано на рис. 6-2.

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

Рис. 6-2. Линейное виртуальное адресное пространство.

3 На самом деле MIPS R4000 предоставляет 64-разрядные адреса, но позволяет ОС использовать либо 32-, либо 64-разрядные адреса. Первая версия Windows NT использует 32-разрядные адреса для совместимости с Intel 386.

Это несоответствие между физическим и виртуальным адресными пространствами приводит к тому, что система виртуальной памяти обязательно должна выполнять следующие две задачи:

• Транслировать, или отображать (map), некоторое подмножество виртуальных адресов каждого процесса в участки физической памяти. Когда поток производит чтение или запись в своем виртуальном адресном пространстве, система виртуальной памяти (часть которой может быть реализована аппаратно) перед пересылкой данных определяет по виртуальному адресу соответствующий физический адрес.

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

Выполнение первой задачи — отображение виртуальных адресов в физические — позволяет легко перемещать программу в памяти в ходе ее исполнения. Система виртуальной памяти перемещает фрагменты программы на диск и затем обратно в память, причем, возможно, по другим адресам. Затем она модифицирует отображение логических адресов в физические, так чтобы оно указывало на новое местоположение.

Вторая задача, выгрузка содержимого памяти на диск, является следствием первой. Ясно, что процесс не может адресовать 4 Гбайт памяти, если в компьютере физически установлено только 4 Мбайт. Такой эффект достигается системой виртуальной памяти за счет использования диска в качестве резервной "памяти", называемой резервным хранилищем (backing store). При переполнении физической памяти система виртуальной памяти определяет, какие данные можно из нее удалить, и временно перемещает их в файл на диске. Когда эти данные вновь потребуются выполняющемуся потоку, система виртуальной памяти считывает их обратно с диска.

Перемещение данных между памятью и диском было бы недопустимо медленным, если бы диспетчер виртуальной памяти перемещал лишь по одному байту за раз. Поэтому виртуальное адресное пространство разделено на блоки равного размера, которые называются страницами (pages). Соответственно, физическое адресное пространство разделяется на блоки, называемые страничными фреймами (page frames), которые используются для хранения страниц. В любой момент времени в памяти находится некоторое множество страниц из виртуального адресного пространства каждого процесса. Страницы, находящиеся в физической памяти и доступные немедленно, называются действительными страницами (valid pages). Страницы, находящиеся на диске (или находящиеся в памяти, но не доступные немедленно), называются недействительными (invalid pages), как ясно из рис. 6-3.

При обращении потока по виртуальному адресу, который находится на странице, помеченной как недействительная, процессор генерирует системную ловушку, называемую страничной ошибкой (page fault). Система виртуальной памяти находит нужную страницу на диске и загружает ее в свободный страничный фрейм физической памяти. Когда число доступных страничных фреймов становится мало, система виртуальной памяти выбирает фреймы, подлежащие освобождению, и копирует их содержимое на диск. Этот процесс, называемый подкачкой страниц (paging), невидим прикладному программисту.

Рис. 6-3. Отображение виртуальных страниц в физические страничные фреймы.

Обработка страничной ошибки может быть дорогой операцией, требующей много тактов процессора. Однако большие размеры страницы снижают затраты, так как в память загружается большее количество данных и страничные ошибки происходят реже. (Конечно, слишком большой размер страницы может привести к загрузке большего объема данных, чем необходимо, так что здесь требуется определенный баланс.) В общем случае число байт на странице выражается степенью двойки и зачастую определяется аппаратурой. Windows NT использует размер страницы, установленный в Intel 386 и равный 212, или 4 Кбайт. (MIPS R4000 позволяет задавать размер страницы программно.)4

Хотя основные задачи системы виртуальной памяти — это отображение виртуальных адресов в физические и пересылка данных между памятью и фоновым хранилищем, у нее есть и некоторые другие обязанности:

• Обеспечивать легкий и эффективный способ совместного использования памяти двумя процессами.

• Защищать как совместно используемую, так и "частную" память от несанкционированного доступа.

• Если система предназначена для работы на многопроцессорном компьютере, как Windows NT, то она должна обрабатывать страничные ошибки от нескольких потоков одновременно.

4 Если не указано иное, то в этой главе информацию, относящуюся к Intel 386, можно считать верной для совместимых с ним процессоров (например, AMD386 фирмы Advanced Micro Devices) и для обратно совместимых процессоров Intel старших моделей (Intel 486).

Способ выполнения этих задач системой виртуальной памяти исполнительной системы NT — диспетчером виртуальной памяти — рассматривается в следующих разделах данной главы.


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)