В. Столлингс - Операционные системы (1114679), страница 69
Текст из файла (страница 69)
Первый из них делится на двойники размером 256 Кбайт, и, в свою очередь, первый из получившихся при этом разделении двойников также делится пополам. Один из получившихся двойников ойников размером 126 Кбайт выделяется запросу А. Следующий запрос В требует 256 Кбайт. '1акай блок имеется в наличии и выделяется. Процесс продолжается с разделением и слиянием двойников при необходимости.
Обратите внимание, что после освобождения блока Е происходит слияние двойников по 128 Кбайт в один блок размером 256 Кбайт, который, в свою очередь, тут же сливается со своим двойником. На рис. 7.7 показано представление системы двойников в виде бинарного д~рева, непосредственно после освобождения блока В. Листья представляют текущее распределение памяти. Если два двойника являются листьями, то по крайней мере один из них занят; в противном случае они должны слиться в блок болыпего размера.
СС! !О й И СЧ й СЪ Сй й СЧ й СО й СО СЧ й СО Рис. 7.7. Представление системы двойников в виде бинарного дерева х !О 4ЛЪ СЧ й СО СЧ й СО х СФ С'Ч й СЭ й О й С.1 Перемещение Перед тем как мы рассмотрим способы, с помощью которых можно избежать „ недостатков распределения, следует до конца разобраться в вопросах, связанных с Размещением процессов в памяти. При использовании фиксированной схемь1 ас Распределения, показанной на рис.
7.3,а, можно ожидать, что процесс всегда б какой улет назначаться одному и тому же разделу памяти. Это означает, что ы Раздел ни был выбран для нового процесса, для размещения этого Роцесса по после выгрузки и последующей загрузки в память всегда будет использоваться именно этот раздел. В данном случае можно использовать простейший , описанный в приложении к данной главе: при загрузке процесса все загру „ тноситель ные ссылки в коде замещаются абсолютными адресами памяти опре еленны ыми на основе базового адреса загруженного процесса. й С.! й СЭ х СО СЧ й СО СО СЧ й СС! х СО СЧ й «С х СО СЧ й х СО СЧ й «С Я Ж Я К $ 4 4 4 8 Л Л ва 7. Управление памятью Система двойников представляет собой разумный компромисс для преодоления недостатков схем фиксированного и динамического распределения, но в современных операционных системах ее превосходит виртуальная память, основанная на страничной организации и сегментации.
Однако система двойников нашла применение в параллельных системах как эффективное средство распределения и освобождения параллельных программ (см., например, ~.)ОНХ92)). Модифицированная версия системы двойников используется для распределения памяти ядром СЛ~ПХ (подробнее об этом вы узнаете в главе 8, "Виртуальная память*').
и размеры разделов равны (рис. 7.2) и существует единая очередь аздело ( . 7.3 б), процесс по ходу работы может азделов разного размера (рис. ~е азделы. Ри пе . П рвом создании образа процесса он загружается в не .ак он был выгружен из памяти и вновь и памяти; позже, после того как сс может оказа аться в другом разделе (не в том, в котором он разме ия возможна и при динамическом распределении. ий раз). Та же ситуация воз. '.4,в и а процесс занимает 2 при размещении в памяти различные м ния процессы также перемещаются в основнф" при выполнении уплотнения про аким образом, расположение ко.
ние команд и данных, к которым обращается ляется фиксирован ф ванным и изменяется всякий раз при выгрузке и загр и есса. Для решения этой проблемы следует различать тещении) процесса. Для реше с ..„дставляет собой ссылку на ячейку памяти, не Ъ>гическии адрес ..„д женил данных в памяти; перед тем как получ доступ';ф о ить ф кущего расположения д в физический, се памяти, необходимо транслировать логический адрес в физическ пай адрес представляет со обой частный случай логического адреса, ког ' ' (еляется положением относител тельно некоторой известной точки (обычно:м';:: " адрес (известный также как абсолютный) юграммы). Физический адрес й ~ действительное расположе ение интересующей нас ячейки основно Если программа использует относительны адрес, е а, это означает, что всв:, тмять в загружаемом процесс ессе даны относительно начала этой про ~'Ф образом, для корректной работы программ требу ный мы треб ется аппаратный зый бы транслировал вал относительные адреса в физические в процессе -оманды, которая обращается к памяти.
4 е хо ит в состояние выполнения, в специальный регистр проц с п цесса в основной ~азываемый базовым, загружается начальныи адрес ро те того, используется граничный" (ЬоипсЫ регистр, в котором содер адней яче ки памяти се программы в основ рогр в основную память. При выполнении процесса ветре лдах относительные адреса обрабатываются про тся п цессором в два этапа. сительному адресу ому адресу прибавляется значение базового регистра для получ, >тного адреса, Затем полученный абсолютный адрес сравнивается ичном регистре. Если полученный абсолютный адрес принадлежит', ющее данной ошибке прерывание операционной системы.
Схема, представленная на рис. 7.8, обеспе чивает возможность выгр ессе их выполнения, "кроме ки программ в основную память в процессе цого процесса ограничен адресами, содержащ ж имися в базовом и х, и защищен от нежелательного доступа со сторо др с сто ны других процессов.," е 3. СТРАНИЧНАЯ- ОРГАНИЗАЦИИ.-'' Как разделы с разными фиксированными р р ми азме ами, так и разделы польз ют память. Результа ~ размера недостаточно эффективно испол у т ия езультатом работы зых становится внутренняя фрагментацт, р новная память разделена на пняя. Предположим, однако, что основн анного азмера. Тогда блоки си относительно небольшого Фиксированн р б .стные как страницы (раяеэ), могут быть ть связаны со свободными мяти, известными как кадры (тгатпеэ), или фреймы. Каждый кадр может содерть одну страницу данных. При такой организации памяти, как вы узнаете из го раздела, внешняя фрагментация отсутствует вовсе„а потери из-за внутренней фрагментации ограничены частью последней страницы процесса.
0тиоситепьиый адрес ОбРаз процесса е осиоеиои пампти Рис. 7.8. Аппараптиазт ттоддержка лерсяещения На Рис. 7.9 показано использование страниц и кадров. В лкбой момент времени некоторые из кадров памяти используются, а некоторые свободны. Операционная с"стема поддерживает список свободных кадров. Процесс А, хранящийся на диске, состовтт из четырех страниц. Когда приходит время загрузить этот процесс в память, о"ерационная система находит четыре свободных кадра и загружает странтщы процесса А в эти кадры (рис. 7.9,6).
Затем загружаются процесс В, состоящий из тРех тра"'иц. и процесс С, состоящий из четырех страниц. После этого процесс В приостаз азаэлттвается и выгружается из основной памяти. Позже наступает момент, когда все и процессы в памяти оказываются заблокированы, и операционная система загрултает в т в память новыи процесс В, состоящий из пяти страниц.
~перь предположим, что, как в только что рассмотренном выше примере, не "меется тся одной непрерывной области кадров, достаточной для размещения процесса цезтико~,~ тз омешает ли это операционной системе загрузить процесс з.з? Нет, постсольт.; 'Ф. О:У в й си у ц и можно по- ова я концепц ей ло .их др в днако „ "о одного Регистра базового адреса в этой ситуации недостаточно„и для каждоРоцесса операционная система должна поддерживать таблицу страниц. Таблица атти ц Указывает расположение кадров каждой страницы процесса. Внутри проы логический адрес состоит из номера страницы и смещения внутри нее.
" ., аммы Часть 7- УпРавление памятью что в случае простого распределения логический адрес предст оложение слова относительно начала программы, котоРое процессор: в физический адРес. ПРи стРаничной оРганизации пРеобРазование ло ,в в физические также остается задачей аппаратного уровня, решаемой; ' , Теперь процессор должен иметь информацию о том, где находится яц текущего процесса. Представленный логический адрес (номер ние) процессор превращает с использованием таблицы страниц в фи (номер кадра, смещение). Основная память Основная память Основная ''" Щ~": )(: ' О 2 3 4 в) Затрузке а) 15 доступных кадров б) Загрузка процесса А Основная память 0 1 е) ЗатруаеФ', г) Загрузка процесса С д) ВыгРузка процесса В Рис.
7.9, Распределение страниц по сеододным кадрам О 1 2 3 5 б 7 8 9 10 12 13 14 0 2 3 4 5 б 7 8 9 03 12 13 14 О 1 2 3 4 5 б 7 8 9 10 11 12 13 14 О 2 3 4 5 б 7 8 9 10 !1 12 13 14 5 Б 7 8 9 10 11 12 13 14 4 5 б 7 8 9 10 12 13 14 называется загруженным в страницы 4, 5, 6, 11 и 12. Таблица страниц соржит по одной записи для каждой страницы процесса, так что таблицу легко индексировать номером страницы, начиная с О.
Каждая запись содержит но„, „фрейма в основной памяти (если таковой имеется), в котором хранится соаетствующзя страница. Кроме того, операционная система поддерживает един список свободных (т.е. не занятых никаким процессо сом и доступных для амоп)ения в них страниц) кадров. Список свободньв кадров Таблица страниц процесса В Таблицастраниц процесса С Таслица ~границ процесса А Таблица страниц процесса О Рис.
7.70. Отруктуры данны». соотесптстеукнц~ е прид Ру, помситенному на рис. 7.9,е Таким образом, описанная здесь простая страничная о г рганизация подобна фиксированному распределению. Отличия заключаются в о в достаточно малом раз- мере разделов, которые к тому же могут не быть смежными. Для удобства работы с такой схемой добавим правило, в соответствии с ко- торым размер страницы (а, следовательно, и размер кадра) должен представлять собой степень 2 П и и р спользовании такого размера страниц легко показать, что ;, относительный ес к адр, оторый определяется относительно начала программы, и . логический адрес, представляющий собой номер кадра и смещение, идентичны. Соответствующий пример приведен на рис..