Потоки
Потоки (нити, треды- thread) это отдельные параллельно выполняющиеся программы в рамках одного процесса. Для потоков в отличии от процессов характерно следующие важное свойство: они делят между собой почти все ресурсы потока- одновременно используют эти ресурсы. Обычно различные потоки совместно используют следующие ресурсы потока: 1) адресное пространство; 2) глобальные переменные; 3) открытые файлы; 4) дочерние процессы; 5) необработанные аварийные сигналы; 6) сигналы тревоги и их обработчики; 7) информацию об используемых ресурсах.
При этом каждый из потоков имеет собственный:
- счетчик команд
- регистр
- стеки
- состояние процессора
- локальные переменные
-
В каждой ОС имеются системные вызовы с помощью которых программа выполняемая в процессе может произвести запуск, приостановку и завершение одного или нескольких потоков. При переключениях процессора (обычно по таймеру) между отдельными потоками ОСистемой тратится значительно меньше времени чем при переключении между отдельными процессами. Это связано с тем, что в данном случи процессору нужно производить дополнительные и последующие восстановление значительно меньшего числа переменных процесса (счетчика команд, регистров стеков состояний процессора).
При переключении между потоками процессору нет необходимости производить выполнение самых длительных операций (запоминание и восстановление памяти используемых процессов, описание состояния всех файлов, а так же устройств занятый процессом).
Необходимость поддержания ОСистемой одновременного выполнения 2-х различных видов выполняющихся программ (процессов и потоков) значительно усложняет написание ОС.
Однако на это идут, поскольку организация потоков позволяет значительно упростить выполняющиеся программы и кроме того сделать выполнение программ значительно более быстрым.
предыдущая тема следующая тема