Потоки и их типы в операционной системе

Опубликовано: 20 Декабря, 2021

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

  1. Программный счетчик
  2. Набор регистров
  3. Пространство стека

Потоки не независимы друг от друга, поскольку они разделяют код, данные, ресурсы ОС и т. Д.

Сходство между потоками и процессами -

  • Одновременно активен только один поток или процесс
  • Внутри процесса оба выполняются последовательно.
  • Оба могут создавать детей

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

  • Потоки не независимы, процессы независимы.
  • Потоки созданы, чтобы помогать друг другу, процессы могут это делать, а могут и не делать.

Типы потоков:

  1. Поток уровня пользователя (ULT) -
    Реализованы в библиотеке пользовательского уровня, они не создаются с помощью системных вызовов. Переключение потоков не требует вызова ОС и прерывания ядра. Ядро не знает о потоках пользовательского уровня и управляет ими, как если бы они были однопоточными процессами.

    Преимущества ULT -

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

    Недостатки ULT -

    • Отсутствие или меньшая координация между потоками и ядром.
    • Если один поток вызывает сбой страницы, весь процесс блокируется.

  2. Поток уровня ядра (KLT) -
    Ядро знает потоки и управляет ими. Вместо таблицы потоков в каждом процессе в самом ядре есть таблица потоков (главная), которая отслеживает все потоки в системе. Кроме того, ядро также поддерживает традиционную таблицу процессов для отслеживания процессов. Ядро ОС обеспечивает системный вызов для создания потоков и управления ими.

    Преимущества КЛТ -

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

    Недостатки КЛТ -

    • Медленно и неэффективно.
    • Для этого требуется блок управления потоком, поэтому это накладные расходы.

Резюме:

  1. У каждого ULT есть процесс, который отслеживает поток с помощью таблицы потоков.
  2. Каждый KLT имеет таблицу потоков (TCB), а также таблицу процессов (PCB).

РЕКОМЕНДУЕМЫЕ СТАТЬИ