2. Процессы и потоки
Объект исполнения прикладной
программы операционной системой
представляется двумя понятиями
Процесс
Поток
3. Процесс
Процесс (process)- экземпляр программы, загруженной
в память
Процесс – пассивный объект–владелец ресурсов,
контейнер для выполнения потоков (thread)
4. Поток / нить (thread)
Поток - абстракция, представляющая
последовательное выполнение команд программы,
развертывающееся во времени
Выполняются не процессы, а именно потоки
Любой процесс имеет хотя бы один поток
5. Поток / нить (thread)
Потоки совместно Каждый поток имеет свои
используют собственные
глобальные и статические программный счетчик
переменные (IP)
(располагаются в регионе значения регистров
данных) локальные переменные
динамически
(т.е. свой собственный
распределяемую память стек)
(кучу)
системные ресурсы,
выделенные процессу
6. Процессы и потоки
Процесс MS-DOS UNIX Процесс Процесс
by
один поток design
в процессе Поток Поток Поток
Процесс Java WinNT, Процесс Процесс
несколько Linux, Поток
Поток
потоков Mach, Поток
Поток
в процессе …
Поток Поток
Поток
один процесс несколько процессов
7. Состояния потока
Создание
1
Готов к
выполнению
2 5
3
4
Выполнение Блокировка
6
Завершение
8. Планирование
Процесс
Процесс Поток
Поток Центральный
Поток Поток процессор
Поток
Процесс Поток
Поток
Поток
Планирование – распределение времени
центрального процессора
9. График выполнения потока
Один поток – один процессор
а)
Длинные блоки
вычислений
Ожидание
ввода-вывода
Короткие блоки
вычислений
б)
Время
10. График выполнения
потока
Несколько потоков – один процессор
Завершение состояния ожидания – переход в
Нет готовых к выполнению состояние «готов к исполнению»
потоков
Поток 2
Поток 1
Поток в состоянии «готов к исполнению»
Время
11. График выполнения
потока
Несколько потоков – несколько
процессоров
Ожидание ввода-вывода
или нахождение в
состоянии ожидания
Поток2
Поток1
Время
12. Синхронизация
потоков
Механизм, позволяющий потокам согласовывать
свою работу с общими ресурсами называется
механизмом синхронизации
15. Синхронизация
потоков
Необходим доступ к ресурсу
Работа с
Нет Ресурс свободен? признаком
Да занятости
(блокировки)
Занять ресурс ресурса
Критическая секция
Освободить ресурс
16. Тупиковые ситуации
Поток Т1 Поток Т2
заблокировать А заблокировать В
… …
заблокировать В заблокировать А
… …
освободить А освободить В
освободить В освободить А
17. Тупиковые ситуации
Поток в состоянии
«блокировка»
Поток Т1 1 2 3
Поток Т2
1 2
Ресурс А
Ресурс В
Ресурс «свободен / заблокирован» t
18. Вывод
Понимание диаграмм выполнения
потоков – ключевой момент при
разработке и отладке многопоточных
программ
Неумелое использование средств
синхронизации – источник трудно
находимых ошибок и потерь
производительности