Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системное программное обеспечение. Учебник

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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. Конвейерная и векторная обработка. Суть конвейерной обработки заключается в выделении отдельных этапов выпол­нения общей операции, причем на каждом этапе один процес­сор, выполнив свою работу, передает результат следующему процессору, одновременно принимая новую порцию входных данных. Получаем очевидный выигрыш в скорости обработки за счет совмещения прежде разнесенных во времени опера­ций. Производительность при этом возрастает благодаря тому, что одновременно на различных ступенях конвейера выполня­ются несколько операций. Конвейеризация эффективна толь­ко тогда, когда загрузка конвейера близка к полной, а ско­рость подачи новых операндов соответствует максимальной производительности конвейера. Если происходит задержка, то параллельно будет выполняться меньше операций и сум-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]