Главная / Эвм / Понятия процесс и поток

Понятия процесс и поток

В настоящее время в большинстве операционных систем определены два типа единиц работы – процессы и потоки. Процесс (задача) — программа, находящаяся в стадии выполнения. Потоки (нити) возникли как средство распараллеливания вычислений в рамках одного процесса.

С каждым процессом связывается его Адресное пространство. Адресное пространство процесса содержит саму программу, ее данные, стек программы.

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

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

С каждым потоком связывается: счетчик выполнения команд, регистры для текущих переменных, стек, состояние. Потоки разделяют между собой адресное пространство, глобальные переменные, открытые файлы, таймеры, семафоры, статистическую информацию своего процесса.

Преимущества использования потоков:

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

Мультипрограммирование более эффективно на уровне потоков, а не процессов. Наибольший эффект от введения многопоточной обработки достигается в мультипроцессорных системах, в которых потоки могут выполняться на разных процессорах действительно параллельно (а не псевдопараллельно).