Процессы и треды

Для реализации «мультизадачности» было введено понятие «легковесных»

процессов, которые в настоящее время получили названия потокиили треды(нити).

Понятие процессв плоскости ОС подчеркивает их обособленность:

- у каждого процесса свое виртуальное адресное пространство;

- каждому процессу выделяются свои ресурсы – файлы, семафоры и т.д.

Обособленность процессов нужна для защиты процессов друг от друга, т.к. они,

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

другом. Процессы не связаны между собой и могут принадлежать различным

пользователям, разделяющим одну вычислительную систему. ОС считает процессы

несвязанными и независимыми.

В самих процессах также имеется внутренний параллелизм, использование которого

позволяет повысить производительность вычислительной системы. Например,

некоторые операции, выполняемые приложением, могут требовать большого количества

процессорного времени, в этом случае пользователь долго будет ждать результата. Если

программные модули, выполняющие такие длительные операции, оформить в виде

самостоятельных «подпроцессов» (легковесных или облегченных потоков, тредов,

«задач»), то у пользователя появляется возможность параллельно выполнять несколько

операций в рамках одного процесса. Для этих задач ОС не создает полноценной

виртуальной машины:

- задачи не имеют собственных ресурсов;

- находятся в том же виртуальном адресном пространстве, что и данный

процесс;

- могут пользоваться теми же файлами, виртуальными устройствами и прочими

ресурсами.

Единственный собственный ресурс для потоков– процессорный.

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

а в многопроцессорных – могут выполняться параллельно, если нет конкуренции из-за

других ресурсов.

Главный результатмногопоточности – возможность параллельно выполнять

несколько видов операций в одной прикладной программе. Параллельное вычисление

(более эффективное использование ресурсов центрального процессора и уменьшение

суммарного времени выполнения задачи) реализуется на уровне потоков и программа,

оформленная в виде нескольких потоков в рамках одного процесса, выполняется быстрее

за счет параллельного выполнения отдельных ее частей.

Особенно эффективно можно использовать многопоточность для выполнения

распределенных приложений.

С понятием «поток» связано распределение процессорного времени.

С понятием «процесс» связано распределение всех ресурсов, при диспетчеризации

следует учитывать все ресурсы, закрепленные за процессом.

Каждый процесс всегда состоит, по крайней мере, из одного потока, и только при

наличии внутреннего параллелизма программист может расщепить один поток на

несколько.