Операционные системы 2011 (1114689), страница 62
Текст из файла (страница 62)
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(свободно)Рис. 133. Распределение перемещаемыми разделами.По мере функционирования операционной системы после завершений тех илииных процессов пространство оперативной памяти становится все более и более232фрагментированным: в памяти присутствует множество небольших участков свободногопространства, суммарный объем которых позволяет поместить достаточно большойпроцесс, но каждый из этих участков меньше размера этого процесса.
Для борьбы сфрагментацией используется специальный процесс компрессии. Данная модель позволяетиспользовать компрессию за счет того, что исполняемый код процессов можетперемещаться по оперативной памяти.Очевидно, что в общем случае операция компрессии достаточно трудоемкая,поэтому существует ряд подходов для ее организации. С одной стороны, компрессияможет быть локальной, когда система для высвобождения необходимого пространствапередвигает небольшое количество процессов (например, два процесса). С другойстороны, возможен вариант, когда в некоторый момент система приостанавливаетвыполнение всех процессов и начинает их перемещать, например, к начальному адресуоперативной памяти, тогда в конце ОЗУ окажется вся свободная память. Таким образом,стратегии здесь могут быть разными.Что касается аппаратной поддержки, то здесь она аналогична предыдущей модели:требуются аппаратные средства защиты памяти (регистры границ или же ключи защиты)и аппаратные средства, позволяющие осуществлять перемещение процессов (вбольшинстве случаев для этих целей используется регистр базы, который в некоторыхслучаях может совпадать с одним из регистров границ).
Используемые алгоритмы такжедостаточно очевидны и могут напоминать алгоритмы, рассмотренные при обсуждениипредыдущей модели.Основным достоинством данной модели распределения памяти являетсяликвидация фрагментации памяти. Отметим, что для систем, ориентированных на работув мультипрограммном пакетном режиме (когда почти каждый процесс является более илименее большой вычислительной задачей), задача дефрагментации (или компрессии) неимеет существенного значения, поскольку для многочасовых вычислительных задачредкая минутная приостановка для совершения компрессии на эффективность системы невлияет. Соответственно, данная модель хорошо подходит для такого класса систем.Если же, напротив, система предназначена для обработки большого потока задачпользователей, работающих в интерактивном режиме, то компрессия будет достаточночастой, а продолжительность компрессии, с точки зрения пользователя, будет достаточнобольшой, что, в конечном счете, будет отрицательно сказываться на эффективностиподобной системы.К недостаткам данной модели необходимо отнести опять-таки ограничениепредельного размера прикладного процесса размером физической памяти.