Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Странично-сегментная организация виртуальной памяти



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

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

Виртуальный адрес в такой системе представляет собой тройку (s,p, d), где s — номер сегмента, р — номер страницы в сегменте, d — смещение в странице.

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

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


34. Проблема предотвращения «пробуксовки» системы

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

Чем больше страниц (сегментов) данной программы одновремен­но находится в оперативной памяти, тем меньше прерываний по от­сутствию страниц будет генерироваться, тем быстрее будет выпол­няться программа. К сожалению, в некоторых «предельных» случа­ях это правило нуждается в коррекции.

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

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

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

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

Такое множество страниц, обеспечивающее программе работу без прерываний по отсутствию страниц в течение некоторого вре­мени, получило название «рабочего множества».

В течение времени работы программы её рабочее множество по­степенно меняется. Оно может становиться больше или меньше. За­дача операционной системы отследить изменение рабочего множе­ства и, по-возможности, обеспечить его для каждой загруженной программы.

Проблема эффективности при планировании процессов в системе

Дисциплина планирования должна:

- относиться ко всем процессам одинаково (ни один процесс не должен пострадать из-за бесконечного откладывания);

- обеспечить максимальную пропускную способность системы;

- обеспечить для максимального числа пользователей приемле­мые времена ответа;

- быть предсказуемой. Время выполнения задания не должно зависеть от нагрузки на систему;

- сбалансировать использование ресурсов (предпочтение отдаёт­ся тем процессам, которые используют недогруженные ресурсы);

- учитывать приоритеты.

Планирование может быть эффективным лишь в смысле дости­жения конкретных целей. Среди этих целей могут рассматриваться:

- максимальное количество завершившихся процессов в единицу времени;

- максимальное количество процессов, обслуживаемых системой;

- минимум простаивающих ресурсов системы;

- высокая надёжность работы системы;

- низкие накладные расходы при эксплуатации системы;

- получение максимальной прибыли от эксплуатации системы; и многие другие.

Многие из этих целей противоречат друг другу, что делает пла­нирование весьма сложной проблемой.

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

- лимитируется ли процесс вводом-выводом;

- лимитируется ли процесс центральным процессором;

- является ли процесс пакетным или диалоговым;

- насколько часто при выполнении процесса возникают преры­вания по отсутствию в оперативной памяти нужных страниц;

- сколько времени уже использовал данный процесс;

- сколько ещё времени требуется данному процессу для завер­шения.


Стратегии управления планированием процессов в системе

В теории рассматриваются по крайней мере следующие страте­гии:

- планирование по сроку завершения — планирование задач вы­полняется таким образом, чтобы каждая задача могла завершиться к указанному времени;

- планирование FIFO — первая поступившая в систему задача обслуживается первой. Как правило, это стратегия без переключе­ния;

- циклическое планирования — «классическое» планирование с переключением, при котором каждой задаче циклически предостав­ляется квант процессорного времени;

- приоритетное планирование — более приоритетные задачи об­служиваются перед менее приоритетными;

- кратчайшее задание первым — приоритет отдаётся задачам с минимальным оценочным временем выполнения;

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

- по наибольшему относительному времени реакции — учитыва­ет не только оценочное время завершения задачи, но и время, прове­дённое задачей в очереди ожидания на выполнение;

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

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

37. Трёхуровневое планирование выполнения задач в системе

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

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

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





Дата публикования: 2015-02-03; Прочитано: 648 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...