![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Данный метод представляет собой комбинацию страничного и сегментного распределения памяти и, вследствие этого, сочетает в себе достоинства обоих подходов. Виртуальное пространство процесса делится на сегменты, а каждый сегмент в свою очередь делится на виртуальные страницы, которые нумеруются в пределах сегмента. Оперативная память делится на физические страницы равного размера, кратные степени двойки.
Загрузка процесса выполняется операционной системой постранично, при этом часть страниц размещается в оперативной памяти, а часть на диске. Для каждого сегмента создаётся своя таблица страниц, структура которой полностью совпадает со структурой таблицы страниц, используемой при страничном распределении. Для каждого процесса создаётся таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. Адрес таблицы сегментов загружается в специальный регистр процессора, когда активизируется соответствующий процесс.
Виртуальный адрес в такой системе представляет собой тройку (s,p, d), где s — номер сегмента, р — номер страницы в сегменте, d — смещение в странице.
Преобразование виртуального адреса в физический выполняется следующим образом. По номеру s из таблицы сегментов выбирается запись, соответствующая запрашиваемому сегменту. По имеющейся в записи информации выполняется проверка прав доступа. Далее из записи выбирается адрес таблицы страниц данного сегмента и по номеру р из таблицы страниц выбирается запись, соответствующая заданной странице. Из выбранной записи извлекается физический адрес начала страницы р', к которому добавляется (конкатенируется) смещение d в странице.
Как молено видеть, одно обращение к памяти требует минимум трёх реальных обращений, что крайне неэффективно. Механизм приобретает эффективность лишь с применением кэширования и ассоциативной памяти для хранения информации из таблиц страниц и сегментов.
34. Проблема предотвращения «пробуксовки» системы
Идея эффективной работы механизма виртуальной памяти основана на том факте, что любой программе для своей работы в течение небольшого интервала времени требуется лишь небольшая часть её программного кода. Иными словами, после загрузки в память очередной страницы (сегмента) некоторое время обращения к памяти будут осуществляться в пределах данной страницы без необходимости загрузки дополнительных страниц.
Чем больше страниц (сегментов) данной программы одновременно находится в оперативной памяти, тем меньше прерываний по отсутствию страниц будет генерироваться, тем быстрее будет выполняться программа. К сожалению, в некоторых «предельных» случаях это правило нуждается в коррекции.
Каждое прерывание по отсутствию страницы заставляет программу войти в состояние блокировки и ждать, пока системой будет загружена необходимая страница. Загрузка страницы может быть выполнена, как правило, лишь на место какой-то другой страницы, уже имеющейся в памяти. Поскольку заранее невозможно предсказать какая из страниц понадобится в следующий момент, выбор страницы, которая будет вытолкнута из оперативной памяти, представляет серьёзную проблему.
Теоретически любая программа может выполняться в системе лишь на одной странице, перезагружая её по мере необходимости. Однако при этом время, расходуемое на перезагрузку страницы, будет на несколько порядков больше времени, в течение которого выполняются команды программы. В результате производительность системы резко упадёт. Такая ситуация называется «пробуксовкой системы».
Замечено однако, что на протяжении своего жизненного цикла в системе (времени выполнения) в течение определённых интервалов времени каждая программа обращается лишь к ограниченному набору своих адресов памяти. Это свойство получило название локальности.
Если обеспечить загрузку в оперативную память всех страниц, необходимых программе для работы на данном этапе, то в течение некоторого интервала времени программа будет выполняться, не генерируя прерываний по отсутствию страниц, то есть так, как будто весь её код находится в оперативной памяти.
Такое множество страниц, обеспечивающее программе работу без прерываний по отсутствию страниц в течение некоторого времени, получило название «рабочего множества».
В течение времени работы программы её рабочее множество постепенно меняется. Оно может становиться больше или меньше. Задача операционной системы отследить изменение рабочего множества и, по-возможности, обеспечить его для каждой загруженной программы.
Проблема эффективности при планировании процессов в системе
Дисциплина планирования должна:
- относиться ко всем процессам одинаково (ни один процесс не должен пострадать из-за бесконечного откладывания);
- обеспечить максимальную пропускную способность системы;
- обеспечить для максимального числа пользователей приемлемые времена ответа;
- быть предсказуемой. Время выполнения задания не должно зависеть от нагрузки на систему;
- сбалансировать использование ресурсов (предпочтение отдаётся тем процессам, которые используют недогруженные ресурсы);
- учитывать приоритеты.
Планирование может быть эффективным лишь в смысле достижения конкретных целей. Среди этих целей могут рассматриваться:
- максимальное количество завершившихся процессов в единицу времени;
- максимальное количество процессов, обслуживаемых системой;
- минимум простаивающих ресурсов системы;
- высокая надёжность работы системы;
- низкие накладные расходы при эксплуатации системы;
- получение максимальной прибыли от эксплуатации системы; и многие другие.
Многие из этих целей противоречат друг другу, что делает планирование весьма сложной проблемой.
Для достижения указанных целей механизм планирования должен учитывать:
- лимитируется ли процесс вводом-выводом;
- лимитируется ли процесс центральным процессором;
- является ли процесс пакетным или диалоговым;
- насколько часто при выполнении процесса возникают прерывания по отсутствию в оперативной памяти нужных страниц;
- сколько времени уже использовал данный процесс;
- сколько ещё времени требуется данному процессу для завершения.
Стратегии управления планированием процессов в системе
В теории рассматриваются по крайней мере следующие стратегии:
- планирование по сроку завершения — планирование задач выполняется таким образом, чтобы каждая задача могла завершиться к указанному времени;
- планирование FIFO — первая поступившая в систему задача обслуживается первой. Как правило, это стратегия без переключения;
- циклическое планирования — «классическое» планирование с переключением, при котором каждой задаче циклически предоставляется квант процессорного времени;
- приоритетное планирование — более приоритетные задачи обслуживаются перед менее приоритетными;
- кратчайшее задание первым — приоритет отдаётся задачам с минимальным оценочным временем выполнения;
- задание с наименьшим остаточным временем первым — аналог предыдущего, но используется оценка остаточного времени выполнения;
- по наибольшему относительному времени реакции — учитывает не только оценочное время завершения задачи, но и время, проведённое задачей в очереди ожидания на выполнение;
- многоуровневые очереди с обратными связями — учитывает характер выполнения задачи: ориентированные преимущественно на ввод-вывод получают процессор в приоритетном порядке, но малые кванты времени, ориентированные преимущественно на вычисления — менее приоритетны, но получают увеличенные кванты времени.
В хорошо спроектированной системе для достижения хорошей производительности и удовлетворения требований пользователей приходится идти на компромиссы и применять комбинированные стратегии.
37. Трёхуровневое планирование выполнения задач в системе
Планирование на верхнем уровне. Иногда называется планированием заданий. Средства этого уровня определяют, каким заданиям будет разрешено активно конкурировать за захват ресурсов системы. Этот вид планирования иногда называют также планированием допуска, поскольку на этом уровне определяется, какие задания будут допущены в систему. Вошедшие в систему задания становятся процессами или группами процессов.
Планирование на промежуточном уровне. Средства этого уровня определяют, каким процессам будет разрешено состязаться за захват центрального процессора. Планировщик промежуточного уровня оперативно реагирует на текущие колебания системной нагрузки, кратковременно приостанавливая и вновь активизируя (или возбуждая) процессы, что обеспечивает равномерную работу системы и помогает достижению определённых глобальных целевых скоростных характеристик. Таким образом, планировщик промежуточного уровня выполняет как бы функции буфера между средствами допуска заданий в систему и средствами предоставления ЦП для выполнения этих заданий.
Планирование на нижнем уровне. Средства этого уровня определяют, какому из готовых к выполнению процессов будет предоставляться освободившийся ЦП, и фактически выделяют ЦП данному процессу (т. е. осуществляют диспетчерские функции). Планирование на нижнем уровне производится так называемым диспетчером, который работает с большой частотой, много раз в секунду, и поэтому всегда должен располагаться в основной памяти.
Дата публикования: 2015-02-03; Прочитано: 688 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!