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