Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPPO_shpora_final_ver_1.pdf
Скачиваний:
49
Добавлен:
30.03.2015
Размер:
1.19 Mб
Скачать

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

9 ПЛАНИРОВАНИЕ И ДИСПЕТЧЕРИЗАЦИЯ ПРОЦЕССОВ: ПОНЯТИЯ, ИХ СВЯЗЬ. УРОВНИ ПЛАНИРОВАНИЯ. ДИСЦИПЛИНЫ ПЛАНИРОВАНИЯ.

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

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

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

планирование верхнего уровня (или долгосрочное планирование),

планирование среднего уровня (среднесрочное планирование),

планирование на нижнем уровне (краткосрочное планирование, иногда называемое диспетчеризацией).

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

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

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

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

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

1.“первый пришедший обслуживается первым” (FIFO - First In First Out, процессы, находящиеся в состоянии готовности, «получают» ЦП в порядке очереди);

2.RR (Round Robin) - циклическое или круговое планирование. При реализации этой дисциплины процессы встают в очередь в порядке их попадания в состояние готовности, но очередному процессу из очереди процессор предоставляется в распоряжение на ограниченное время, называемое квантом (величина кванта

20

зависит от характеристик процессов и его величина влияет на эффективность работы ВС);

3.дисциплины, зависящие от количества запрашиваемого ресурса (времени процессора). Наиболее известными являются дисциплины SJF (“кратчайшее задание - первым”), SRT (“по наименьшему оставшемуся до завершения времени”). Эти дисциплины устанавливают приоритеты процессов при распределении времени процессора: реализация этих дисциплин дает преимущество более коротким программам, требующим меньше времени для завершения;

4.использованием приоритетов при планировании; дисциплина, обеспечивающая больший приоритет процессам с минимальными запросами на время процессора, но, в то же время, гарантирующая доступ к процессору и для процессов с большим запрашиваемым временем для обслуживания, может быть реализована на основе динамического приоритета, вычисляемого по формуле: приоритет = (Время ожидания + Время обслуживания) / (Время обслуживания). При использовании такого метода расчета приоритетов предпочтение также отдается коротким процессам, но долгое время ожидания повышает приоритет процесса, приближая его к началу очереди;

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

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

10 ПОНЯТИЕ МУЛЬТИЗАДАЧНОСТИ, КООПЕРАТИВНАЯ И ВЫТЕСНЯЮЩАЯ МУЛЬТИЗАДАЧНОСТЬ. МУЛЬТИПРОГРАММИРОВАНИЕ И МУЛЬТИЗАДАЧНОСТЬ – СВЯЗЬ ДВУХ ПОНЯТИЙ

Всовременных процессорах (в частности, Intel) существует понятие задачи, которое используется как эквивалент термину “процесс”. Поэтому в настоящее время вместо понятия мультипроцессность чаще используют понятие мультизадачность: так как архитектура Intel поддерживает возможность параллельного выполнения нескольких задач, то термины параллельность и мультипрограммирование оказываются синонимами мультизадачности. При организации мультизадачной работы ОС для каждой задачи должна выделяться область памяти, доступная только операционной системе, в которую должна помещаться вся информация, описывающая эту задачу (ее контекст). Эту область памяти называют контекстной памятью или кадром состояния.

Всовременных ОС существует два основных метода, позволяющих реализовать переключение задач в мультизадачном режиме:

21

переключение по событию,

разделение времени.

Врежиме переключения по событию операционная система не может сама определить момент смены текущей задачи. Этот момент может быть указан текущей активной задачей, “добровольно” приостанавливающей свое выполнение с помощью специального обращения к операционной системе.

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

Всоответствии с использованным методом переключения задач многозадачность может быть либо кооперативной (cooperative multitasking), либо вытесняющей (preemptive multitasking).

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

3.x и Novell NetWare.

