Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Моделирование многозадачности

Поиск

При использовании многозадачности повышается эффективность загрузки центрального процессора.

В некоторых случаях, когда все задачи мультипрограммной смеси являются вычислительными (то есть, выполняют относительно мало операций ввода-вывода, разгружающих центральный процессор), для хорошей загрузки процессора может оказаться достаточным всего 3-5 задач.

Однако если вычислительная система загружена выполнением интерактивных задач, то для эффективного использования процессора может потребоваться уже несколько де­сятков, а то и сотен задач.

Большое количество задач, необходимое для высокой загрузки процессора, тре­бует большого объема оперативной памяти. В условиях, когда для обеспечения приемлемого уровня мультипрограммирования имеющейся оперативной памяти недостаточно, был предложен метод организации вычислительного процесса, при котором образы некоторых процессов целиком или частично временно вы­гружаются на диск.

В мультипрограммном режиме помимо активного процесса, то есть процесса, коды которого в настоящий момент интерпретируются процессором, имеются приостановленные процессы, находящиеся в ожидании завершения ввода-выво­да или освобождения ресурсов, а также процессы в состоянии готовности, стоя­щие в очереди к процессору. Образы таких неактивных процессов могут быть временно, до следующего цикла активности, выгружены на диск. Несмотря на то, что коды и данные процесса отсутствуют в оперативной памяти, ОС «знает» о его существовании и в полной мере учитывает это при распределении процессорно­го времени и других системных ресурсов. К моменту, когда подходит очередь выполнения выгруженного процесса, его образ возвращается с диска в оператив­ную память. Если при этом обнаруживается, что свободного места в оперативной памяти не хватает, то на диск выгружается другой процесс.

Такая подмена (виртуализация) оперативной памяти дисковой памятью позво­ляет повысить уровень мультипрограммирования — объем оперативной памяти компьютера теперь не столь жестко ограничивает количество одновременно вы­полняемых процессов, поскольку суммарный объем памяти, занимаемой образа­ми этих процессов, может существенно превосходить имеющийся объем опера­тивной памяти.

Виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим свойствами, которы­ми он в действительности не обладает. В данном случае в распоряжение приклад­ного программиста предоставляется виртуальная оперативная память, размер которой намного превосходит всю имеющуюся в системе реальную оперативную память. Пользователь пишет программу, а транслятор, используя виртуальные адреса, переводит ее в машинные коды так, как будто в распоряжении програм­мы имеется однородная оперативная память большого объема. В действитель­ности же все коды и данные, используемые программой, хранятся на дисках и только при необходимости загружаются в реальную оперативную память. По­нятно, однако, что работа такой «оперативной памяти» происходит значительно медленнее.

Виртуализация оперативной памяти осуществляется совокупностью программ­ных модулей ОС и аппаратных схем процессора и включает решение следующих задач:

► размещение данных в запоминающих устройствах разного типа, например часть кодов программы — в оперативной памяти, а часть — на диске;

► выбор образов процессов или их частей для перемещения из оперативной па­мяти на диск и обратно;

► перемещение по мере необходимости данных между памятью и диском;

► преобразование виртуальных адресов в физические.

Очень важно то, что все действия по организации совместного использования диска и оперативной памяти - выделение места для перемещаемых фрагментов, настройка адресов, выбор, кандидатов на загрузку и выгрузку — осуществляются операционной системой и аппаратурой процессора автоматически, без участия программиста, и никак не сказываются на логике работы приложений.

 

Уже достаточно давно пользователи столкнулись с проблемой размещения в памяти про­граммы, размер которой превышает имеющуюся в наличии свободную память. Одним из первых решений было разбиение программы на части, называемые оверлеями. Когда пер­вый оверлей заканчивал свое выполнение, он вызывал другой оверлей. Все оверлеи храни­лись на диске и перемещались между памятью и диском средствами операционной системы на основании явных директив программиста, содержащихся в программе. Этот способ, несмотря на внешнее сходство, имеет принципиальное отличие от виртуальной па­мяти, заключающееся в том, что разбиение программы на части и планирование их загруз­ки в оперативную память должны были выполняться заранее программистом во время написания программы.

 

Виртуализация памяти может быть осуществлена на основе двух различных под­ходов:

свопинг (swapping) — образы процессов выгружаются на диск и возвращаются в оперативную память целиком;

виртуальная память (virtual memory) — между оперативной памятью и дис­ком перемещаются части (сегменты, страницы и т. п.) образов процессов.

Свопинг представляет собой частный случай виртуальной памяти и, следователь­но, более простой в реализации способ совместного использования оператив­ной памяти и диска.

