16. Понятия процесса и потока. Состояния процесса
.docx16. Понятия процесса и потока. Состояния процесса
Проце́сс — выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ.
Компьютерная программа сама по себе это только пассивная совокупность инструкций, в то время как процесс — это непосредственное выполнение этих инструкций.
Часто процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т. д.
Поток, или нить, – независимый путь выполнения внутри процесса, разделяющий вместе с процессом общее адресное пространство, код и глобальные данные. У каждого потока имеются собственные регистры, стек и механизмы ввода, в том числе очередь скрытых сообщений. В одном процессе может быть несколько потоков (многопоточность). Поток может находиться в одном из нескольких состояний
В качестве примера использования нескольких потоков в одном процессе можно привести ситуацию, когда приложению нужно записать большой файл на диск. При использовании одного потока доступ к другим функциям программы будет недоступен до окончания операции
Основные способы реализации пакета потоков: в пространстве пользователя и в ядре. В первом случае ядро ничего не знает о потоках и управляет обычными однопоточными процессами.» +»: это можно реализовать даже в ОС, не поддерживающей потоки (раньше так строились все ОС); относительно высокая производительность; возможность использовать процессом собственный алгоритм планирования.» –»: проблема добровольной отдачи процессора одним из потоков, или блокирование одного потока, что приводит к блокированию всего процесса. В большинстве известных ОС сегодня потоки реализуются в ядре или используется сочетание двух способов
Возможные состояния процесса:
- действие (использует процессор в данный момент)
- готовность (приостановлен, чтобы позволить выполняться другому процессу)
- блокировка (не может быть запущен прежде, чем произойдет некое внешнее событие)
Переходы между состояниями:
1: процесс блокируется, ожидая входных данных
2: планировщик выбирает другой процесс
3: планировщик выбирает этот процесс
4: доступны входные данные