|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Рассмотрим подробнее, что представляет собой страничная организация виртуальной памятиИдею о разделении понятий адресного пространства и адресов памяти выдвинула группа ученых из Манчестера. Рассмотрим в качестве примера типичный компьютер того времени с 16-разрядным полем адреса в командах и 4096 словами памяти. Программа, работающая на таком компьютере, могла обращаться к 65 536 словам памяти (поскольку адреса были 16-разрядными, а 216 = 65 536). Обратите внимание, что число адресуемых слов зависит только от числа битов адреса и никак не связано с числом реально доступных слов в памяти. Адресное пространство такого компьютера состоит из чисел 0, 1,2,..., 65 535, так как это - набор всех возможных адресов. Однако в действительности компьютер мог иметь гораздо меньше слов в памяти. До изобретения виртуальной памяти приходилось проводить жесткое различие между адресами, меньшими 4096, и адресами, равными или большими 4096. Эти две части рассматривались как полезное адресное пространство и бесполезное адресное пространство соответственно (адреса выше 4095 были бесполезными, поскольку они не соответствовали реальным адресам памяти). Никакого различия между адресным пространством и адресами памяти не проводилось, поскольку между ними подразумевалось взаимно-однозначное соответствие. Идея разделения понятий адресного пространства и адресов памяти состоит в следующем. В любой момент времени можно получить прямой доступ к 4096 словам памяти, но это не значит, что они непременно должны соответствовать адресам памяти от 0 до 4095. Например, мы могли бы сообщить компьютеру, что при обращении к адресу 4096 нужно использовать слово из памяти с адресом 0, при обращении к адресу 4097 - слово из памяти с адресом 1, при обращении к адресу 8191 - слово из памяти с адресом 4095 и т. д. Другими словами, мы отображаем адресное пространство на действительные адреса памяти (рис. 7.2). Согласно этой схеме отображения адресов адресного пространства на фактические ячейки памяти, в машине с объемом памяти 4 Кбайт (без виртуальной памяти) между адресами от 0 до 4095 и словами памяти числом 4096 существует прямое соответствие. Возникает интересный вопрос: а что произойдет, если программа совершит переход к одному из адресов в диапазоне от 8192 по 12 287? В машине без виртуальной памяти произойдет ошибка, на экран будет выведено сообщение о несуществующем адресе памяти, и выполнение программы прервется.
Рис. 7.2. Виртуальные адреса памяти с 4096 по 8191 отображаются на адреса основной памяти с 0 по 4095
В машине с виртуальной памятью произойдет следующее: Содержимое основной памяти будет сохранено на диске. Слова с 8192 по 12 287 будут сохранены на диске. Слова с 8192 до 12 287 будут загружены в основную память. Отображение адресов изменится: адреса с 8192 по 12 287 будут соответствовать ячейкам памяти с 0 по 4095. Выполнение программы продолжится, как будто ничего необычного не случилось. Такая технология автоматического наложения называется страничной организацией памяти, а фрагменты программы, которые считываются с диска, - страницами. Есть и другой, более сложный способ отображения адресов адресного пространства программы на реальные адреса памяти. Адреса, к которым программа может обращаться, мы будем называть виртуальным адресным пространством, а реальные адреса памяти, реализованные аппаратно, - физическим адресным пространством. В карте памяти, или таблице страниц, виртуальные адреса соотносятся с физическими. Предполагается, что на диске достаточно места для хранения полного виртуального адресного пространства (или, по крайней мере, той его части, которая используется в данный момент). Программы пишутся так, как будто в основной памяти хватает места для размещения всего виртуального адресного пространства, даже если это не соответствует действительности. Программы могут загружать слова из виртуального адресного пространства или записывать слова в виртуальное адресное пространство, несмотря на то, что на самом деле физической памяти для этого не хватает. Программист может писать программы, даже не осознавая, что существует виртуальная память. Просто создается такое впечатление, что объем памяти данного компьютера достаточно велик.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |