Концепция потоков
Процесс – целенаправленный акт обработки данных.
Процесс – это выполняемая программа или программа в стадии выполнения. При выполнении программ на процессоре различают следующие характерные состояния процесса.
Допустимые состояния процесса.

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

На переключение потоков в ОС затрачивается достаточно много времени (из режима пользователя в режим ядра и обратно). Чтобы этого избежать, используется облегченный параллелизм (применяется без переключения с использованием так называемых волокон). Волокна подобны потокам, но планируются в пространстве пользователя, создавшей их программой. У каждого потока может быть несколько волокон с той разницей, что когда волокно блокируется, то оно помещается в очередь блокированных волокон, после чего выбираются другие волокна в составе того же потока. При этом ОС не знает ничего о смене волокон, так как всё тот же поток выполняет работу.
Иерархия рабочих единиц ОС

Задание. Набор процессов с общими квотами и лимитами.
Процесс. Контейнер для ресурсов и потоков.
Поток. Исполнение кода в процессе.
Волокно. Облегченный поток, полностью управляемый в пространстве пользователя.
Работа вычислительной системы заключается в выполнении некоторой программы, поэтому и с процессом, и с потоком связывается некоторый программный код. Он оформляется в виде исполнительного модуля.
Процессы общаются между собой через ОС.
Необходимо распараллеливать работу в рамках одного приложения (одной задачи). Тогда для одного приложения придется создавать несколько процессов. Однако в этом случае при использовании стандартных средств ОС не учитывается следующее:
Процесс – это выполняемая программа или программа в стадии выполнения. При выполнении программ на процессоре различают следующие характерные состояния процесса.

Активное состояние – программа выполняется
Ожидание – программа не выполняется на процессоре по причине занятости какого-либо ресурса
Готовность – программа не выполняется, но для ее исполнения представлены все ресурсы, кроме времени процессора
Окончание – нормальное или аварийное завершение программы
С каждым процессом связывается его адресное пространство, содержащее саму программу.
Всё функционирующее на компьютере ПО, включая ОС, можно представить набором процессов.
Наибольшие сложности в управлении ресурсами компьютера возникают в мультипрограмме.
Мультипрограммирование (многозадачность) – такой способ организации
вычислительного процесса, при котором на одном процессоре попеременно
выполняется несколько программ. Для того чтобы поддерживать
мультипрограммирование, ОС должна определить внутренние единицы работы,
которыми будет разделяться процессор и другие ресурсы компьютера.
В настоящее время в большинстве ОС существуют 3 типа единиц работы:
- Крупные (процесс или задача)
- Менее крупные (поток или нить) (процесс выполняется в виде одного или нескольких потоков)
- Более крупные (задание или набор из одного или нескольких процессов, управляемых как единое целое)
- максимальное количество процессов в задании
- суммарное время центрального процессора для каждого процесса и всего задания
- максимальное количество используемой памяти для каждого процесса и всего задания

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

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