Задания, задачи, процессы, потоки, волокна
Задания
– требования пользователя на выполнение некоторого объёма
вычислительных работ. Каждое задание реализуется как определенная
совокупность программ, т.е. задач.
Задание – отклик системы на запрос пользователя
При управлении ресурсами (заданиями), ОС осуществляет
предварительное планирование потока заданий, статическое распределение
ресурсов между одновременно выполняемыми заданиями. К этим ресурсам
относятся:
- Память (оперативная, внешняя, дисковая)
- Устройства монопольного использования
Такие ресурсы закрепляются за заданием с момента его
инициализации до момента его завершения. Такое управление называется
мониторингом, а осуществляющие его выполнение – мониторами.
Управление динамическими ресурсами динамически распределяет
ресурсы между задачами решаемыми одновременно. Динамическое управление
выполняет супервизор.
Управление данными обеспечивает все операции вв/выв,
организацию необходимых информационных структур с таблиц, управление
файловой системой, управление прямым доступом к памяти, обработка
ошибок вв/выв. Управления восстановлением обеспечивает регистрацию
машинных сбоев и отказов и восстановление работоспособности системы.
Основные аппаратные ресурсы, подлежащие управлению
- Время работы ЦП
- Адресное пространство основной памяти
- Оборудование вв/выв
- Файлы во внешней памяти
Процесс – это целенаправленный акт обработки
данных (выполняемая программа или программа в стадии выполнения). При
выполнении программ различают следующие характерные состояния
процессов:

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

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

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