Тема 3. Распределение процессорного времени.
Задание №4. Диаграмма состояний процесса при вытесняющей диспетчеризации.
Диспетчеризация - краткосрочное планирование.
Диспетчеризация с перераспределением процессорного времени между задачами, то есть вытесняющая многозадачность (preemptive multitasking) — это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается диспетчером задач, а не самой активной задачей. При вытесняющей многозадачности механизм диспетчеризации задач целиком сосредоточен в операционной системе, и программист может писать свое приложение, не заботясь о том, как оно будет выполняться параллельно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения текущей задачи, сохраняет ее контекст в дескрипторе задачи, выбирает из очереди готовых задач следующую и запускает ее на выполнение, предварительно загрузив ее контекст. Дисциплина RR и многие другие, построенные на ее основе, относятся к вытесняющим.
Тема 4. Непрерывные способы распределения оп.
Задание №6. Способы преобразования виртуального адреса в физический при относительной адресации.
Тема 5. Разрывные способы распределения оп (виртуальная память).
Задание №8. Сегментная организация виртуальной памяти. Понятие и преимущества.
Для каждой задачи память сегментной организации предоставляет возможность разместить в ней сегменты разной длины, содержащие информацию задачи. В этих сегментах находятся законченные программные объекты – модули процедур и модули данных. При программировании предполагается, что все эти объекты находятся на одном уровне структурированной виртуальной памяти задачи и в программе решения задачи не требуется осуществлять их перемещение между оперативной и внешней памятью (это перемещение будет выполнять операционная система). То есть виртуальная память задачи структурирована как набор модулей (сегментов).
Сегменты задачи могут располагаться в любом месте физической оперативной памяти, защищены друг от друга и от сегментов других задач и вызываются при крайне важности их использования в задаче в оперативную память (на свободное место или вместо каких-либо других сегментов этой или других задач) операционной системой.
Виртуальные адреса, используемые в программе задачи, состоят из виртуального номера сегмента и смещения (номера ячейки) в данном сегменте. Виртуальный сегментный адрес аппаратно преобразуется в физический адрес при непосредственном обращении в оперативную память с использованием таблицы соответствия виртуальных номеров сегментов задачи начальным физическим адресам их расположения в оперативной памяти. К такому физическому адресу, соответствующему номеру сегмента в виртуальном адресе, прибавляется величина смещения, указанная в виртуальном адресе. Полученный физический адрес используется для непосредственного обращения к оперативной памяти.
В указанной таблице соответствия помещено также значение длины сегмента͵ используемого в виртуальном адресе . Указание смещения в сегменте, большего этого значения не допускается. Таким образом обеспечивается и защита сегментов друг от друга.
Существенным преимуществом сегментной организации виртуальной памяти является возможность уникальной защиты помещаемого в сегмент программного объекта по способу обращения к нему. Так, к примеру, модуль процедуры должен быть защищен от возможности осуществления записи в него; запись в модуль данных должна быть либо запрещена, либо разрешена. Информация об уникальной защите сегмента также размещается в таблице соответствия. Там же размещается и признак наличия виртуального сегмента в оперативной памяти.
Линейную таблицу соответствия виртуальных номеров сегментов задачи и их мест расположения в физической оперативной памяти (длина такой таблицы соответствует количеству виртуальных сегментов задачи) создает операционная система ЭВМ, поскольку именно она размещает требуемые сегменты в оперативной памяти, передавая их в нее из внешней памяти (выполняется также обратная перепись во внешнюю память сегментов, содержимое которых изменилось, в случае, в случае если их место расположения отведено для размещения новых сегментов. Размещение таблицы соответствия в оперативной памяти требует при замене виртуального адреса на физический одного дополнительного обращения к оперативной памяти, то есть 100% накладных расходов. Существенно избежать этих накладных расходов удается за счёт размещения информации из таблицы соответствия в быстродействующих регистрах, в каждом из которых находится как виртуальный номер сегмента͵ так и алрес его размещения в оперативной памяти. Ассоциативный поиск адреса размещения виртуального сегмента в оперативной памяти происходит в этих регистрах по его виртуальному номеру практически без задержки. Свойство “локальности” программы позволяет почти всегда успешно выполнять такой поиск и осуществлять автоматическую замену виртуального адреса на физический при относительно небольшом числе регистров, содержащих информацию из таблицы соответствия. Редкий “промах” приводит к переписи нужной строки из таблицы соответствия, находящейся в оперативной памяти, в регистр “быстродействующей” таблицы. Выбор номера регистра производится аппаратно.
Значительным недостатком организации виртуальной памяти, разделяемой на сегменты разной длины, является наличие “внешней фрагментации” оперативной памяти, то есть незанятых участков памяти между сегментами. Этот недостаток проявляется при крайне важно сти расположить в памяти новый сегмент задачи и отсутствии свободного фрагмента оперативной памяти для его размещения. В этом случае приходится принимать меры к освобождению для нового виртуального сегмента участка памяти крайне важно й длины за счёт возможной подвижки в оперативной памяти других виртуальных сегментов или переписи информации (если она изменялась) из освобождаемого участка памяти во внешнюю память.
6. Практическое задание.
Составить блок-схему алгоритма варианта задания и описать ее.
Задание №17. Виртуальная память: оптимальный алгоритм.
Наилучший алгоритм замещения страниц несложно описать, но совершенно невозможно реализовать. В нем все происходит следующим образом. На момент возникновения ошибки отсутствия страницы в памяти находится определенный набор страниц. К некоторым из этих страниц будет осуществляться обращение буквально из следующих команд (эти команды содержатся на странице). К другим страницам обращения может не быть и через 10, 100 или, возможно, даже через 1000 команд. Каждая страница может быть помечена количеством команд, которые должны быть выполнены до первого обращения к странице. Оптимальный алгоритм замещения страниц гласит, что должна быть удалена страница, имеющая пометку с наибольшим значением. Если какая-то страница не будет использоваться на протяжении 8 миллионов команд, а другая какая-нибудь страница не будет использоваться на протяжении 6 миллионов команд, то удаление первой из них приведет к ошибке отсутствия страницы, в результате которой она будет снова выбрана с диска в самом отдаленном будущем. Компьютеры, как и люди, пытаются по возможности максимально отсрочить неприятные события.
Единственной проблемой такого алгоритма является невозможность его реализации. К тому времени, когда произойдет ошибка отсутствия страницы, у операционной системы не будет способа узнать, когда каждая из страниц будет востребована в следующий раз. (Подобная ситуация наблюдалась и ранее, когда мы рассматривали алгоритм планирования, выбирающий сначала самое короткое задание, — как система может определить, какое из заданий самое короткое?) Тем не менее при прогоне программы на симуляторе и отслеживании всех обращений к страницам появляется возможность реализовать оптимальный алгоритм замещения страниц при втором прогоне, воспользовавшись информацией об обращении к страницам, собранной во время первого прогона. Таким образом появляется возможность сравнить производительность осуществимых алгоритмов с наилучшим из возможных. Если операционная система достигает производительности, скажем, на 1% хуже, чем у оптимального алгоритма, то усилия, затраченные на поиски более совершенного алгоритма, дадут не более 1% улучшения. Чтобы избежать любой возможной путаницы, следует уяснить, что подобная регистрация обращений к страницам относится только к одной программе, прошедшей оценку, и только при одном вполне определенном наборе входных данных.
Таким образом, полученный в результате этого алгоритм замещения страниц относится только к этой конкретной программе и к конкретным входным данным. Хотя этот метод и применяется для оценки алгоритмов замещения страниц, в реальных системах он бесполезен. Далее мы будем рассматривать те алгоритмы, которые действительно полезны для реальных систем.
