Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системное программное обеспечение. Учебник
.pdf
91
Глава 3. Управление памятью
В системе с сегментной организацией программа и ее данные могут занимать много отдельных блоков первичной памяти.
Сами блоки не обязательно одинакового размера. Виртуальный
адрес в сегментной системе – это упорядоченная пара V = (s, d),
где s – номер сегмента виртуальной памяти, а d – смещение в
рамках этого сегмента, где находится адресуемый сегмент. Процесс может выполняться, если его текущий сегмент (как минимум) размещается в первичной памяти. Сегменты передаются
из внешней памяти в первичную память целиком. Все ячейки,
относящиеся к сегменту, занимают смежные адреса первичной
памяти. Динамическое преобразование адресов осуществляется следующим образом. Выполняющийся процесс выдает адрес
виртуальной памяти V = (s, d). Механизм отображения сегмен-
тов ищет сегмент s в таблице сегментов и определяет, что этот
сегмент находится в реальной памяти начиная с ячейки s′. Адрес
реальной памяти, соответствующий виртуальному адресу V = (s,
d), формируется затем путем добавления s′ к d. Так как сегменты имеют разную длину, то необходимо контролировать d, чтобы
оно не вышло за пределы сегмента. Два процесса могут совместно использовать некоторый сегмент, если в их таблицах сегментов просто будут строки, указывающие на один и тот же сегмент
первичной памяти [1, 2, 4].
Начиная с середины 1960-х годов, в частности с вычислительных систем с разделением времени Multics и TSS корпорации
IBM, во многих вычислительных машинах применяется комби-
нированная странично-сегментная организация памяти. Она
обладает достоинствами и той, и другой. Сегменты обычно содержат целое число страниц, причем не обязательно, чтобы все страницы сегмента находились в первичной памяти, а смежные страницы виртуальной памяти не обязательно должны оказываться
смежными в реальной памяти. В такой странично-сегментной
системе применяется трехмерная адресация, то есть адрес виртуальной памяти V определяется как упорядоченная тройка: V = (s,
p, d), где s – номер сегмента, p – номер страницы, d – смещение
в рамках страницы, на которой находится нужный элемент.
В такой системе со странично-сегментной организацией виртуальной памяти преимущества, обеспечиваемые коллективным
использованием сегментов, особенно заметны. Здесь в таблицах

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
92
сегментов для различных процессов содержатся строки, указывающие на одну и ту же таблицу страниц. Все это требует очень
четкого управления со стороны операционной системы. Существует подробная структура таблиц, необходимых для комбинированной странично-сегментной системы.
На самом верхнем уровне этой структуры находится таблица
процессов, которая содержит по строке для каждого процесса,
известного системе. Строка таблицы процессов, соответствующая конкретному процессу, указывает на таблицу сегментов
этого процесса. Каждая строка таблицы сегментов процесса указывает на таблицу страниц соответствующего сегмента, а каждая строка таблицы страниц указывает либо н страничный кадр,
в котором размещается данная страница, либо на адрес внешней
памяти, где можно найти эту страницу. Преобразование адресов
производится быстрее во время выполнения, если все таблицы
находятся в первичной памяти. Но поскольку они занимают
много места в памяти, то ограничивается количество процессов,
которое система в состоянии поддерживать в текущий период,
то есть снижается пропускная способность. Поэтому разработчики операционной системы должны принимать компромиссные решения, чтобы обеспечить эффективную загрузку системы
и оперативное предоставление услуг пользователям.
Только небольшая часть процедур и данных каждого процесса размещается в первичной памяти одновременно. Остальная часть хранится на устройствах внешней памяти с быстрым
доступом. Системы виртуальной памяти требуют наличия таблиц отображения виртуальных адресов на реальные адреса.
Главная проблема разработчиков систем виртуальной памяти –
минимизация количества информации отображения, которая
должна быть в первичной памяти. Первичная память разделяется на страничные кадры того же самого размера, что и виртуальные страницы. Поступающая в первичную память страница
может быть помещена в любой свободный страничный кадр.
3.8. Стратегии управления виртуальной памятью
Выше были перечислены стратегии управления реальной
памятью, а именно: стратегии управления вталкиванием (выборкой), размещением и выталкиванием (замещением) инфор-