Однако подкачке свойственна избыточность, когда ОС ре­шает активизировать процесс, для его выполнения, как правило, не требуется за­гружать в оперативную память все его сегменты полностью - достаточно загрузить небольшую часть кодового сегмента с подлежащей выполнению инструкцией и частью сегментов данных, с которыми работает эта инструкция, а так­же отвести место под сегмент стека. Аналогично при освобождении памяти для загрузки нового процесса очень часто вовсе не требуется выгружать другой про­цесс на диск целиком, достаточно вытеснить на диск только часть его образа. Перемещение избыточной информации замедляет работу системы, а также при­водит к неэффективному использованию памяти. Кроме того, системы, поддер­живающие свопинг, имеют еще один очень существенный недостаток: они не способны загрузить для выполнения процесс, виртуальное адресное пространст­во которого превышает имеющуюся в наличии свободную память.

Именно из-за указанных недостатков свопинг как основной механизм управле­ния памятью почти не используется в современных ОС.

В некоторых современных ОС, например версиях UNIX, основанных на коде SVR4, ме­ханизм свопинга используется как дополнительный к виртуальной памяти, включаю­щийся только при серьезных перегрузках системы.

На смену ему пришел более совершенный механизм виртуальной памяти, который, как уже было сказано, заключается а том, что при нехватке места в оперативной памяти на диск выгружаются только части образов процессов.

Ключевой проблемой виртуальной памяти, возникающей в результате много­кратного изменения местоположения в оперативной памяти образов процессов или их частей, является преобразование виртуальных адресов в физические. Ре­шение этой проблемы, в свою очередь, зависит от того, какой способ структури­зации виртуального адресного пространства принят в данной системе управ­ления памятью. В настоящее время все множество реализации виртуальной памяти может быть представлено тремя классами.

Страничная виртуальная память организует перемещение данных между па­мятью и диском страницами — частями виртуального адресного пространст­ва, фиксированного и сравнительно небольшого размера.

Сегментная виртуальная память предусматривает перемещение данных сег­ментами — частями виртуального адресного пространства произвольного раз­мера, полученными с учетом смыслового значения данных.

Сегментно-страничная виртуальная память использует двухуровневое деле­ние: виртуальное адресное пространство делится на сегменты, а затем сегмен­ты делятся на страницы. Единицей перемещения данных здесь является страница. Этот способ управления памятью объединяет в себе элементы обоих предыдущих подходов.

Для временного хранения сегментов и страниц на диске отводится либо специ­альная область, либо специальный файл, которые во многих ОС по традиции продолжают называть областью, или файлом свопинга, хотя перемещение ин­формации между оперативной памятью и диском осуществляется уже не в фор­ме полного замещения одного процесса другим, а частями. Другое популярное название этой области — страничный файл (page file, или paging file). Текущий размер страничного файла является важным параметром, оказывающим влияние на возможности операционной системы: чем больше страничный файл, тем боль­ше приложений может одновременно выполнять ОС (при фиксированном раз­мере оперативной памяти). Размер страничного файла в современных ОС является настраиваемым парамет­ром, который выбирается администратором системы для достижения компро­мисса между уровнем мультипрограммирования и быстродействием системы.

Страничное распределение

Рис. 13.4. Страничное распределение памяти

 

На рис. 13.4 показана схема страничного распределения памяти. Виртуальное адресное пространство каждого процесса делится на части одинакового, фикси­рованного для данной системы размера, называемые виртуальными страницами (virtual pages). В общем случае размер виртуального адресного пространства про­цесса не кратен размеру страницы, поэтому последняя страница каждого процес­са дополняется фиктивной областью.

Вся оперативная память машины также делится на части такого же размера, на­зываемые физическими страницами (или блоками, или кадрами).

Размер страницы выбирается равным степени двойки: 512, 1024, 4096 байт и т. д. Это позволяет упростить механизм преобразования адресов.

При создании процесса ОС загружает в оперативную память несколько его вир­туальных страниц (начальные страницы кодового сегмента и сегмента данных). Копия всего виртуального адресного пространства процесса находится на диске. Смежные виртуальные страницы не обязательно располагаются в смежных фи­зических страницах.

Для каждого процесса операционная система создает таб­лицу страниц — информационную структуру, содержащую записи обо всех вир­туальных страницах процесса.

Запись таблицы, называемая дескриптором страницы, включает следующую, ин­формацию:

номер физической страницы, в которую; загружена: данная виртуальная страница;.

признак присутствия, устанавливаемый в единицу, если виртуальная страни­ца находится в оперативной памяти;

признак модификации страницы, который устанавливается в единицу вся­кий раз, когда производится запись по адресу, относящемуся к данной стра­нице;

признак обращения к странице, называемый также битом доступа, который устанавливается в единицу при каждом обращении по адресу, относящемуся к данной странице.

Признаки присутствия, модификации и обращения в большинстве моделей со­временных процессоров устанавливаются аппаратно, схемами процессора при выполнении операции с памятью. Информация из таблиц страниц используется для решения вопроса о необходимости перемещения той или иной страницы ме­жду памятью и диском, а также для преобразования виртуального адреса в физи­ческий. Сами таблицы страниц, также как и описываемые ими страницы, разме­щаются в оперативной памяти. Адрес таблицы страниц включается в контекст соответствующего процесса. При активизации очередного процесса операцион­ная система загружает адрес его таблицы страниц в специальный регистр про­цессора.

