double arrow

Потоки исполнения

Для ускорения решения задач в рамках классических операционных систем вводится новая абстракция внутри понятия “процесс” – поток исполнения или просто поток (thread). Потоки процесса разделяют его программный код, глобальные переменные и системные ресурсы, но каждый поток имеет свой собственный программный счетчик, свое содержимое регистров и свой собственный стек. Теперь процесс представляется как совокупность взаимодействующих потоков и выделенных ему ресурсов. Процесс, содержащий всего один поток исполнения, идентичен процессу. Для таких процессов используется термин традиционный процесс. Потоки могут порождать потоки-потомки только внутри своего процесса, и переходить из состояния в состояние.

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

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

Различают операционные системы, поддерживающие потоки на уровне:

- ядра;

- библиотек.

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

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


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