Понятие потока. Характеристики потоков. Многопоточность как свойство операционной системы

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

Многопоточность ( англ. multi-threading) - свойство операционной системы или приложения , заключающийся в том, что процесс , порожденный в операционной системе, может состоять из нескольких потоков , выполняющихся параллельно, или даже одновременно на многопроцессорных системах. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов компьютера .

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

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

Преимущества в многопоточности следующие:

· Упрощение программы в некоторых случаях, за счет использования общего адресного пространства

· Меньшие относительно процесса временные затраты на создание нити и взаимодействие между потоками

· Повышение производительности процесса за счет распараллеливания процессорных вычислений и операций ввода / вывода

Каждый процесс имеет таблицу потоков, аналогичную таблице процессов ядра.

Преимущества этого типа следующие:

· возможность реализации на ядре, что не поддерживает многопоточность

· скорее переключение, создание и завершение потоков

· процесс может иметь собственный алгоритм планирования.

Недостатки:

· отсутствие прерывания по таймеру внутри одного процесса

· при использовании блокирующего системного запроса остальные потоков блокируется

· отсутствует выигрыш в быстродействии на много-процессорных системах

· сложность реализации