При каждом обращении к памяти выполняется поиск номера виртуальной стра­ницы, содержащей требуемый адрес, затем по этому номеру определяется нуж­ный элемент таблицы страниц, и из него извлекается описывающая страницу информация. Далее анализируется признак присутствия, и, если данная вирту­альная страница находится в оперативной памяти, то выполняется преобразова­ние виртуального адреса в физический, то есть виртуальный адрес заменяется указанным в записи таблицы физическим адресом. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит так называемое страничное прерывание. Выполняющийся процесс переводится в состояние ожи­дания, и активизируется другой процесс из очереди процессов, находящихся в со­стоянии готовности. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу (для этого операционная система должна помнить положение вытесненной страницы в страничном файле диска) и пытается загрузить ее в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то на основании принятой в данной системе стратегии замещения страниц решается вопрос о том, какую страницу следует выгрузить из оперативной памяти.

После того как выбрана страница, которая должна покинуть оперативную па­мять, обнуляется ее бит присутствия и анализируется ее признак модификации. Если выталкиваемая страница за время последнего пребывания в оперативной памяти была модифицирована, то ее новая версия должна быть переписана на диск. Если нет, то принимается во внимание, что на диске уже имеется предыду­щая копия этой виртуальной страницы, и никакой записи на диск не произво­дится. Физическая страница объявляется свободной. Из соображений безопас­ности в некоторых системах освобождаемая страница обнуляется, с тем, чтобы невозможно было использовать содержимое выгруженной страницы.

Для хранения информации о положении вытесненной страницы в страничном файле ОС может использовать поля таблицы страниц или же другую системную структуру данных (например, дескриптор сегмента при сегментно-страничной организации виртуальной памяти).

Виртуальный адрес при страничном распределении может быть представлен в виде пары (р, Sv), где р — порядковый номер виртуальной страницы процесса (нумерация страниц начинается с 0), a Sv — смещение в пределах виртуальной страницы. Физический адрес также может быть представлен в виде пары (n, Sf), где n — номер физической страницы, a Sf — смещение в пределах физической страницы. Задача подсистемы виртуальной памяти состоит в отображении (р, Sv) в (n, Sf).

В пределах страницы непрерывная по­следовательность виртуальных адресов однозначно отображается в непрерыв­ную последовательность физических адресов, а значит, смещения в виртуальном и физическом адресах Sv и S f равны между собой.

Отсюда следует простая схема преобразования виртуального адреса в физический. Младшие разряды физического адреса, соответствующие смещению, получаются переносом такого же количества младших разрядов из виртуального адреса. Старшие разряды физического адреса, соответствующие номеру физической страницы, определяются из таблицы страниц, в которой указывается соответствие виртуальных и физических страниц.

Итак, пусть произошло обращение к памяти по некоторому виртуальному адресу. Аппаратными схемами процессора выполняются следующие действия:

1. Из специального регистра процессора извлекается адрес AT таблицы страниц активного процесса. На основании начального адреса таблицы страниц, номера виртуальной страницы р (старшие разряды виртуального адреса) и длины отдельной записи в таблице страниц L (системная константа) определяется адрес нужного дескриптора в таблице страниц: a=AT+(p*L).

2. Из этого дескриптора извлекается номер соответствующей физической стра­ницы — n.

3. К номеру физической страницы присоединяется смещение s (младшие разряды виртуального адреса).

Типичная машинная инструкция требует 3-4 обращений к памяти (выборка команды, извлечение операндов, запись результата). И при каждом обращении происходит либо преобразование виртуального адреса в физический, либо обра­ботка страничного прерывания. Время выполнения этих операций в значитель­ной степени влияет на общую производительность вычислительной системы, поэтому столь большое внимание разработчиков уделяется оптимизации вирту­альной памяти.

Именно для уменьшения времени преобразования адресов во всех процессорах предусмотрен аппаратный механизм получения физического адреса по виртуальному. С той же целью размер страницы выбирается равным степени двойки, благодаря чему двоичная запись адреса легко разделяется на номер страницы и смещение, и в результате в процедуре преобразования адресов более длительная операция сложения заменяется операцией присоединения (конкатенации).

Другим важным фактором, влияющим на производительность системы, является частота страничных прерываний, на которую, в свою очередь, влияют размер страницы и принятые в данной системе правила выбора страниц для выгрузки и загрузки. При неправильно выбранной стратегии замещения страниц могут воз­никать ситуации, когда система тратит большую часть времени впустую, на подкачку страниц из оперативной памяти на диск и обратно.

При выборе страницы на выгрузку могут быть использованы различные критерии, смысл которых сводится к одному: на диск выталкивается страница, к которой в будущем начиная с данного момента дольше всего не будет обращений. Поскольку точно предсказать ход вычислительного процесса невозможно, то не­возможно точно определить страницу, подлежащую выгрузке.



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 338; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.89.70 (0.009 с.)