93
Глава 3. Управление памятью
мации. Рассмотрим эти процессы применительно к системам
виртуальной памяти [1, 2, 5].
Стратегии вталкивания. Цель такой стратегии – определить,
в какой момент следует переписать страницу или сегмент из вторичной памяти в первичную. Применяется вталкивание по за-
просу (по требованию), когда система ждет ссылки на страницу
или сегмент от выполняющегося процесса и после появления
ссылки начинает переписывать данную страницу или сегмент
в первичную память. Вталкивание с учреждением (опережением) предполагает, что система заблаговременно определяет,
к каким страницам или сегментам будет обращаться процесс.
Если вероятность обращения высока и в первичной памяти есть
свободное место, то соответственно страницы или сегменты будут переписываться в основную память еще до того, как к ним
будет явно производиться обращение.
Стратегии размещения. Цель стратегии – определить, в какое место первичной памяти помещать поступающую страницу
или сегмент. В системах со страничной организацией решение
о размещении принимается достаточно тривиально, так как поступающая страница может быть помещена в любой свободный
страничный кадр.
Стратегии выталкивания. Цель стратегии выталкивания –
решить, какую страницу или сегмент следует удалить из первичной памяти, чтобы освободить место для помещения поступающей страницы или сегмента, если первичная память
полностью занята.
Известны следующие стратегии выталкивания страниц:
• принцип оптимальности – для обеспечения оптимальных
скоростных характеристик и эффективного использования ресурсов следует заменять ту страницу, к которой в дальнейшем не
будет новых обращений в течение наиболее длительного времени;
• выталкивание случайной страницы – в реальных системах применяется достаточно редко;
• первой выталкивается первая пришедшая страница;
• первой выталкивается дольше всего не использовавшаяся страница;
• первой выталкивается наименее часто использовавшаяся
страница;

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Процесс
-
среднее время подкачки страниц
94
• первой выталкивается не использовавшаяся в последнее
время страница;
• рабочее множество.
Рабочее множество – это подмножество страниц, к которым
процесс активно обращается. Считается, что для обеспечения
эффективного выполнения программы необходимо, чтобы ее
рабочее множество находилось в первичной памяти [1, 2, 5].
В противном случае может возникнуть режим чрезмерно интенсивной подкачки страниц, так называемое пробуксовывание,
или трешинг, поскольку программа будет многократно подкачивать одни и те же страницы из внешней памяти.
Недостаток этой стратегии состоит в том, что рабочие множества меняются во времени, причем следующее рабочее множество процесса может существенно отличаться от предыдущего.
Стратегия управления памятью должна обязательно учитывать
этот факт, чтобы избегать перегрузок первичной памяти и возникающего вследствие этого трешинга.
Подкачка страниц может производиться по запросу и с уч-
реждением.
В операционных системах часто для оценки использования
памяти процессом используется понятие «пространство-время» (рис. 3.3).
работает
Рис. 3.3. Реализация понятия «пространство-время»
при подкачке страниц по запросу