Всистемах с вытесняющей многозадачностью ОС может самостоятельно передать управление процессором от одной активной задачи к другой, готовой к выполнению задаче. Следовательно, работающие в режиме вытесняющей мультизадачности приложения могут не беспокоиться о том, что они могут “захватить” все время процессора, так как ОС сама распределяет время процессора между всеми существующими в системе задачами. Операционные системы Unix, Windows 95 и Windows NT используют вытесняющую многозадачность.

11 СТРУКТУРЫ ДАННЫХ, ИСПОЛЬЗУЕМЫЕ ДЛЯ РЕАЛИЗАЦИИ ОСНОВНЫХ ФУНКЦИЙ ОС. ОБОБЩЁННЫЕ ДЕСКРИПТОРЫ. ОБЪЕКТЫ ЯДРА ОС WINDOWS NT, ИСПОЛЬЗУЕМЫЕ ДЛЯ РЕАЛИЗАЦИИ ФУНКЦИЙ УПРАВЛЕНИЯ, ДИСПЕТЧЕРИЗАЦИИ И СИНХРОНИЗАЦИИ ПРОЦЕССОВ

Ядро ОС - это базовый набор примитивов и процессов, на основе которых строится остальная часть системы. В состав ядра включают обычно компоненты ОС, реализующие основные, наиболее часто используемые ее функции:

управление процессами;

управление ресурсами;

обработка прерываний и

ввод/вывод.

Объекты ядра ОС Windows NT, используемые для реализаций функций управления

и синхронизации процессов

22

Ядро ОС Windows NT (Kernel) является основным компонентом системы, ее “сердцем”, и работает напрямую с уровнем аппаратных абстракций. Этот модуль, в первую очередь, занимается планированием действий процессора.

Ядро управляет двумя типами объектов:

объекты диспетчеризации (dispatcher objects) характеризуются сигнальным состоянием (signaled/nonsignaled) и управляют диспетчеризацией и синхронизацией системных операций; эти объекты включают события (events), мутанты (mutants), мутексы

(mutexes), семафоры (semaphores), нити управления (threads) и таймеры (timers);

управляющие объекты (control objects) - используются для реализации операций управления ядра, но не воздействуют на диспетчеризацию или синхронизацию; они включают асинхронные вызовы процедур (asynchronous procedure calls), прерывания

(interrupts), уведомления (power noti-fies) и состояния (power statuses) источника питания, процессы (processes) и профили (profilers).

Объекты типа события (event) используются для записи местонахождения события и синхронизации его с некоторым выполняемым действием.

Объекты типа mutant используются ядром для контроля над общим монопольным доступом к ресурсу (применяются для обеспечения в пользовательском режиме механизма взаимного исключения, могут использоваться и в привилегированном режиме). Объекты типа mutex также используются для контроля общего монопольного доступа к ресурсу, но могут быть использованы только в режиме выполнения ядра и предназначены для обеспечения беступикового механизма взаимного исключения.

Семафоры используются для управления доступом к ресурсу, но не обязательно в режиме взаимного исключения. Объекты этого типа действуют как “клапаны”: через каждый клапан может пройти одновременно некоторое количество нитей управления (до установленного ограничения, определяемого состоянием ресурса); клапан открыт (находится в состоянии signaled) до тех пор, пока имеются доступные ресурса, связанные с этим семафором, когда число используемых ресурсов достигает ограничивающей отметки, клапан закрывается (переходит в состояние nonsignaled).

Объекты ядра thread связаны с потоками; каждая нить связана с объектом ядра “процесс”, представляющим процесс, владеющий данной нитью. Процесс определяет распределение виртуального адресного пространства для нити и собирает результаты выполнения своих нитей. Их выполнение может распределяться между процессорами в многопроцессорной системе.

Объект таймер используется для фиксирования временных интервалов и прерывания (по таймеру) операций.

Асинхронные вызовы процедур используются для прерывания выполнения специфицированной нити управления и передачи управления вызываемой процедуре в определенном режиме процессора.

Объекты прерывания используются для соединения источника прерывания и процедуры обслуживания прерывания через элемент таблицы управления прерываниями (IDT - Interrupt Dispatch Table). Каждый процессор имеет свою IDT, управляющую прерываниями этого процессора.

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

23

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]