Различие между процессами и потокам

С помощью процессов можно организовать параллельное выполнение программ. Для этого процессы размножаются вызовами fork(), а затем между ними организуется взаимодействие с помощью средствами межпроцессного взаимодействия.

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

1. Процесс располагает определенными ресурсами. Он размещен в некотором виртуальном адресном пространстве, содержащем образ этого процесса. Кроме того, процесс управляет другими ресурсами (файлы, устройства ввода / вывода и т.д.).

2. Процесс подвержен диспетчеризации. Он определяет порядок выполнения одной или нескольких программ, при этом выполнение может перекрываться другими процессами. Каждый процесс имеет состояние выполнения и приоритет диспетчеризации.

Если рассматривать эти характеристики независимо друг от друга (как это принято в современной теории ОС), то:

1) владельцу ресурса, обычно называемому процессом или задачей, присущи:

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

- индивидуальный доступ к процессору, другим процессам, файлам, и ресурсам ввода – вывода;

2) модулю для диспетчеризации, обычно называемому потоком или облегченным процессом, присущи:

- состояние выполнения (активное, готовность и т.д.);

- сохранение контекста потока в неактивном состоянии;

- стек выполнения и некоторая статическая память для локальных переменных;

- доступ к пространству памяти и ресурсам своего процесса.

Все потоки процесса разделяют общие ресурсы. Изменения, вызванные одним потоком, становятся немедленно доступны другим.

При корректной реализации потоки имеют определенные преимущества перед процессами. Им требуется:

- меньше времени для создания нового потока, поскольку создаваемый поток использует адресное пространство текущего процесса;

- меньше времени для завершения потока;

- меньше времени для переключения между двумя потоками в пределах процесса;

- меньше коммуникационных расходов, поскольку потоки разделяют все ресурсы, и в частности адресное пространство. Данные, продуцируемые одним из потоков, немедленно становятся доступными всем другим потокам.

Так как ОС UNIX является многозадачной системой, то в ходе работы несколько процессов могут конкурировать между собой за доступ к различным ресурсам. Для справедливого распределения ресурсов (память, дисковое пространство) каждому из процессов устанавливается индивидуальный набор ограничений.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: