А. Робачевский - Операционная система UNIX (1114671), страница 41
Текст из файла (страница 41)
Схема управления памятью, основанная намеханизме свопинга, показана на рис.Рис.Управление памятью, основанное на свопингеМеханизм страничного замещения по требованию был реализован в UNIXвгоду на новом компьютереимевшем 32!разрядную ар!www.books-shop.com212Глава 3.управления процессами4 Гбайт адресуемого пространства и аппаратную поддержкустраничного механизма. Первой системой UNIX, в которой управлениепамятью основывалось на страничном замещении по требованию, явиласьверсияУже в середине 80!х годов все основные версии UNIXобеспечивали страничное замещение в качестве основного механизма, ос!тавляя свопингу вторую роль.Как уже говорилось в системах с виртуальной памятью, основанной настраничном механизме, адресное пространство процесса разделено на по!следовательные участки равной длины, называемыми страницами.
Такаяже организация присуща и физической памяти, и в конечном итоге любоеместо физической памяти адресуется номером страницы и смещением вней. Деление адресного пространства процесса является логическим, при!чем логическим последовательным страницам виртуальной памяти приподдержке операционной системы и аппаратуры (MMU процессора) ста!вятся в соответствие определенные физические страницы оперативной па!мяти. Эта операция получила название трансляции адреса.Однако механизм трансляции адреса является первым условием реализа!ции виртуальной памяти, позволяя отделить виртуальное адресное про!странство процесса от физического адресного пространства процессора.Вторым условием является возможность выполнения процесса, чье адрес!ное пространство не имеет полного отображения на физическую память.Чтобы удовлетворить второму условию, каждая страница виртуальной па!мяти имеет флаг присутствия в оперативной памяти.
Если адресуемаястраница отсутствует в памяти, аппаратура генерирует страничную ошиб!ку, которая обрабатывается операционной системой, в конечном итогеприводя к размещению этой страницы в памяти. Таким образом, для вы!полнения процесса является необходимым присутствие в памяти лишь не!скольких страниц процесса, к которым в данный момент происходит об!ращение (рис. 3.12).Вообще говоря, конкретный механизм страничного замещения зависит оттого, как реализованы три основных принципа:1. При каких условиях система загружает страницы в память, т.
н. прин!цип загрузки (fetch policy).2. В каких участках памяти система размещает страницы, т. н. принципразмещения (placement policy).Каким образом система выбирает страницы, которые требуется осво!бодить из памяти, когда отсутствуют свободные страницы для разме!щения (или их число меньше некоторого порогового значения), т. н.принцип замещения (replacement policy).Обычно все физические страницы одинаково подходят для размещения, ипринцип размещения не оказывает существенного влияния на работу ме!ханизма в целом. Таким образом эффективность управления памятью пол!www.books-shop.comУправление памятью процесса213ностью зависит от двух остальных принципов: загрузки и замещения. Всистемах с чистым страничным замещением по требованию в память по!мещаются только требуемые страницы, а замещение производится, когдаполностью отсутствует свободная оперативная память.
Соответственно,производительность таких систем полностью зависит от реализации прин!ципа замещения. Однако большинство современных версий UNIX не ис!пользуют чистого страничного замещения по требованию. Вместо этогопринцип загрузки предполагает размещение сразу несколькихобращение к которым наиболее вероятно в ближайшее время, а замещениепроизводится до того, как память будет полностью занята.Процесс 1Физическая памятьФизическая страницаВиртуальная страницаПроцесс 3Рис. 3.12.
Управление памятью, основанное на страничном замещении по требованиюОписанный механизм управления памятью допускает ситуацию, когдасуммарный размер всех выполняющихся в данный момент процессов пре!вышает размер физической памяти, в которой располагается только частьстраниц процессов. Содержимое остальных страниц хранится вне физиче!ской памяти и должно быть загружено ядром, если процессу требуетсядоступ к этой части адресного пространства. Однако виртуальное адресноепространство процесса не зависит от фактического расположения физиче!ских страниц, и его размещение производится ядром при создании про!цесса или запуске новой программы.
Виртуальное адресное пространствоможет изменяться в результате динамического размещения памяти (хипа)или увеличения стека процесса.Таким образом, сам процесс "видит" только собственное виртуальное ад!ресное пространство. Однако физические страницы, соответствующиеwww.books-shop.com214Глава 3.процессамиэтому адресному пространству могут в действительности располагаться вразличных местах, как это показано на рис. 3.13.Рис. 3.13. Возможное местонахождение физических страниц процесса1.
Виртуальный адрес может быть ассоциирован со страницей физиче!ской памяти. Обращение к виртуальным адресам из диапазона, соот!ветствующего этой странице, приведет к обращению к соответствую!щим адресам физической памяти. От операционной системы не требу!ется дополнительных действий при обращении к такой странице.2. Страница может быть перемещена в область свопинга, если требуетсяосвободить память для другого процесса.
Обращение к виртуальномуадресу, соответствующему этой странице, приведет к страничнойошибке, что, в свою очередь, потребует от ядра размещения новойстраницы в памяти, записи ее содержимого из области свопинга и со!ответствующего изменения карты отображения (записи таблицы стра!ниц) таким образом, чтобы виртуальный адрес указывал на новуюстраницу. Если потребуется опять переместить такую страницу в об!www.books-shop.comУправление памятью процессасвопинга, ядро сделает это только в том случае, если с моментапоследней загрузки произошла модификация страницы.3. Адресуемая страница отсутствует в памяти, но ее содержимое находит!ся в файле на диске. Типичными примерами такой ситуации могутслужить страницы сегмента кода или области файлов, отображенных впамяти.к виртуальному адресу, соответствующему этойстранице, приведет к страничной ошибке, что, в свою очередь, потре!бует от ядрановой страницы в памяти, записи еежимого из файла и соответствующего изменения карты отображения(записи таблицы страниц) таким образом, чтобы виртуальный адресуказывал на новую страницу.4.
Адресуемая страница отсутствует в памяти и она не ассоциирована нис областью свопинга, ни с файлом. Типичным примером такой ситуа!ции является страница сегмента неинициализированных данных. Об!ращение к такой странице потребует размещения новой страницы, за!полненной нулями.Ядро должно иметь достаточную информацию обо всех страницах, отсутст!вующих в памяти для того, чтобы при необходимости загрузить их в память.Для страниц, перемещенных во вторичную память, необходимо знать ихрасположение в области свопинга.
Ядро должно иметь возможность распо!знать, что страницу необходимо заполнить нулями или загрузить ее содер!жимое из файла. В последнем случае ядро должно хранить местонахождениефайла в файловой системе. Таким образом, наряду с картаминеобходимыми для трансляции адреса, ядро хранит ряд структур данных дляпоиска и загрузки отсутствующих в памяти страниц.Различные версии UNIX используют разные подходы. Например, в SCOUNIX для описания страниц используются структуры p f d a t и связанныес ними дескрипторы дисковых блоков. В UNIXдля этого исполь!зуются поля записи таблицы страниц.Страничное замещение имеет ряд важных преимуществ по сравнению сосвопингом:Размер программы ограничивается лишь размером виртуальной па!мяти, который для компьютеров с 32!разрядной архитектурой со!ставляет 4 Гбайт.СИ Запуск программы происходит очень быстро, т.
к. не требуется за!гружать в память всю программу целиком.Значительно большее число программ может быть загружено и вы!полняться одновременно, т. к. для выполнения каждой из них в ка!ждый момент времени достаточно всего нескольких страниц.Перемещение отдельных страниц между оперативной и вторичнойпамятью требует значительно меньших затрат, чем перемещениепроцесса целиком.www.books-shop.com216Глава 3.управления процессамиПланирование выполнения процессовКак и оперативная память, процессор является разделяемым ресурсом, ко!торый должен быть справедливо распределен между конкурирующимипроцессами. Планировщик процессов как раз и является той подсистемойядра, которая обеспечивает предоставление процессорных ресурсов про!цессам, выполняющимся в операционной системе.