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

Многозадачность — или мультипрог-ние, это способ организации вычислениц, при котором на одном процессоре попеременно выполняются сразу несколько прог. Эти проги совместно используют не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода, данные. Повышает эффективность использования вычислительной системы. Критериями эффективности вычислительных систем: пропускная способность - количество задач, выполняемых вычислительной системой в единицу времени; удобство работы пользователей, заключающееся, в частности, в том, что они имеют возможность интерактивно работать одновременно с несколькими приложениями на одной машине; реактивность системы - способность системы выдерживать заранее заданные интервалы времени между запуском программы и получением результата.

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

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

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

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

Состояния потоков: Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ (выделены все запрошенные ресурсы), ОЖИДАНИЕ\БЛОКИРОВАНИЕ(затребованные ресурсы не м.б. предоставлены или не завершена операция вв/вывода.) и ГОТОВНОСТЬ. Многонитевая обработка повышает эффективность работы системы по сравнению с многозадачной обработкой.

Приоритеты потоков:

Переменные приоритеты:

0..5 – класс простоя

6..9 – фоновый класс

10..12 – класс переднего плана

13..15 – наивысший класс

Фиксированные приоритеты:

16..31 – классы реального времени (для сист. процессов).

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

Состояния потоков в Windows:

-Ready–поставлен в очередь, ожидает выполнения.

-Standby – первый в очереди на выполнение

-Running – выполняется

-Waiting – ожидание

-Transition – промежуточное, будет выполнен после загрузки его контекста

-Terminated – завершение выполнения

Виды синхронизирующих объектов:.

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

Синхронизирующие объекты в Win32:

· Исключающий семафор Mutex. В 1 такт времени – 1 поток.

· Семафор. В 1 такт времени – фиксированное кол-во потоков.

· События. Events. Передает глобальный сигнал, воспринимаемый любым потоком которому адресован.

· Критический раздел. АналогиченMutex, но работает в пределах одного процесса.

Все эти объекты создаются менеджером объектов.

Синхр. объекты могут нах-ся в двух состояниях:

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

-при отсутствии сигнала – поток нах-ся в состоянии ожидания. Блокируется и не выполняется.

13.Основные функции интерфейса API для осуществления многозадачности и многопоточности в Windows:

Наши рекомендации