Потоки и их типы в операционной системе
Опубликовано: 20 Декабря, 2021
Поток - это единый поток последовательности в процессе. Потоки имеют те же свойства, что и процесс, поэтому они называются легковесными процессами. Потоки выполняются один за другим, но создается иллюзия, будто они выполняются параллельно. Каждый поток имеет разные состояния. В каждом потоке есть
- Программный счетчик
- Набор регистров
- Пространство стека
Потоки не независимы друг от друга, поскольку они разделяют код, данные, ресурсы ОС и т. Д.
Сходство между потоками и процессами -
- Одновременно активен только один поток или процесс
- Внутри процесса оба выполняются последовательно.
- Оба могут создавать детей
Различия между потоками и процессами -
- Потоки не независимы, процессы независимы.
- Потоки созданы, чтобы помогать друг другу, процессы могут это делать, а могут и не делать.
Типы потоков:
- Поток уровня пользователя (ULT) -
Реализованы в библиотеке пользовательского уровня, они не создаются с помощью системных вызовов. Переключение потоков не требует вызова ОС и прерывания ядра. Ядро не знает о потоках пользовательского уровня и управляет ими, как если бы они были однопоточными процессами.Преимущества ULT -
- Может быть реализован в ОС, не поддерживающей многопоточность.
- Простое представление, поскольку поток имеет только счетчик программ, набор регистров, пространство стека.
- Просто создать без вмешательства ядра.
- Переключение потоков происходит быстро, так как не требуется никаких вызовов ОС.
Недостатки ULT -
- Отсутствие или меньшая координация между потоками и ядром.
- Если один поток вызывает сбой страницы, весь процесс блокируется.
- Поток уровня ядра (KLT) -
Ядро знает потоки и управляет ими. Вместо таблицы потоков в каждом процессе в самом ядре есть таблица потоков (главная), которая отслеживает все потоки в системе. Кроме того, ядро также поддерживает традиционную таблицу процессов для отслеживания процессов. Ядро ОС обеспечивает системный вызов для создания потоков и управления ими.Преимущества КЛТ -
- Поскольку ядро полностью знает о потоках в системе, планировщик может решить выделить больше времени процессам, имеющим большое количество потоков.
- Подходит для приложений, которые часто блокируют.
Недостатки КЛТ -
- Медленно и неэффективно.
- Для этого требуется блок управления потоком, поэтому это накладные расходы.
Резюме:
- У каждого ULT есть процесс, который отслеживает поток с помощью таблицы потоков.
- Каждый KLT имеет таблицу потоков (TCB), а также таблицу процессов (PCB).