Концепция многозадачности и многопоточности в ОС 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: