Процессы и потоки
Подсистема управления процессами и потоками
Процесс
Модель процесса
Модель процесса
Модель процесса
Создание, завершение и состояние процессов
Создание процесса
Создание процесса. Инициализация операционной системы.
Создание процесса (системный вызов)
Завершение процесса
дескриптор процесса и контекст процесса
Использование и реализация потоков
почему же, собственно, потоки так необходимы
Планирование и диспетчеризация потоков
Диспетчеризация
Моменты перепланировки
1.28M
Категория: ПрограммированиеПрограммирование

Процессы и потоки

1. Процессы и потоки

1

2. Подсистема управления процессами и потоками

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

3. Процесс

Процесс – абстрактное понятие,
описывающие работу программы.
В современных ОС многозадачность
реализована за счет предоставления
пользовательской программе процессора
на несколько миллисекунд. При условии
чередования использования процессора
между программами.
3

4. Модель процесса

Все ПО исполняемое на компьютере, а иногда и
операционная система, организовано в виде
последовательных процессов.
Процессом является выполняемая программа,
включая:
текущие значения счетчиков команд
текущие значения регистров
текущие значения переменных
4

5.

В чем же состоят принципиальные отличия в понятиях
"процесс" и "поток"?
Очевидно, что любая работа вычислительной системы
заключается в выполнении некоторой программы.
Поэтому и с процессом, и с потоком связывается
определенный программный код, который для этих целей
оформляется в виде исполняемого модуля. Чтобы этот
программный код мог быть выполнен, его необходимо
загрузить в оперативную память, возможно, выделить
некоторое место на диске для хранения данных,
предоставить доступ к устройствам ввода-вывода и т.д. В ходе
выполнения программе может понадобиться доступ к
информационным ресурсам, например, файлам, портам
TCP/UDP, семафорам. И, конечно же, невозможно
выполнение программы без предоставления ей
процессорного времени, то есть времени, в течение которого
процессор выполняет коды данной программы.
5

6.

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

7.

Процесс – задача в стадии выполнения в
системе.
Процесс – заявка на потребление всех видов
ресурсов (в системах, где определено
понятие «поток», кроме одного ресурса процессорного времени).
Поток – средство распараллеливания
вычислений внутри процесса.
7

8.

Для того чтобы процессы не могли вмешаться в
распределение ресурсов, а также не могли повредить
коды и данные друг друга, важнейшей задачей ОС
является изоляция одного процесса от другого.
Для этого ОС обеспечивает каждый процесс отдельным
виртуальным адресным пространством, так что ни
один процесс не может получить прямого доступа к
командам и данным другого процесса.
Процесс можно рассматривать как способ группирования
родственных ресурсов в одну группу. У процесса есть адресное
пространство, содержащее код программы и данные, а также
другие ресурсы. Ресурсами могут быть открытые файлы,
обработчики сигналов, учетная информация и многое другое.
Гораздо проще управлять ресурсами, объединив их в форме
процесса.
8

9.

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

10. Модель процесса

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

11. Модель процесса

Центральный процессор переключается между
процессами, следовательно, скорость вычислений
процесса всегда будет разной.
Процессы не должны программироваться с жестко
заданным временем выполнения.
Программа и процесс понятия схожие, но разные!
Если программа запущенна дважды, то ею заняты
два процесса.
11

12.

Чтобы пояснить различие между процессом и
программой, воспользуемся аналогией:
представьте повара, пекущего торт на день рождения
дочери. У него есть рецепт, кухня и ингредиенты для
торта.
Здесь рецепт - это программа, повар -процессор,
ингредиенты - входные данные. Процессом является
следующая последовательность действий: повар читает
рецепт, смешивает продукты, печет торт.
Теперь представим, что на кухню забегает сын, которого
укусила пчела. Повар отмечает, на чем он остановился
(сохраняет текущее состояние процесса), находит
справочник по оказанию первой помощи и действует по
инструкции. Таким образом, процессор переключился с
одного процесса на другой с большим приоритетом, и
у каждого процесса есть своя программа (рецепт и
справочник). После оказания первой помощи повар
возвращается к торту, продолжая с той операции, на
которой он остановился.
12

13. Создание, завершение и состояние процессов

типичный жизненный цикл процесса: рождение - готовность - выполнение -уничтожение
13

14. Создание процесса

При рождении процесс получает в свое распоряжение
адресное пространство, в которое загружается
программный код процесса. Ему выделяются стек и
системные ресурсы, устанавливается начальное
значение программного счетчика процесса и т.д.
Способы создания процессов:
1. Инициализация системы
2. Выполнение работающим процессом системного
запроса на создание процесса
3. Запрос пользователя на создание процесса
4. Инициализация пакетного задания
14

15. Создание процесса. Инициализация операционной системы.

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

16. Создание процесса (системный вызов)

Новый процесс формируется на основании
системного запроса от текущего процесса.
В роли текущего процесса может выступать:
Процесс, запущенный пользователем;
Системный процесс;
Процесс, инициализированный клавиатурой или
мышью;
Процесс, управляющий пакетами.
16

17.

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

18. Завершение процесса

После завершения своей деятельности процесс
переходит в состояние
уничтожение
Завершение процесса:
1. Обычный выход (преднамеренно);
2. Выход по ошибке (преднамеренно);
3. Выход по неисправимой ошибке (непреднамеренно);
4. Уничтожение другим процессом (непреднамеренно).
По завершении работы операционная система освобождает все ресурсы,
ассоциированные сданным процессом
18