95
При подкачке страниц по запросу процесс должен накапливать страницы по одной. Поэтому периоды ожидания будут все дороже и дороже, так как ожидающие процессы будут
занимать все больший объем памяти [1, 2, 5].
Подкачка страниц с учреждением – это более перспективный метод. Суть состоит в том, что операционная система заблаговременно пытается предсказать, какие страницы потребуются процессу, а затем загружает их в свободное место памяти.
Пока процесс работает с текущими страницами, операционная
система готовит к использованию следующие страницы. Время
выполнения процесса значительно уменьшается.
Глава 3. Управление памятью
3.9. Заключение о методах управления
памятью
Рассматривая сложный вопрос, касающийся управления
памятью вычислительных систем, можно подвести следующие итоги.
Среди основных методов распределения памяти существуют методы без использования внешней памяти и методы с использованием внешней памяти. К первым относят подметоды
с фиксированными разделами, с динамическими разделами,
с перемещаемыми разделами. Но все эти подметоды не могут
распределять в памяти вычислительной системы программы,
размер которых превышает имеющуюся в наличии свободную
память. Для этого предназначены методы с использованием
внешней памяти. Один из этих методов основан на использовании оверлейных структур. Здесь программа разбивалась
на части – оверлеи. Затем все оверлеи, кроме нулевого, размещались на диске. А с нулевого оверлея и начиналось выполнение программы. При завершении нулевого оверлея вызывался
следующий оверлей с диска в оперативную память и т.д., пока
все оверлеи данной программы не были завершены. Все это
привело к развитию виртуальной памяти. На ее основе появились следующие методы распределения памяти: страничная,
сегментная и странично-сегментная.
Совокупность виртуальных адресов процесса образует виртуальное адресное пространство. Каждый процесс имеет соб-

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
96
ственное виртуальное адресное пространство. Максимальный
размер виртуального адресного пространства ограничивается
разрядностью адреса, присущей данной архитектуре компьютера, и, как правило, не совпадает с объемом физической памяти, имеющимся в компьютере.
Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды. Переход от виртуальных адресов к физическим может осуществляться двумя
способами. В первом случае замену виртуальных адресов на
физические делает специальная системная программа – перемещающий загрузчик. Перемещающий загрузчик на основании имеющихся у него исходных данных о начальном адресе
физической памяти, в которую предстоит загружать программу, и информации, предоставленной транслятором об адресно-зависимых константах программы, выполняет загрузку
программы, совмещая ее с заменой виртуальных адресов физическими.
Второй способ заключается в том, что программа загружается в память в неизмененном виде в виртуальных адресах,
при этом операционная система фиксирует смещение действительного расположения программного кода относительно
виртуального адресного пространства. Во время выполнения
программы при каждом обращении к оперативной памяти
выполняется преобразование виртуального адреса в физический. Второй способ является более гибким, он допускает перемещение программы во время ее выполнения, в то время
как перемещающий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти. Вместе
с тем использование перемещающего загрузчика уменьшает
накладные расходы, так как преобразование каждого виртуального адреса происходит только один раз во время загрузки,
а во втором случае – каждый раз при обращении по данному
адресу.
В некоторых случаях (обычно в специализированных системах), когда заранее точно известно, в какой области оперативной памяти будет выполняться программа, транслятор выдает исполняемый код сразу в физических адресах.

97
Глава 3. Управление памятью
Разновидностью виртуальной памяти является свопинг.
При свопинге, в отличие от рассмотренных ранее методов реализации виртуальной памяти, процесс перемещается между
памятью и диском целиком, то есть в течение некоторого времени процесс может полностью отсутствовать в оперативной
памяти. Существуют различные алгоритмы выбора процессов
на загрузку и выгрузку, а также различные способы выделения оперативной и дисковой памяти загружаемому процессу.
Таким образом, для данных, хранящихся в оперативной памяти, существуют три вида адресов: физический (он же основной – это номер ячейки в оперативной памяти), виртуальный
(вырабатывается транслятором) и символьные имена (задаваемые непосредственно пользователем). Виртуальные адреса вырабатывает транслятор, переводящий программу на машинный
язык. Так как во время трансляции в общем случае неизвестно,
в какое место оперативной памяти будет загружена программа,
то транслятор присваивает переменным и командам виртуальные (условные) адреса, обычно считая по умолчанию, что программа будет размещена начиная с нулевого адреса. Замену
виртуального адреса физическим может осуществлять перемещающий загрузчик. Кроме того, может осуществляться загрузка программы в память в виртуальных адресах со смещением
действительного расположения программного кода относительно виртуального адресного пространства.
Управление памятью в многопроцессорных вычислительных системах содержит еще ряд проблем, которые затрагиваются в главе 4.

ГЛАВА 4.
Параллелизм в операционных системах
4.1. Основные понятия и определения
Параллельной называется такая обработка на ЭВМ, которая предусматривает одновременное выполнение программ
или их отдельных частей на независимых устройствах.
Известны следующие базовые способы введения параллелизма в архитектуру ЭВМ [12, 13, 14]:
• конвейерная обработка – применение методов конвейерной сборки для повышения производительности арифметикологического (АЛУ) и управляющего (УУ) устройства;
• функциональная обработка – предоставление нескольким
независимым устройствам возможности параллельного выполнения различных функций (арифметические и логические операции, приращение и т.д.), а также обеспечение взаимодействия
с различными данными;
• матричная обработка – производится большим числом
идентичных процессорных элементов с общей системой управления и организованных в виде матриц, причем все процессорные элементы выполняют одну и ту же операцию, но с различными данными;
• мультипроцессорная обработка – осуществляется несколькими процессорами, каждый из которых имеет свои команды,
а взаимодействие процессоров осуществляется через общее поле
памяти.
Алгоритмические структуры отличаются друг от друга содержанием вычислительных процедур и отношением их следования
при выполнении программ. Вычислительная процедура, в свою
очередь, может состоять из других вычислительных процедур,
поэтому в связи с этим говорят о детализации параллелизма. Де-
тализацию называют «мелкозернистой», если вычислительные
процедуры реализуются одной командой, и «крупнозернистой»,
если эти процедуры состоят из других процедур. Используется
также комбинированная детализация [12].
Параллелизм является весьма емким понятием и имеет различные формы. Современные операционные системы имеют

