Питомец.Презентация3.pptx
- Количество слайдов: 22
Потоки
Поток выполнения -наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса. Несколько потоков выполнения могут существовать в рамках одного и того же процесса и совместно использовать ресурсы, такие как память, тогда как процессы не разделяют этих ресурсов. В частности, потоки выполнения разделяют инструкции процесса (его код) и его контекст (значения переменных, которые они имеют в любой момент времени)
Почему используют потоки? 1. Во многих приложениях одновременно происходит несколько действий, часть которых может периодически быть заблокированы. Модель программирования упрощается за счет разделения такого приложения на несколько последовательных потоков, выполняемых в квазипараллельном режиме. 2. Легкость (то есть быстрота) их создания и ликвидации по сравнению процессами. Во многих системах создание потоков осуществляется в 10 -100 раз быстрее, чем создание процессов. Это свойство особенно пригодится, когда потребуется быстро и динамично изменять количество потоков. 3. Производительность. Когда потоки работают в рамках одного центрального процессора, они не приносят никакого прироста производительности, но когда проводятся значительные вычисления, а также значительная часть времени тратится на ожидание ввода-вывода, наличие потоков позволяет этим действиям перекрываться по времени, ускоряя работу приложения. Полезны для систем, имеющих несколько центральных процессоров, где есть реальная возможность параллельных вычислений.
Модель потока Когда многопоточный процесс выполняется на однопроцессорной системе, потоки выполняются, сменяя друга. Потоку принадлежат: • счетчик команд, отслеживающий, какую очередную инструкцию нужно выполнять; • регистры, в которых содержатся текущие рабочие переменные; • стек с протоколом выполнения, содержащим по одному фрейму для каждой вызванной, но еще не возвратившей управление процедуры.
Реализация потоков в пользовательском режиме Потоки запускаются поверх системы поддержки исполнения программ (runtime system), которая представляет собой набор процедур, управляющих потоками. Каждый процесс имеет свою собственную таблицу потоков. Таблица потоков содержит лишь свойства, принадлежащие каждому потоку, такие как счетчик команд потока, указатель стека, регистры, состояние и т. д. «+» «-» Работает быстро (не нужно переключаться в режим ядра, нет переключений контекста процессора Трудно реализовать блокирующие вызовы Возможно использовать в разных процессах разные алгоритмы планирования Ошибка отсутствия страницы – при обращении к отсутствующей странице памяти ОС блокирует процесс, а не поток Теоретически, лучше масштабируются Потоки сами определяют порядок выполнения. Пока поток не «отдаст» процессор, другой поток не получит процессорное время
Реализация потоков в режиме ядра Потоки управляются ядром. В ядре содержится таблица потоков, в которой отслеживаются все потоки, имеющиеся в системе. Таблица потоков содержит лишь свойства, принадлежащие каждому потоку, такие как счетчик команд потока, указатель стека, регистры, состояние и т. д.
Гибридная реализация
Планирование Планировщик (диспетчер процессов) - часть операционное системы, которая осуществляет выбор: какой из процессов (потоков) будет переведен из состояния готовности в состояние выполнения. Алгоритм, который использует планировщик – алгоритм планирования.
Когда проводится планирование 1. 2. 3. 4. Создание нового процесса. Какой процесс выполнять родительский или дочерний? Процесс завершает работу. Какой процесс выполнить следующим? Выполняемый процесс блокируется. Возникновение прерывания.
Классификация алгоритмов планирования По использованию приоритета • Приоритетные • Неприоритетные Можно ли вытеснить процесс • Вытесняющие • Невытесняющие По времени работы процесса 1 С использованием квантования по времени 2 Без квантования По виду ОС 1. Для пакетных ОС 2. Интерактивных ОС 3. ОС РВ
Задачи алгоритма планирования • Все системы – – – • + Пакетные системы – – – • Равнодоступность — предоставление каждому процессу справедливой доли времени центрального процессора. Принуждение к определенной политике — наблюдение за выполнением установленной политики. Баланс — поддержка загруженности всех составных частей системы. Производительность — выполнение максимального количества заданий в час. Оборотное время — минимизация времени между представлением задачи и ее завершением. Использование центрального процессора — поддержка постоянной загруженности процессора. + Интерактивные системы – Время отклика — быстрый ответ на запросы. – Пропорциональность — оправдание пользовательских надежд. • + Системы реального времени – Соблюдение предельных сроков — предотвращение потери данных. – Предсказуемость — предотвращение ухудшения качества в мультимедийных – системах.
Алгоритмы планирования • • Первым (последним) пришел — первым обслужен Сначала самое короткое задание Приоритет наименьшему времени выполнения Циклическое планирование Приоритетное планирование – Использование нескольких очередей Гарантированное планирование Лотерейное планирование Справедливое планирование
Обзор планирования в Windows B Windows реализована подсистема вытесняющего планирования на основе уровней приоритета, в которой всегда выполняется поток с наибольшим приоритетом, готовый к выполнению. Однако выбор потока для выполнения может быть ограничен набором процессоров, на которых он может работать. Выбранный для выполнения поток работает в течение некоего периода, называемого квантом. Квант определяет, сколько времени будет выполняться поток, пока не наступит очередь другого потока с тем же приоритетом (или более высоким, что возможно в многопроцессорной системе). Длительность квантов зависит от трех факторов: конфигурационных параметров системы (длинные или короткие кванты), статуса процесса (активный или фоновый) и использования объекта «задание» для изменения длительности квантов.
Уровни приоритета В Windows предусмотрено 32 уровня приоритета — от 0 до 31. Эти значения группируются так: • шестнадцать уровней реального времени (16– 31); • пятнадцать варьируемых (динамических) уровней (1 -15); • один системный уровень (0), зарезервированный для потока обнуления страниц (zero page thread).
• • Ready (готов) Поток в состоянии готовности ожидает выполнения. Выбирая следующий поток для выполнения, диспетчер принимает во внимание только пул потоков, готовых к выполнению. Standby (простаивает) Поток в этом состоянии уже выбран следующим для выполнения на конкретном процессоре. B подходящий момент диспетчер переключает контекст на этот поток. B состоянии Standby может находиться только один поток для каждого процессора в системе. Running (выполняется) Поток переходит в это состояние и начинает выполняться сразу после того, как диспетчер переключает на него контекст. Выполнение потока прекращается, как только он завершается, вытесняется потоком с более высоким приоритетом, переключает контекст на другой поток, самостоятельно переходит в состояние ожидания или истекает выделенный ему квант процессорного времени (и другой поток с тем же приоритетом готов к выполнению). Waiting (ожидает) Поток входит в состояние Waiting несколькими способами. Он может самостоятельно начать ожидание на синхронизирующем объекте или его вынуждает к этому подсистема окружения. По окончании ожидания поток — в зависимости от приоритета — либо немедленно начинает выполняться, либо переходит в состояние Ready. Transition (переходное состояние) Поток переходит в это состояние, если он готов к выполнению, но его стек ядра выгружен из памяти. Как только этот стек загружается в память, поток переходит в состояние Ready. Terminated (завершен) Заканчивая выполнение, поток переходит в состояние Terminated. После этого блок потока исполнительной системы (структура данных в пуле неподкачиваемой памяти, описывающая данный поток) может быть удален, а может быть и не удален — это уже определяется диспетчером объектов. Initialized (инициализирован) B это состояние поток входит в процессе своего создания.
Механизмы планирования • • Динамическое увеличение кванта –— кванты потоков активного увеличиваются в 3 раза. Сценарии планирования – Самостоятельное переключение - поток может самостоятельно освободить процессор, перейдя в состояние ожидания на каком-либо объекте – Вытеснение - поток с более низким приоритетом вытесняется готовым к выполнению потоком с более высоким приоритетом – Завершение кванта -Windows должна решить, следует ли понизить его приоритет и подключить к процессору другой поток. • Динамическое повышение приоритета – – – после завершения операций ввода-вывода; по окончании ожидания на событии или семафоре исполнительной системы; по окончании операции ожидания потоками активного процесса; при пробуждении GUI-потоков из-за операций с окнами; если поток, готовый к выполнению, задерживается из-за нехватки процессорного времени.
Питомец.Презентация3.pptx