Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Realtime_2.doc
Скачиваний:
221
Добавлен:
14.02.2015
Размер:
611.33 Кб
Скачать
        1. Многозадачность и мультипроцессорная обработка

Процессор может выполнять не более одного потока одновременно. Однако многозадачная (multitasking)ОС дает пользователям возможность исполнять несколько программ, причем создается впечатление, будто все они исполняются одновременно. Это достигается следующим образом:

1. Поток исполняется до тех пор, пока его исполнение не будет прервано или пока ему не придется ждать освобождения некоторого ресурса.

2. Сохраняется контекст потока.

3. Загружается контекст другого потока.

4. Этот цикл повторяется до тех пор, пока есть потоки, ожидающие выполнения.

Переключение процессора с исполнения одного потока на исполнение другого называется переключением контекста (context switching).В Windows NTего осуществляет ядро исполнительной системы.

Рис. 2-6. Многозадачность.

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

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

Вытесняющая многозадачность (preemptive multitasking) —это разновидность многозадачности, при которой ОС не ждет, пока поток добровольно предоставит процессор другим потокам. Вместо этого ОС прерывает поток, после того как он выполнялся в течение заранее заданного периода времени, так называемогокванта времени (time quantum),или когда готов к выполнению поток с большим приоритетом (например, реагирующий на пользовательский ввод). Вытеснение предотвращает монополизацию процессора одним потоком и предоставляет другим потокам их законную долю процессорного времени.

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

До второй половины 80-х годов в большинстве ОС программы могли иметь только один поток управления'. (Фактически в большинстве ОС для обозначения исполняемой сущности использовалось слово процесс (process).Поток (thread) —достаточно новый термин.) Так как у каждого процесса было отдельное адресное пространство, двум процессам для обмена данными друг с другом нужны были либо область совместно используемой памяти, либо совместно используемый файл. Для такого рода коммуникаций между процессами широко использовались (и используются) каналы (см. рис. 2-7).

Рис.2-7.Компилятор, состоящий из двух процессов.

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

Параллельность полезна приложениям и на однопроцессорном компьютере, но еще более она важна на многопроцессорном. При наличии нескольких процессоров препроцессор и компилятор из нашего примера могут исполняться параллельно. Если параллельное приложение хорошо спроектировано и минимизирует конкуренцию за ресурсы между своими потоками, то на многопроцессорном компьютере оно может работать быстрее, чем на однопроцессорном (сравните рис. 2-8 с рис. 2-6).

Операционной системой с мультипроцессорной обработкой (multiprocessing)называется такая ОС, которая специально спроектирована для работы на компьютерах с более чем одним процессором. ОС ссимметричной мультипроцессорной обработкой (symmetric multiprocessing, SMP),такая какWindows NT,может выполнять на любом процессоре как код пользователя, так и код ОС. Если число потоков превышает число процессоров, ОС SMP также поддерживает многозадачность, разделяя время каждого процессора между всеми ожидающими потоками.

Рис. 2-8. Мультипроцессорная обработка.