2011. Машбук (1114722), страница 61
Текст из файла (страница 61)
В принципе можно откачать весь процесс, но это зачастуюнеэффективно.Ниже будут рассмотрены различные стратегии организации оперативной памяти(одиночное непрерывное распределение, распределение разделами, распределениеперемещаемыми разделами, страничное распределение, сегментное распределение исегменто-страничное распределение), а также методы управления ею. При этом приобсуждении каждой стратегии будем обращать внимание на её основные концепции, на теаппаратные средства, которые необходимы для поддержания данной модели, на типовыеалгоритмы, а также будем рассматривать основные достоинства и недостатки.5.1Одиночное непрерывное распределениеДанная модель распределения оперативной памяти (Рис.
131) является одной изсамых простых и основывается на том, что все адресное пространство подразделяется надва компонента. В одной части памяти располагается и функционирует операционнаясистема, а другая часть выделяется для выполнения прикладных процессов.При таком подходе не возникает особых организационных трудностей. С точкизрения обеспечения корректности функционирования этой модели, необходимо аппаратнообеспечить «водораздел» между пространствами, принадлежащими операционнойсистеме и пользовательским процессом.
Для этих целей достаточно иметь один регистрграницы: если получаемый исполнительный адрес оказывается меньше значения этогорегистра, то это адрес в пространстве операционной системы, иначе – в пространствепроцесса. Такая реализация может сочетаться с аппаратной поддержкой двух режимовфункционирования: пользовательского режима и режима ОС. Если в режиме пользователяпроисходит попытка обратиться в область памяти операционной системы, возникает229прерывание. Алгоритмы, используемые при таком распределении, достаточно просты, имы не будем их здесь обсуждать.ОСРеальноиспользуетсяДоступно(выделено)Выделено, ноне используетсяРис.
131. Одиночное непрерывное распределение.К достоинствам данной модели относится концептуальная простота во всехотношениях. В частности, минимальные аппаратные требования или отсутствие таковых,как в ОС Microsoft DOS, в которой даже не было регистра границ и пользовательскийпроцесс мог обращаться к области ОС.Среди недостатков можно отметить, во-первых, неэффективное использованиефизического ресурса: часть памяти, выделяемой под процесс, никогда реально неиспользуется. Во-вторых, процесс занимает всю память полностью на все времявыполнения.
Но реально оказывается, что зачастую обращения процесса к памятипроисходят в достаточно локализованные участки, а более или менее равномерноеобращение ко всему адресному пространству процесса случается очень редко.Получается, что данная модель имеет еще и неявную неэффективность за счет того, чтопод все адресное пространство процесса отводится сразу все необходимое физическоепространство, хотя реально процесс работает лишь с локальными участками. И, наконец,в-третьих, рассматриваемая модель жестко ограничивает размер прикладного процесса.5.2Распределение неперемещаемыми разделамиДанная модель строится по следующим принципам (Рис.
132). Опять же, всеадресное пространство оперативной памяти делится на две части. Одна часть отводитсяпод операционную систему, все оставшееся пространство отводится под работуприкладных процессов, причем это пространство заблаговременно делится на N частей(назовем их разделами), каждая из которых в общем случае имеет произвольныйфиксированный размер. Эта настройка происходит на уровне операционной системы.Соответственно, очередь прикладных процессов разделяется по этим разделам.Существуют концептуально два варианта организации этой очереди. Первыйвариант (вариант Б) предполагает наличие единственной сквозной очереди, которая покаким-то соображениям распределяется между этими разделами. Второй вариант (вариантА) организован так, что с каждым разделом ассоциируется своя очередь и поступающийпроцесс сразу попадает в одну из этих очередей.Существуют несколько способов аппаратной реализации данной модели. С однойстороны, это использование двух регистров границ, один из которых отвечает за начало,а второй — за конец области прикладного процесса.
Выход за ту или иную границу ведетк возникновению прерывания по защите памяти.230ОС……………N входных очередей(Вариант А)Рис. 132. Распределение неперемещаемыми разделами.Одна очередь(Вариант Б)Альтернативной аппаратной реализацией может служить механизм ключейзащиты (PSW — process[or] status word), которые могут находиться в слове состоянияпроцесса и в слове состояния процессора.
Данное решение подразумевает, что каждомуразделу ОЗУ ставится в соответствие некоторый ключ защиты. Если аппаратураподдерживает, то в процессоре имеется слово состояния, в котором может находитьсяключ защиты доступного в данный момент раздела. Соответственно, у процесса такжеесть некоторый ключ защиты, который тоже хранится в некотором регистре. Если приобращении к памяти эти ключи защиты совпадают, то доступ считается разрешенным,иначе возникает прерывание по защите памяти.Рассмотрим теперь алгоритмы, применяемые в данной модели распределенияпамяти.
Сначала рассмотрим алгоритм для модели с N очередями. Сортировка входнойочереди процессов по отдельным очередям к разделам сводится к тому, что приходящийпроцесс размещается в разделе минимального размера, достаточного для размещенияданного процесса. Заметим, что в общем случае не гарантируется равномерная загрузкавсех очередей, что ведет к неэффективности использования памяти. Возможны ситуации,когда к некоторым разделам имеются большие очереди, а к разделам большего размераочередей вообще нет, т.е. возникает проблема недозагрузки некоторых разделов.Другая модель с единой очередью процессов является более гибкой. Но она имеетсвои проблемы.
В частности, возникает проблема выбора процесса из очереди дляразмещения его в только что освободившийся раздел.Одно из решений указанной проблемы может состоять в том, что из очередивыбирается первый процесс, помещающийся в освободившемся разделе. Такой алгоритмдостаточно простой и не требует просмотра всей очереди процессов. Но в этом случаезачастую возможны ситуации несоответствия размеров процесса и раздела, когда процесснамного меньше освободившегося раздела.
Это может привести к тому, что маленькиепроцессы будут «подавлять» более крупные процессы, которые могли бы поместиться восвободившемся разделе.Другое решение предлагает, напротив, искать в очереди процесс максимальногоразмера, помещающийся в освободившийся раздел. Очевидно, данный алгоритм требуетпросмотра всей очереди процессов, но зато он достаточно эффективно обходит проблемуфрагментации раздела (возникающую, когда «маленький» процесс загружается в крупныйраздел, и оставшаяся часть раздела просто не используется).
Как следствие, данныйалгоритм подразумевает дискриминацию «маленьких» процессов при выборе очередногопроцесса для постановки на исполнение.Чтобы избавиться от последней проблемы, можно воспользоваться некотороймодификацией второго решения, основанной на следующем подходе. Для каждогопроцесса имеется счетчик дискриминации. Под дискриминацией будем понимать231ситуацию, когда в системе освободился раздел, достаточный для загрузки некоторогопроцесса, но система планирования ОС его пропустила. Соответственно, при каждойтакой дискриминации из счетчика дискриминации данного процесса вычитается единица.Тогда при просмотре очереди планировщик сначала проверяет значение этого счетчика:если оно равно равно нулю и процесс помещается в освободившемся разделе, топланировщик обязан загрузить данный процесс в этот раздел.К достоинствам данной модели распределения оперативной памяти можно отнестипростоту аппаратных средств организации мультипрограммирования (например,использование двух регистров границ) и простоту используемых алгоритмов.
Сделаемнебольшое замечание. Если речь идет о модели с N очередями, то никакихдополнительных требований к реализации не возникает. Можно так все организовать, чтоподготавливаемый процесс в зависимости от его размера будет настраиваться наадресацию соответствующего раздела. Если же речь идет о модели с единой очередьюпроцессов, то появляется требование к перемещаемости кода, это же требованиедобавляется и к аппаратной части. В данном случае это регистр базы, который можетсовпадать с одним из регистров границ.К недостаткам можно отнести, во-первых, внутреннюю фрагментацию в разделах,поскольку зачастую процесс, загруженный в раздел, оказывается меньшего размера, чемданный раздел.
Во-вторых, это ограничение предельного размера прикладных процессовразмером максимального физического раздела ОЗУ. И, в-третьих, опять-таки весь процессразмещается в памяти, что может привести к неэффективному использованию ресурса(поскольку, как упоминалось выше, зачастую процесс работает с локализованнойобластью памяти).5.3Распределение перемещаемыми разделамиДанная модель распределения (Рис. 133) разрешает загрузку произвольного(нефиксированного) числа процессов в оперативную память, и под каждый процессотводится раздел необходимого размера. Соответственно, система допускаетперемещение раздела, а, следовательно, и процесса. Такой подход позволяет избавиться отфрагментации.ОСОСОСV1(процесс1)V1(процесс1)V1(процесс1)V2(свободно)V3(процесс2)V3(процесс2)V3(процесс2)V4(процесс3)V4(процесс3)V4(процесс3)V2+V5(свободно)V2+½V5(процесс4)V5(свободно)Рис.