99
большие возможности для организации параллельных и распределенных вычислений. Одной из важных проблем в этом
плане является проблема синхронизации взаимодействия параллельных вычислительных процессов. Формы параллелизма
не только связаны с понятиями мультипроцессорных вычислительных систем, но затрагивают и однопроцессорные системы,
в которых также имеют место параллельные процессы. В этой
области много проблем связано с обеспечением эффективной
работы взаимодействующих процессов, в частности так называемых асинхронных параллельных процессов (см. подраздел 4.3).
При организации параллельного выполнения нескольких
процессов одними из главных функций операционной системы являются решение сложной задачи корректного распределения ресурсов между выполняющимися процессами и обеспечение их взаимной синхронизации и обмена данными [4].
Глава 4. Параллелизм в операционных системах
4.2. Типы архитектуры систем
параллельной обработки
Максимальное распараллеливание достигается, когда все
операции, которые можно выполнять параллельно, распределены по отдельным процессорам. Параллелизм в многопроцессорных системах имеет свои особенности и проблемы, которые
рассмотрены отдельно далее. Но главная цель мультипроцессорных ВС – это повышение производительности.
Любая вычислительная система (будь то супер-ЭВМ или
персональный компьютер) достигает своей наивысшей производительности благодаря использованию высокоскоростных
элементов и параллельному выполнению большого числа операций. Именно возможность параллельной работы различных
устройств системы (работы с перекрытием) является основой
ускорения основных операций [1, 4, 6].
На протяжении всей истории развития вычислительной
техники делались попытки найти какую-то общую классификацию, под которую подпадали бы все возможные направления
развития компьютерных архитектур. Ни одна из таких классификаций не могла охватить все разнообразие разрабатываемых

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
100
архитектур вычислительных систем и не выдерживала испытания временем. Тем не менее в научный оборот попали и широко используются ряд терминов и понятий, связанных с этим
вопросом.
Параллельные ЭВМ часто подразделяются по известной классификации Флинна на машины типа SIMD (Single Instruction
Multiple Data – с одним потоком команд при множественном потоке данных) и MIMD (Multiple Instruction Multiple Data – с множественным потоком команд при множественном потоке данных). Как и любая другая, приведенная выше классификация
несовершенна: существуют машины, прямо в нее не попадающие, имеются также важные признаки, которые в этой классификации не учтены. В частности, к машинам типа SIMD часто
относят векторные процессоры, хотя их высокая производительность зависит от другой формы параллелизма – конвейерной
организации машины. Многопроцессорные векторные системы
типа Cray Y-MP состоят из нескольких векторных процессоров,
и поэтому могут быть названы MSIMD (Multiple SIMD). Классификация Флинна не делает различия по другим важным для вычислительных моделей характеристикам, например по уровню
«зернистости» параллельных вычислений и методам синхронизации.
В настоящее время, как правило, выделяют четыре основных типа архитектуры систем параллельной обработки.
1. Конвейерная и векторная обработка. Суть конвейерной
обработки заключается в выделении отдельных этапов выполнения общей операции, причем на каждом этапе один процессор, выполнив свою работу, передает результат следующему
процессору, одновременно принимая новую порцию входных
данных. Получаем очевидный выигрыш в скорости обработки
за счет совмещения прежде разнесенных во времени операций. Производительность при этом возрастает благодаря тому,
что одновременно на различных ступенях конвейера выполняются несколько операций. Конвейеризация эффективна только тогда, когда загрузка конвейера близка к полной, а скорость подачи новых операндов соответствует максимальной
производительности конвейера. Если происходит задержка,
то параллельно будет выполняться меньше операций и сум-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
