Анализ и оценка виртуальной памяти ЭВМ при ее сегментно-страничной организации
1. Для чего нужна память? Какие бывают виды памяти?
(Глава, необходимая для понятия предназначения памяти вообще)
Компактная микроэлектронная «память» широко применяется в современной аппаратуре самого различного назначения. Но тем не
менее разговор о классификации памяти, её видах следует начать
с определения места и роли, отведённой памяти в ЭВМ. Память является одной из самых главных функциональных частей маши-
ны, предназначенной для для записи, хранения и выдачи команд
и обрабатываемых данных. Следует сказать, что команды и дан-
ные поступают в ЭВМ через устройство ввода, на выходе которого
они получают форму кодовых комбинаций 1 и 0. Основная память
как правило состоит из запоминающих устройств двух видов - оперативного (ОЗУ) и постоянного (ПЗУ).
ОЗУ предназначенно для хранения переменной информации; оно допускает изменение своего содержимого в ходе выполнения вы-числительного процесса. Таким образом, процессор берёт из ОЗУ
код команды и, после обработки каких-либо данных, результат об-
ратно помещается в ОЗУ. Причем возможно размещение в ОЗУ
новых данных на месте прежних, которые при этом перестают су-ществовать. В ячейках происходит стирание старой информации и запись туда новой. Из этого видно, что ОЗУ является очень гибкой
структурой и обладает возможностью перезаписывать информа-
цию в свои ячейки неограниченное количество раз по ходу выпол-
нения программы. Поэтому ОЗУ играет значительную роль в ходе
формирования виртуальных адресов.
ПЗУ содержит такой вид информации, которая не должна изме-
няться в ходе выполнения процессором программы. Такую инфор-
мацию составляют стандартные подпрограммы, табличные данные,
коды физических констант и постоянных коэффициентов. Эта информация заносится в ПЗУ предварительно, и блокируется пу-
тем пережигания легкоплавких металлических перемычек в струк-
туре ПЗУ. В ходе работы процессора эта информация может толь-
ко считываться. Таким образом ПЗУ работает только в режимах
хранения и считывания.
Из приведённых выше характеристик видно, что функциональ-
ные возможности ОЗУ шире чем ПЗУ: оперативное запоминающее устройство может работать в качестве постоянного, то есть в ре-
жиме многократного считывания однократно записанной информа-
ции, а ПЗУ не может быть использованно в качестве ОЗУ. Это
заключение, в свою очередь, приводит к выводу, что ПЗУ не учас-
твует в процессе формирования виртуальной памяти. Но бесспорно,
ПЗУ имеет свои достоинства, например сохранять информацию
при сбоях, отключении питания (свойство энергонезависимости).
Для обеспечения надежной работы ЭВМ при отказах питания
нередко ПЗУ используется в качестве памяти программ. В таком случае программа заранее «зашивается» в ПЗУ.
Copyright © 1994 by Vsevolod Ukrainsky
2. Микросхемы памяти.
(Где, находится информация при работе компьютера?)
Как было сказанно ранее, в современных компьютерах использу-
ется так называемая электронная память. Для построения ОЗУ,
ПЗУ, регистровых ЗУ в настоящее время широко применяют полу-проводниковые интегральные микросхемы, которые изготавливают
по специальной полупроводниковой технологии с применением ин-
тегральных схем (ИС) и больших интегральных схем (БИС) на
основе кремния с высокой степенью интеграции.
Рис.1 Рис.2
На рисунках 1 и 2 изображены микросхемы памяти как функци-
ональных узлов: рис. 1 - ОЗУ, рис. 2 - ПЗУ. Основной составной частью микросхемы ОЗУ является массив элементов памяти, объе-
динённых в матрицу накопителя. Элемент памяти (ЭП) может хра-
нить один бит информации. Каждый ЭП обязательно имеет свой адрес. Для обращения к ЭП необходимо его «выбрать» с помощью
кода адреса, сигналы которого подводят к соответствующим выво-
дам микросхемы. ПЗУ построенно аналогично, а функции ЭП в микросхемах ПЗУ выполняют перемычки в виде проводников.
Это был краткий экскурс в так называемые «ресурсы» машин-
ной памяти, необходимый для более глубокого понимания как фу-
нкционирования компьютера, так и основной темы проекта.
3. Виртуальная память: Что это такое? Для чего это нужно?
(Рассматривает вопрос организации ВП)
Итак, мы вплотную подошли к проблеме виртуальной памяти:
что это такое и для чего это нужно? Дело в том, что с развитием и появлением новых компьютерных технологий, машины несомненно преобразились в лучшую сторону: в мире профессиональных прог-раммистов уже не существует понятия «ОЗУ на ферритовых сер-
дечниках» или «накопителей на магнитных лентах». Что и говорить,
с изобретением персонального компьютера, даже простой непрофес-
сиональный пользователь получил возможность использовать ПК
для собственных целей и нужд. Фирмой Intel™ и другими произво-
дителями вычислительной техники были выпущены компьютеры достаточно простые в обращении (по сравнению с огромными лам-повыми IBM-1401 или «Унивак П»). Компьютеры нового поколения*
————
* Фирмой Texas Instruments® выпущена модель 486DX4-75Mhz.
имели процессоры Intel™ 80386, 80486, с 16-ти и 32-х разрядными шинами, огромным быстродействием (25-66Mhz). Эти персоналки - большой шаг вперед в развитии компьютерных технологий. Вместе с
этим у пользователя появилась тенденция «оседлать» быструю ма-
шину - заставить её делать как можно больше. Как экономить ма-
шинное время и в то же время производить больше? Ответ на этот вопрос был найден посредством организации мультипрограммной работы ЭВМ. Этот метод был признан очень удобным, так как при организации мультипрограммного цикла:
1. Машина не простаивала зря: при одновременном выполнении
нескольких программ и команд в работе процессора появлялась но-
вая функция - анализ и распределение машинного времени, отведён-
ного на выполнение каждой программы;
2. За каждый машинный такт (вследствие с очередностью или
уровнем приоритета, общим временем, требующимся на выполнения команды) выполнялась одна или несколько комманд.
Действительно, метод мультипрограммной работы оказался потря-
сающе эффективным, но для его успешной реализации требовалось очень много оперативной памяти, так как всякая программа, которая может быть вызванна впоследствии, оставляет небольшую (а иногда
и очень большую!) свою часть резидентной в оперативной памяти. Возможны два варианта: сохранить большую часть ОЗУ свободной,
по надобности загружая в ОП ту или иную программу, требующую непосредственного выполнения и, после этого, отработав с данной
программой, отчистить содержимое ОП для загрузки новой програм-
мы. Второй вариант состоит в том, чтобы сразу загрузить в ОП ма-шины все требующиеся программы, таким образом заполнив её до основания и потом дать процессору команду на выполнение. Первый вариант не является примером мультипрограммной организации. Вто-
рой вариант является. Итак, несомненно, второй вариант наиболее подходящий, но здесь мы сталкиваемся с проблемой нехватки опера-тивной памяти. В современных компьютерах емкость ОЗУ (аналог - RAM) не превышает 1MB, 384KB из которых зарезервированны под ПЗУ, ППЗУ, BIOS... Итого остаётся 640KB «чистой» оперативной па-мяти - но в ней поместятся две-три программы и не более.
Хорошо видно, что внедрение более рационального решения стал-кивается с единственной проблемой - проблемой памяти. Но можно
ли каким-то образом решить эту проблему? Именно на этом этапе
на помощь пользователю приходит виртуальная память, которая позволяет модифицировать ресурсы памяти, сделать объём опера-тивной памяти намного больше, для того чтобы пользователь, помес-
тив туда как можно больше программ, реально сэкономил время и повысил эффективность своего труда. «Открытие» виртуальной па-
мяти (далее ВП) внесло огромную контрибуцию в развитие современ-ных технологий, облегчило работу как профессионального програм-миста, так и обычного пользователя, обеспечивая процесс более эф-фективного решения задач на ЭВМ.
Возникает много вопросов: как устроена ВП, как она функциони-
рует, каким образом при использовании ВП ресурсы обычной физи-
ческой памяти «увеличиваются» во много раз, используются ли для
этой цели какие-либо «подручные» средства (устройства)..? Действи-тельно, возникает множество интереснейших вопросов, ответы на которые будут даны в следующих параграфах.
Почему виртуальная память также носит название математи-ческой, кажущейся? Как можно реорганизовать ОЗУ таким образом, чтобы её объём удвоился, утроился? Преимущество ВП состоит в
том, что объем ОЗУ не может быть увеличенно ни практически, ни теоретически. (Это попросту невозможно - ни какими средствами
нельзя оптимизировать или преобразовать ячейки памяти, для того, чтобы, скажем, помещать туда два бита информации вместо одного).
Но как же построена ВП? Дело в том, что при работе машины, испо-льзующей виртуальную память, обязательно используется Внешнее Запоминающее Устройство (ВЗУ), которое обычно представляет собой накопитель на гибком магнитном диске или жестском диске типа «винчестер». (Последнее устройство используется чаще).
Действительно, использование виртуальной памяти обязательно
подразумевает обращение к диску так как при разработке и внедре-
нию систем с таким методом организации памяти, было представле-
но, что ячейки оперативной памяти и памяти на диске будут пред-
ставлять собой единое целое. По своей сути ВП не такая уж слож-
ная структура - напротив, недостаток оперативной памяти компен-
сируется наличием свободного дискового пространства которое за-
действованно в роли ОП. Необходимо понимать, что часть программ,
которые мы не смогли разместить в ОП из-за её нехватки, (см. нач.
§ 3) теперь будут размещены на диске и это будет эквивалентно
размещению в оперативной памяти. Виртуальная память представ-
ляет собой совокупность всех ячеек памяти - оперативной и вне-шней, имеющих сквозную нумерацию от нуля до предельного значения адреса. Использование ВЗУ очень удобно, так как в это
время пользователь оперирует с общим адресным пространством
и ему безразлично какая физическая память при этом использу-
ется - внешняя или внутренняя. При работе ВП всего лишь подра-
зумевается различие между виртуальными адресами и физичес-
кими. Интересно проследить за формированием адресного простран-
ства при использовании ВП. Как же адресное поле может быть уве-
личено? Дело в том, что при работе машины с ВП, используются
методы страничной и сегментной организации памяти, смысл кото-
рых рассмотрен в следующих параграфах.
4. Виртуальная Память при страничной организации
(Страничная организация ВП, формирование виртуальных адресов)
Как было сказанно ранее, для более эффективного функциониро-
вания ЭВМ используется динамический метод распределения па-
мяти. Это значит, что процесс распределения памяти осуществля-
ется непосредственно в ходе решения задачи с учетом предыдуще-
го состояния машины и описания массивов данных. Например про-
цесс компиляции с языков высокого уровня отводит определённую
область памяти под каждую переменную, массив, структуру.
В настоящее время процесс динамического распределения памя-
ти осуществляется методом относительной адресации (с исполь-
зованием виртуальных адресов), в виде страничной и сегментной
организации памяти.
Рассмотрим первую форму организации ВП при её страничной
организации (СО). Нужно отметить очень важный пункт, что при
СО, все ресурсы памяти, как оперативной, так и внешней предста-
вляются для пользователя единым целым. Пользователь работает
с общим адресным пространством и не задумывается какая па-
мять при этом используется: оперативная или внешняя, а эта об-
щая память носит название виртуальной (моделируемой).
Виртуальная память разбивается на страницы, которые содер-
жат определённое фиксированное количество ячеек памяти. При
этом одна страница математической памяти не может быть боль-
ше или меньше других - все страницы должны быть одинаковы по
количеству ячеек. Типичные размеры страниц - 256, 512, 1024, 2048
Байт и более (числа кратные 256).
Рис.3
Так называемая физическая память, которая включает в себя ОЗУ
и ВЗУ так же разбивается на страницы объем которых должен
соответствовать размерам ВП, иначе, из-за неправильности разме-
ров, ячейки физической памяти не будут совпадать с ячейками ВП,
что приведёт к путанице и «зависанию» системы.
На рисунке 3 изображен способ формирования страниц ВП из
физической памяти. Ячейки ОЗУ разбиваются на страницы оди-
накового объема (например 1024 Байт), каждая из которых может
содержать какую-либо информацию. В ВЗУ, представленным нако-
пителем типа «винчестер», процессор резервирует определённые
сектора с которыми впоследствие будет работать ВП. Всё это скла-
дывается вместе и представляет собой единую структуру - ВП.
При работе пользователя, одна из его программ может находится
в ОП (реально - в микросхеме на рис. 3), а другая в ВЗУ (на диске).
При этом совершенно не заметно, что пользователь работает с
математическими адресами, поэтому в процессе операций поцес-
сор может обращаться только к ОП (или СОП - Сверхоперативная
память) - в случае выполнения первой программы, или к диску,
если выполняется вторая программа. Но при работе второй програм-
мы, операционная система должна организовать перепись той стра-
ницы, где находится вторая программа, в Оперативную Память.
Пользователь не задумывается над этим, но в этот момент страни-
ца ВП с диска, как бы накладывается на свободную* страницу ОП.
Таким образом, при выполнении даже одной программы, различные
части этой программы могут находится в ОП (СОП) или на магнит-
ных носителях, а одни и те же ячейки общей физической памяти могут называться различными адресами.
Адресная часть команды в пользовательских программах должна
содержать адрес математической страницы и адрес слова, которое
должно находится в этой странице (искомое слово). При распределе-
нии памяти между различными частями программы, процессор берёт
на себя функции преобразования адреса, находящегося в математи-
ческой странице, в адрес физической страницы. По этому адресу рас-
пологается требуемое слово, которое может хранится как в ОП, так
и во внешней памяти. Совокупность адреса физической страницы и
адреса слова внутри этой страницы образует физический адрес опе-
ранда.
Соответствие между номерами физических и математических
страниц устанавливается специальной программой операционной сис-
темы, которая носит название менеджер (диспетчер) памяти. Как
правило эта программа является резидентной и управляет всеми ре-
сурсами машинной памяти. Для 286-х процессоров используют менед-
жер himem.sys, а для 386-х и 486-х машин emm386.sys и qemm.sys
С помощью таких программ формируется так называемая страничная
таблица, которая помещается в сверхоперативную память, обладаю-
щую наибольшим быстродействием. Эта таблица является неотъем-
лемой частью организации ВП с СО, так как в ней содержится вся
информация о страницах, на данный момент находящихся в памяти.
В страничной таблице находятся адреса программ, уровень их прио-
ритета и т. д. Содержание страничной таблицы будет подробно опи-
санно ниже.
Рассмотрим пример преобразования виртуальных адресов в фи-
зические. Пусть виртуальная память содержит 8 страниц по 2048 Байт в каждой странице. Для компактности примера, предположим,
что физическая память имеет ёмкость 4 страницы (по 2 Кб соответ-ственно). При обращении к физической памяти для проведения каких-
14-ти битовый виртуальный адрес
3-х битовый 11-ти битовый адрес в пределах выбранной ВС
номер ВС
Рис.4
—————
* Эта страница необязательно может быть свободной. Подробности о
стратегиях замены (своппирования) страниц см. в § 8
Copyright © 1994 by Vsevolod Ukrainsky
либо операций (записи или выборки операндов, выполнения команды или осуществления передачи управления), программой формируется
14-ти битовый адрес, соответсвующий виртуальному адресу, который определяет ячейки в промежутке от 0 до 16 Кб - 1.
В данном примере 14-ти битовый адрес как бы разбивается на 3-х
битовый номер виртуальной страницы и 11-ти битовый внутри той
страницы, номер которой определён тем самым 3-х битовым номером.
Пример кода адреса при страничной организации памяти показан
на рисунке 4. А связь между номерами страниц и самими виртуаль-
ными адресами показанна на рисунке 5. Итак, рассмотрим рисунок 4:
3-х битовый номер виртуальной страницы 110 (в bin-формате) соот-ветствует номерам 6 и 6h (dec- и hex-форматы) - необходимо пом-
нить, что все операции в машине производятся в шеснадцатеричном
формате. Таким образом, выбирается страница с номером 6 и внут-
ренним адресом 00101001110B (14Eh). Значит по рисунку 5, этот физи-ческий адрес будет соответствовать виртуальному адресу 12288...
Страница Виртуальные адреса
Рис.5
Это значит, что шестая страница виртуальной памяти начинается с
адреса 12288 и заканчивается по адресу 14335. Общий объем вир-
туальной страницы составляет 2048 Байт (2 Кб).
Для определения физического адреса пользовательской программы,
резидентный диспетчер памяти под управлением операционной сис-
темы должен установить местонахождение виртуальной страницы.
Физическая страница памяти, которая соответствует виртуальной,
может находится в оперативной памяти, но может также быть и на
диске. Как было сказанно ранее, для того чтобы установить соответс-
твие между виртуальной и физической страницами, ОС обращается к
страничной таблице, каждая из строк которой содержит по одной за-
писи для каждой из восьми виртуальных страниц. Как же организо-
ванна эта страничная таблица? Запись в строке содержит три поля
Первое однобитовое поле по сути является флагом - в этой ячейке
может находится либо включенный, либо выключенный бит (1 или 0),
что указывает на конкретное местонахождение страницы: если в
этом поле содержится код нуля это подсказывает процессору, что
необходимую страницу нужно искать во внешней памяти, если зна-
чение бита в данном поле равно 1, то искомая страница уже находит-
ся в оперативной памяти. Таким образом, все функции единственного
бита в этом поле - принимать значения True или False. Второе поле
содержит адрес внешней памяти. Этот адрес станет необходим если
искомой страницы нет в оперативной памяти, а она находится в ВЗУ
и её надо переписать в ОЗУ для работы с программой, находящейся
в этой странице. По этому адресу машина обращается к виртуальной
странице, хранящейся на диске и копирует её содержимое в ОЗУ.
Важное замечание заключается в том, что если в первом одноби-
товом поле флаг находится в состоянии 1, то второе поле автомати-
чески игнорируется, потому что искомая страница уже «сидит» в
ОП и нет никакой необходимости «MOV CX, ADDRESS» (засылать
в регистр CX адрес внешней ВС для его обработки). После того как
машина отработает с данной страницей ВП и надобность в ней исчез-
нет (возможно на какое-то время), эта страница обратно переносится
на диск, освобождая место для другой страницы которая нужна ма-
шине в данный момент для продолжения работы.
Наконец третье поле, функциональная нагрузка которого - указы-
вать номер страницы опреративной памяти, в которой находится
необходимая информация. Если нужной страницы нет в ОП, а она на-
ходится на диске (бит первого поля выключен), то третье поле игно-
рируется. На рисунке 6 изображена схема Страничной организации
виртуальной памяти.
Рис.6 Страничная организация Виртуальной Памяти.
Итак, при распределении памяти в машине, супервизор формирует
страничную таблицу. Входом в эту таблицу является номер матема-
тической страницы, в которой находится нужная ячейка памяти. Если адресная страница находится в ОП, то формирование адреса происходит следующим образом: двухбитовый номер страницы зано-сится в два левых разряда адресного регистра оперативной памяти, а
адрес внутри виртуальной страницы (11 бит исходного адреса) пере-
писывается в 11 правых разрядов адресного регистра. Это очень хо-рошо показанно на правой части рисунка. Pµ - регистр математи-
ческого адреса, Pф - регистр физического адреса, p - номер матема-тической страницы, l - смещение. Таким образом, l-смещение пере-писывается из регистра математического адреса в регистр физичес-
кого без изменений. По номеру p из страничной таблицы извлекается
номер физической страницы и, если эта страница уже находится в
ОП, то её номер записывается в регистр физического адреса, если
же искомая страница находится в ВЗУ, то она сначала переписыва-
ется в ОП. Для этого используется или свободная страница ОП, или
какая-либо страница ОП освобождается: информация из этой стра-
ницы снова переносится во внешнюю память (но ни в коем случае
не стирается!). После этого страничная таблица обновляется - в неё
заносятся сведения о новых страницах (той которая на данный мо-
мент находится в ОЗУ и той которая переместилась во внешнюю па-
мять). Страничная таблица является таким видом информации кото-
рая очень часто обновляется. Она постоянно «дышит». Каждый раз
когда у пользователя возникает потребность в новой информации (в
часности в новой странице памяти), присходит процесс свопирования,
то есть перемены местами страниц ОП и ВЗУ (англ. swap - менять
местами). При этом в страничную таблицу заносится наиболее све-
жая информация о том в какую страницу виртуальной памяти была
помещена страница, только что удалённая из ОП, содержится ли в
этой странице нужное на следующем этапе слово и т. д. У странич-
ной таблицы множество работы.
Как было отмеченно, для наиболее эффективного функциони-
рования машины необходимы большая ёмкость ОЗУ и быстродейст-
вие. Как извесно, обычная оперативная память (RAM) не является
максимально быстродействующей. Это значит, что если бы странич-
ная таблица находилась в такой памяти, то пользователь сталкивал-
ся бы с реальной потерей времени, так как процессор довольно час-
то обращается к СТ. Выход из этой неудобной ситуации был найден
при помещении страничной таблицы в сверхоперативную память,
которая обладает наибольшим быстродействием, хотя и во много
раз меньше по объему чем RAM. Но этого объёма вполне хватает
процессору и он получает возможность работать с большей произво-
дительностью, так как при каждом перераспределении памяти меж-
ду пользовательскими программами осуществляется изменение
данных, содержащихся в страничной таблице.
При страничной организации памяти очень важным является ал-
горитм своппирования страниц. Действительно, процессор должен
«подумать» какую страницу стоит в первую очередь удалить из ОП,
дабы на освободившееся место переписать из внешней памяти
необходимую в данный момент страницу... Этот вопрос будет под-
робно рассмотрен в § 8.
5. Преимущества и недостатни ВП со страничной организацией.
(Анализ и оценка эффективности СО при рассмотрении преимуществ и недостатков)
Несомненно, применение виртуальной памяти в современных маши-
нах это важнейшее достижение как в компьютерной технологии,
так и в максимизации удобств создаваемых для пользователя. Но,
как извесно, каждая система имеет свои преимущества и недостат-
ки. Предлагаю проанализировать суть применения ВП; её слабости
и критерии эффективности, её плюсы и минусы.
Во-первых одним из преимуществ ВП с СО является достаточно
большой объём прямоадресуемой памяти. Действительно объем
памяти может исчислятся сотнями мегабайт (и даже гигабайтами).
Размер виртуальной памяти целиком зависит от объёма накопи-
теля на [жестком] магнитном диске. Созданный SWAP-файл раз-
мещается на диске и эмулирует оперативную память. При этом
пользователь не задумывается о том куда будет помещен «кусок»
его программы с которой он только что отработал. Таким образом,
ещё одним преимуществом ВП с СО является то, что программы
пользователя могут размещаться в любых свободных страницах.
И наконец, одним из важнейших преимуществ ВП с СО (то, ради
чего, собственно и была изобретена виртуальная память) - повыше-
ние уровня мультипрограммной работы. Как было сказанно выше,
эта цель была одной из самых главных. С организацией ВП с СО
пользователь получил реальную возможность загружать в память
большее количество программ для того чтобы машина обрабатывала
программы сразу (в действительности прцессор устанавливает прио-
ритет для каждой программы, находящейся в памяти, и далее в
соответствии с приоритетом выделяет определённое количество
времени на реализацию каждой программы или команды). Сам
процессор постоянно «занят» - каждый машинный такт выполняет
определённую программу. Метод организации виртуальной памяти
со страничной организацией значительно повысил эффективность
работы с машиной.
У каждого гениального изобретения к сожалению есть свои недос-
татки. Таковые есть и у ВП с СО. Попытаемся проанализировать их.
Основным недостатком виртуальной памяти пожалуй является то
количество времени, которое машина тратит на обращение к внеш-
ней памяти. Извлечь необходимую информацию из ячеек оператив-
ной памяти не представляет особого труда и больших затрат вре-
мени. Совсем иначе обстоит дело с диском: для того чтобы найти
необходимую информацию, нужно сначала «раскрутить» диск, по-
том найти необходимую дорожку, в дорожке найти сектор, кластер,
далее считать побитовую информацию в ОП. Все это требует време-
ни и, порой если при методе случайного удаления страниц*, про-
цессору понадобятся сразу несколько страниц, хранящихся во
внешней памяти, большого времени. К сожалению, этот недостаток
принадлежит к виду «неисправимых». И если другие недостатки, рассмотренные ниже ущё можно каким-то образом устранить (нап-
ример путем расширения технических средств и т. д.), то данный
недостаток не может быть устранён никоим образом, так как по-
нятие виртуальной памяти ассоциируется с применением внеш-
ней памяти (магнитного диска).
Следующий недостаток скорее относится к вопросу о техничес-
кой характеристике компьютера: наличие сверхоперативной памя-
ти (СОП). Как было сказанно выше, СОП, как правило, имеет не-
—————
* Методы своппирования страниц рассмотрены в § 8.
большую ёмкость и достаточно высокое быстродействие. СОП
используется для хранения управляющей информации, служебных
кодов, а также информации к которой осуществляется наиболее
частое обращение в процессе выполнения программы. Этот недос-
таток в работе с ВП к счастью можно ликвидировать. Что касает-
ся технической характеристики - есть ли в микросхемах оператив-
ной памяти дополнительные интегральные схемы, которые являют-
ся запоминающими устройствами СОП? Если есть, то проблема с
СОП решена, а если нет..? Тогда, благодаря достижениям в области
компьютерной технологии, могут использоваться драйверы, резер-
вирующие маленькую область ОП для иммитирования СОП. Итак,
что касается этого недостатка, то, мне кажется, что он не настоль-
ко серьёзен, чтобы о нём беспокоится.
И, наконец третьим недостатком является внутренняя фрагмен-
тация страниц.
6. Сегментно-страничная организация виртуальной памяти
(Структура, функционирование, отличия от ВП с СО, преимущества и недостатки)
При использовании метода сегментно-страничной организации ВП,
пользовательские программы разбиваются на отдельные массивы.
Эти массивы - независимые участки - называются сегментами. Сегмент представляет собой единый логический объект, содержа-
щий какую-либо процедуру, массив или набор данных. Как правило информация, содержащаяся в сегменте, однородная, то есть в
одном сегменте могут находится только служебные коды програм-
мы, другой может являться сегментом стека, третий содержать
коды связи с объектными (.obj) файлами и т. д.
Каждый сегмент представляет собой последовательность адресов
от нуля до определённого максимального значения. Отличие сег-
мента от страницы состоит в том, что длинна сегмента может изме-няться в процессе работы.
Сегменты, как и любая структура виртуальной памяти, могут размещаться как в ОП, так и во внешней памяти (магнитных носи-телях). ВП с ССО функционирует подобно ВП с СО: если требую-
щийся на данный момент сегмент отсутствует в оперативной памя-
ти, то при надобности работы с ним, он предварительно перемеща-
ется в ОП.
Сегментно-страничная организация памяти требует более слож-
ной аппаратурно-программной организации. Рассмотрим как же осуществляется обращение к ВП посредством ССО. По самому названию «сегментно-страничный» нетрудно догадаться, что при таком методе используется как сегментная, так и страничная таблицы. Это очень похоже на сложноструктурированный метод «процедуры в процедуре» во многих алгоритмических языках.
На рисунке 7 подробно показан способ организации ВП с ССО.
Адрес ячейки в данном случае складывается из 3-х частей: первая содержит номер самого сегмента (Segment), по этому номеру маши-
на обращается к сегментной таблице. Вторая часть адреса содер-
Copyright © 1994 by Vsevolod Ukrainsky
жит номер искомой страницы (page), которая находится внутри выбранного сегмента и третья - смещение (length), по которому находится требуемый адрес. Pµ, обведенное в двойную рамку пока-зывает математический адрес, а Pф - физический. Как и при СО, смещение l переписывается в ячейку физического адреса без изме-нений.
Вверху рисунка, аббревиатурой N обозначен номер какой-нибудь
программы пользователя. А0 с индексом 1 обозначает конкретный начальный адрес сегментной таблицы для данной программы. Сна-
чала берется этот адрес и номер сегмента S из регистра матема-тического адреса. Оба этих адреса складываются в сумматоре, ко-
торый изображен в виде обведенного плюса. Получившийся адрес
А1 + S является входом в сегментную таблицу (изображен в первой колонке сегментной таблицы). Далее, благодаря этому адресу, отыс-кивается соответствующий адрес страничной таблицы (А0 с индек-
сом 2), который в свою очередь суммируется с номером искомой страницы p в сумматоре. Результирующая сумма - есть вход в страничную таблицу. Структура страничной таблицы нам уже зна-кома: благодаря получившемуся адресу, находится соответствую-
щий адрес физической страницы, процессор определяет место-нахождение этой страницы (включенный бит - страница находится
в ОП, выключенный - во внешней памяти).
Рис. 7 Сегментно-страничная организация ВП.
Итак, краткое описание функционирования ВП с ССО: с помощью
начального адреса сегментной таблицы и номера сегмента из регист-
ра математического адреса (S) образуется адрес-вход в сегментную таблицу в которой находится начальный адрес страничной таблицы.
К этому адресу в свою очередь прибавляется номер страницы из
РМА. Эта сумма служит входом в страничную таблицу, в которой
затем отыскивается адрес искомой физической страницы и, в соот-ветствии с уровнем доступности, процессор либо начинает работать
с этой страницей, либо вырабатывает аппаратурное прерывание и подключает супервизора, который затем организует ее перепись в
ОП. Если вся ОП будет занята, то супервизор, в соответствии с при-нятым методом (см. § 8), своппирует какую-нибудь страницу.
7. Виртуальная память в современных компьютерах
(ВП в современных машинах, отличия, преимущества...)
Как было сказанно выше, с развитием компьютерных технологий
стали появляться новые перспективы использования персональных
компьютеров. В § 3 упомонается о компьютере Intel™ 486DX4 с такто-
вой частотой 75Mhz, произведенным фирмой Texas Instruments. Несомненно, возможности этого компьютера огромны. Он комплек-
туется огромным жестским диском (1.2GB) и имеет 32MB оператив-
ной памяти. Предположим, что эта машина будет использоваться
для разработки космического корабля, робота-хирурга или в области кибернетики. Для этих целей необходимо использовать «серьёзное» программное обеспечение (скажем, производимое фирмой Silicon Graphics®), требующее огромного количества оперативной памяти. В такой ситуации даже 32MB может нехватать. В таких ситуациях по-прежнему проявляется тенденция к использованию ВП.
Виртуальная память применяется во многих программах, операци-
онных оболочках, коммуникационном програмном обеспечении. В
следующих пунктах приведены примеры использования виртуальной памяти в современных компьютерах с различными программами.
Использование ВП в Microsoft® Windows™ 3.1*
Microsoft Windows 3.1 является наиболее популярной операционной оболочкой как среди любителей, так и среди пофессиональных поль-зователей. Windows обеспечивает независимый запуск и выполнение сразу нескольких программ. Большинство других оболочек и опе-рационных систем расчитаны на выполнение в данный момент только одной пограммы. В рамках Windows можно запустить сразу несколько программ. Для этих целей используется ВП.
1. RAM диск (виртуальный, псевдо, электронный диск) - Разновид-
ность виртуальной памяти. Супервизор резервирует для него область EMS или XMS памяти и, таким образом устанавливает диск в памя-
ти. Он работает быстрее, чем реальный физический диск, но при вы-ключении питания его содержимое теряется. Он весьма удобен для хранения промежуточной информации в течение одного сеанса рабо-
ты. Но RAM диск не является прямым аналогом ВП.
2. Использование SWAP-файла виртуальной памяти.
Виртуальная память в оболочке Windows 3.1 используется только в расширенном (extended) режиме. Каковы характеристики компьюте-
ра, работающего с Windows в расширенном режиме? Он должен иметь 386-ой процессор и минимум 2 мегабайта памяти. Итак вирту-альная память в Windows представляет собой механизм, обеспечива-
ющий расширение адресного пространства за счет дискового прост-
—————
* Рассмотрены компьютеры фирм IBM (PS/2, Pentium™, OverDrive™)
AcerPower™, NEC, American Megatrends, Zeos™, Tandy™, HP Vectra™,
Toshiba, Dell, Packard Bell и другие машины укомплектованные про-
цессорами Intel™ и Cyrix™. Машины ЕС, из-за недостатка ОЗУ не
работают в Windows и в данном примере не рассмотрены.
ранства. Реальные ограничения на объем такой виртуализированной оперативной памяти отсутствуют. В физической оперативной памяти
в каждый момент представлена некоторая часть полного виртуально-
го пространства, остальная же часть которого расположена на диске
По мере необходимости, например если пользователю понадобился
следующий фрагмент его программы, который в данный момент нахо-
дится на диске, а реальная оперативная память «загружена до осно-
вания», процессор может своппировать страницу оперативной па-
мяти со страницей на диске. (от англ. swap - менять местами). Таким
образом, попросту будет осуществлена перестановка страниц, и та
страница с которой только что работали «отправляется» на диск.
В Windows 3.1 возможно несколько вариантов реализации ВП. На ри-
сунке 8 показанно использование двух видов ВП в Windows: разно-
секторного (temporary) и перманентного (permanent) swap-файлов
Рис.8 Разносекторное и перманентное применение ВП
Разносекторный (временной) swap-файл
Разносекторный swap-файл состоит из множества независимых сек-
торов, которые разбросанны по всему диску. Каждый раз когда опера-
ционной среде Windows необходимо подгрузить в память какую-либо
страницу, она должна обратится к разносекторному swap-файлу. Но
неудобство применения такой разновидности ВП заключается в том,
что в конце каждой части этого целого своп-файла стоит пересылка
на другой сектор диска. И пользователь сталкивается с реальной потерей времени при работе с таким видом своп-файлов, так как про-
цессору необходимо «представить» в памяти целостную картину дан-
ного файла дабы извлечь из него нужную информацию. Для этого
машина собирает последовательность из этих кусочков и затем анали-
зирует представленный в памяти файл.
Если пользователь выбирает такой вид реализации ВП, то Windows
автоматически создаёт разносекторный swap-файл в директории
Windows. Обычно этот файл носит название WIN386.SWP. Неудобство такого метода ещё заключается в том, что разносекторный файл (по
другому называемый временным) хранит информацию только в про-
должении сеанса работы оболочки, а по завершении его автоматичес-
ки удаляется. Вот как может быть представленна программа, написан-ная на Паскале в виде разносекторных файлов:
~pas0c4e.tmp - первая страница начинается по адресу 0C4A;
~pas1158.tmp - вторая находится в секторе с номером 1158;
~pas1b5a.tmp - и третья расположена в секторе 1B5A.
В конце каждого .tmp-файла указанна ссылка на другой такой же.
Перманентный (постоянный) swap-файл
Вторая разновидность своп-файлов носит название перманентных
Такой файл занимает значительную часть диска, специально зарезер-
вированную для этих целей. Размер перманентного файла определяет-
ся наличием системных ресурсов, отведенных для работы с Windows
(размером ОП, свободным местом на жестском диске и даже време-
нем доступа к винчестеру). Перманентный файл работает гораздо
быстрее чем разносекторный, так как Windows знает настоящее мес-
тонахождение этого файла и нет необходимости собирать его из час-
тей. Обычно этот файл носит имя 386SPART.PAR или SPART.PAR
Безусловно, если пользователь имеет большой жесткий диск и мало
ОП, то использование перманентного своп-файла более эффективно.
Перменентный файл эмулирует реальную оперативную память и,
поэтому не стирается при выходе из Windows.
Анализ и оценка применения разных типов ВП в Windows.
Каждая из разновидностей ВП в Windows имеет свои преимущества
и недостатки. Временная ВП занимает место на винчестере только при необходимости, но для того чтобы выделить или освободить такое место нужно каждый раз тратить время. Суммарное быстро-действие такой памяти ниже, чем у постоянной ВП. Что касается постоянной ВП, то она быстрее временной, но она также занимает достаточно большое пространство на винчестере, даже если пользо-ватель не обращается к своим программам и приложениям и вообще
не работает в Windows.
Но в целом, виртуальная память играет значительную роль в при-
менении Windows. Как было сказанно ранее, адресное пространство
расширяется засчет объединения ячеек реальной ОП с ячейками на
магнитном диске и при этом размер физической памяти становится
значительно большим. Это немаловажно, так как Windows очень по-
пулярная операционная среда, доступная как профессионалу, так и
простому пользователю. Размер машинного времени «уделяемого»
Windows достаточно велик. Вследствие этого различными фирмами
(Microsoft®, Borland International, Lotus Development и т. д.) было
написанно много программного обеспечения специально для среды
Windows. Так же было разработанно множество профессиональных
пакетов, ориентированных на математику, статистику, программи-
рование, бухгалтерию и т. д. Вот здесь и нашлось место для приме-
нения виртуальной памяти. Благодаря возможности работы в муль-
типрограммном режиме, огромные массивы информации постоянно
находятся в движении. Пользователь может запустить на выполне-
ние сразу несколько программ, (каждая из которых требует памяти).
Применение ВП значительно увеличивает объем физической па-
мяти и позволяет работать эффективнее.
8. Способы замены (свопирования) страниц
(Механизмы обмена страниц)
Как было упомянуто выше, использование ВП подразумевает при-менение магнитного диска на котором хранятся те страницы или сег-
менты, которые на данный момент не нужны в оперативной памяти.
Метод применения ВП довольно прост: те страницы с которыми по-
льзователь работает в данный момент находятся в памяти машины и
к ним осуществляется непосредственный доступ. Через определённое
время процессору, отработавшему с данной страницей, требуется дру-
гая страница, которая подгружается в память с диска. Страница, с ко-
торой только что отработали «вытесняется» на диск, а ни в коем слу-
чае не уничтожается.
Довольно часто случается так, что вся реальная память, разбитая
на страницы полностью занята. И при необходимости продгрузить но-
вую страницу, супервизор должен установить какую страницу пере-
нести да диск, чтобы освободить место для требующейся. Это доста-
точно сложная задача, так как удалённая страница может понадо-
биться на следующем этапе, а это может привести к потере времени.
Для своппирования страниц в разных программах используются раз-личные стратегии, примеры которых приведены ниже:
1. Случайное удаление страниц...
Случайное удаление не является самым эффективным способом, так как оно не мо-жет дать стопроцентной гарантии, что только что удалённая страница не понадо-
бится на следующем этапе работы. Случайное удаление осуществляется с помощью
функции случайных чисел. Супервизор попросту берет начальный адрес случайной
страницы в оперативной памяти и переписывает его в swap-файл (на диск). При
этом корректируется страничная (сегментная) таблица.
2. Удаление по времени пребывания в ОП...
Механизм этой стратегии можно представить как «первым вошел, первым вышел».
Это значит, что страница, дольше всех находящаяся в оперативной памяти на дан-
ном этапе будет удалена первой. Этот метод также не универсален так как каждой
странице отведено определенное время на функционирование, и основное неудобст-
во заключается в том, что необходимо вести механизм учёта за длительностью пребывания страниц в ОП, что также связанно с усложнением структуы и потерей времени.
3. Удаление в связи с давностью использования...
На мой взгляд, этот метод является наиболее удачным. Механизм его таков: если страница дольше всех находится в ОП, значит пользователь в течение долго вре-
мени не нуждался в ней, а значит появляется вероятность, что эта страница не понадобится и на следующем этапе.
4. Удаление по вероятности использования...
Вероятность использования страницы N очень небольшая, а вероятность исполь-
зования страницы M высока. В этом случае, страница N будет удалена из памяти.
Этот способ также не представляется мне достаточно эффективным, так как здесь
всё основанно на вероятности. Но, каждый раз когда мы подбрасываем монету,
неизвестно какой стороной она упадёт. Так же и здесь - нет никакой гарантии, что
эта страница не понадобится на следующем этапе.
5. Удаление по приоритетам...
Этот способ пожалуй является достаточно эффективным, так как страницы удаля-
ются по приоритетам. Каждая страница имеет свой приоритет, который устанав-
ливается супервизором в соответствии с «важностью» программы, находящейся в
определённой станице. Предположим что в странице N находятся коды важной
пользовательской подпрограммы, а в странице M - текстовый файл, работа с кото-
рым не является столь важной. Тогда N получает приоритет 1, а M, предположим,
9. Заметим, что необходимые, часто требующиеся страницы имеют приоритеты
1-3, менее необходимые 4-6, и практически ненужные 5-9. Это значит, что когда в следующий раз супервизору понадобится удалить из ОП страницу, он начнет со страниц, имеющих самый низкий уровень приоритета (9).
9. Анализ и оценка виртуальной памяти. Показатели эффективности.
(При СО и ССО)
Эффективное решение задач на ЭВМ определяется не только ем-
костью и быстродействием запоминающих устройств, наличием мо-
щного процессора с большой тактовой частотой, но и организацией и
распределением памяти. Современные компьютеры обладают средст-вами и техническими характеристиками для организации виртуаль-ной памяти.
Применение виртуальной памяти получило широкое применение
как среди пользователей-любителей, так и среди профессионалов.
Основная функция ВП - расширение адресного пространства. ВП
создаётся для увеличения функциональных возможностей компью-
тера, повышения уровней мультипрограммной работы. Объединив,
ячейки реальной оперативной памяти с ячейками на быстродейству-
ющих магнитных носителях, (чаще всего для этих целей используют-
ся винчестеры. Применение НГМД не было бы столь эффективно, а применение НМД или НМБ понесло бы невосполнимые потери), поль-зователь имеет возможность зна-чительно расширить память и при этом не думать о том в «какой» памяти хранится его программа. ВП была созданна для облегчения работы пользователей при размещении программ.
Благодаря ВП появилась возможность для более эффективного применения программ-мультитаскеров (multi-tasker) - специальных
пакетов, позволяющих повысить уровень мультипрограммной работы.
(Программы, которые распределяют время процессора и память так, что например связываться по модему, печатать на принтере и обра-батывать текст можно одновременно). В настоящее время, благодаря
применению ВП, усилилась тенденция к использованию DeskView
менеджера-мультитаскера (производства фирмы QuatterDeck).
Сравнивая реальную оперативную память с виртуальной, можно отметить, что объем РП ограничен, то есть в каждой микросхеме
фиксированное число ячеек. Что касается ВП, то она может иметь
достаточно большой объем, ограниченный только местом на диске
(возможностью адресации). Объем ВП может достигать нескольких
десятков и сотен мегабайт. РП имеет линейную структуру (адреса-
ция в порядке возрастания). ВП использует сквозную адресацию.
В целом, применение виртуальной памяти является весомым
вкладом в прогрессировании современных компьютерных техно-логий и большим шагом в развитии пограммирования, открываю-
щим профессиональному программисту путь к созданию мощных мультизадачных систем и комплексов. Применение виртуальной памяти широко оценивается специалистами в компьютерной ме-дицине, научной кибернетике, профессиональном программиро-вании.
Copyright © 1994 by Vsevolod Ukrainsky