next up previous contents
Next: Преимущества многопоточности. Up: Потоки (threads). Previous: Потоки (threads).   Contents

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

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

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

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

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

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

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



2003-12-09