19. дескриптор процесса и контекст процесса

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

20.

Для корректного переключения процессов необходимо сохранить
контекст исполнявшегося процесса и восстановить контекст
процесса, на который будет переключен процессор. Такая
процедура сохранения/восстановления работоспособности
процессов называется переключением контекста
Видно, что время, затрачиваемое на
переключение контекста, складывается
из времени сохранения контекста
первого процесса, времени обработки
самого прерывания, времени,
затрачиваемого операционной
системой на планирование
(определение того процесса, который
будет выполняться), и времени
восстановления контекста второго
процесса. Это время не используется
вычислительной системой для
совершения полезной работы и
представляет собой накладные
расходы, снижающие
производительность системы. Оно
зависит от конкретных особенностей
вычислительной системы и может
составлять от 1 до 1000 микросекунд.
переключение контекста при возникновении прерывания
20

21. Использование и реализация потоков

Концепция потоков добавляет к модели процесса возможность
одновременного выполнения в одной и той же среде процесса нескольких
программ, в достаточной степени независимых.
Несколько потоков, работающих параллельно в одном процессе,
аналогичны нескольким процессам, идущим параллельно на одном
компьютере.
В первом случае потоки разделяют адресное пространство, открытые файлы и
другие ресурсы.
Во втором случае процессы совместно пользуются физической памятью,
дисками, принтерами и другими ресурсами.
Потоки обладают некоторыми свойствами процессов, поэтому их иногда
называют упрощенными процессами. Термин многопоточность также
используется для описания использования нескольких потоков в одном
процессе.
21

22.

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

23.

При запуске многопоточного процесса в системе с одним
процессором потоки работают поочередно.
Иллюзия параллельной работы нескольких различных
последовательных процессов создается путем постоянного
переключения системы между процессами.
Многопоточность реализуется примерно так же. Процессор
быстро переключается между потоками, создавая впечатление
параллельной работы потоков, хотя и на не столь быстром
процессоре.
В случае трех ограниченных производительностью процессора
потоков в одном процессе все потоки будут работать параллельно,
и каждому потоку будет соответствовать виртуальный процессор с
быстродействием, равным одной трети быстродействия реального
процессора.
23

24.

Различные потоки в одном процессе не так
независимы, как различные процессы. У всех
потоков одно и то же адресное пространство, что
означает совместное использование глобальных
переменных.
Любой поток имеет доступ к любому адресу ячейки
памяти в адресном пространстве процесса, один
поток может считывать, записывать или даже
стирать информацию из стека другого потока.
Защиты не существует, поскольку: - это невозможно
и - это ненужно. В отличие от различных
процессов, которые инициированы различными
пользователями, один процесс всегда запущен
одним пользователем, и потоки созданы, чтобы
работать совместно.
24

25.

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

26.

Граф состояний потока
1. Поток выбран на выполнение
2. Поток ожидает завершения ввода/вывода
3. Ввод/вывод завершен (событие произошло)
4. Поток вытеснен планировщиком

27. почему же, собственно, потоки так необходимы

◦ Основной причиной является выполнение большинством приложений
существенного числа действий, некоторые из них могут время от
времени блокироваться. Схему программы можно существенно
упростить, если разбить приложение на несколько последовательных
потоков, запущенных в квазипараллельном режиме
◦ Легкость их создания и уничтожения (поскольку с потоком не связаны
никакие ресурсы). В большинстве систем на создание потока уходит
примерно в 100 раз меньше времени, чем на создание процесса
◦ Производительность. Когда имеется одновременная потребность в
выполнении большого объема вычислений и операций ввода-вывода,
наличие потоков позволяет совмещать эти виды деятельности во
времени, тем самым увеличивая общую скорость работы приложения
◦ концепция потоков полезна в системах с несколькими процессорами,
где возможен настоящий параллелизм
27

28. Планирование и диспетчеризация потоков

Планирование:
определение момента времени для смены
текущего активного потока
выбор потока для выполнения из очереди готовых
28

29.

Планирование
динамическое
(решения принимаются во время
работы системы на основе анализа
текущей ситуации)
статическое
(решения приняты заранее,
работа по расписанию)
29

30. Диспетчеризация

это реализация найденного в результате планирования
решения, т.е.:
1
2
3
• сохранение контекста текущего потока
• загрузка контекста потока, выбранного
в результате планирования
• запуск нового потока на выполнение
30

31. Моменты перепланировки

Время, отведенное активной задаче на выполнение, закончилось. Планировщик
переводит задачу в состояние готовности и выполняет перепланирование.
Активная задача выполнила системный вызов, связанный с запросом на ввод/вывод или
на доступ к ресурсу, который в настоящий момент занят. Планировщик переводит задачу в
состояние ожидания и выполняет перепланирование.
Активная задача выполнила системный вызов, связанный с освобождением ресурса.
Если есть задача, ожидающая это событие, то она переводится из состояния ожидания в
состояние готовность.
Завершение периферийным устройством операции ввода/вывода переводит
соответствующую задачу в очередь готовых и выполняется планирование.
Внутреннее прерывание сигнализирует об ошибке, которая произошла в результате
выполнения активной задачи. Планировщик снимает задачу и выполняет
перепланирование.
31
English     Русский Правила