- *С каждым потоком связывается:
- — Счетчик выполнения команд
- — Регистры для текущих переменных
- — Стек
- — Состояние
- *Потоки делят между собой элементы своего процесса:
- -Адресное пространство
- -Глобальные переменные
- -Открытые файлы
- -Таймеры
- -Семафоры
- -Статистическую информацию.
Преимущества использования потоков:
Создание потоков требует от ОС меньших накладных расходов, чем при создании процессов.
Потоки одного процесса могут взаимодействовать и обмениваться данными, не обращаясь к ОС, а используя общую память.
Быстрота создания потока по сравнению с процессом.
Повышение производительности самой программы.
Задача, оформленная в виде нескольких потоков в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения отдельных ее частей.
Например: текстовый редактор с тремя потоками может одновременно взаимодействовать с пользователем, форматировать текст и записывать на диск резервную копию.
Мультипрограммирование более эффективно на уровне потоков, а не процессов.
Наибольший эффект от введения многопоточной обработки достигается в мультипроцессорных системах, в которых потоки могут выполняться на разных процессорах действительно параллельно (а не псевдопараллельно).
Подсистема управления процессами и потоками
- — занимается созданием и уничтожением процессов и потоков;
- — поддерживает взаимодействие между процессами и потоками, обеспечивая согласование скоростей потоков, взаимные блокировки и синхронизацию;
- — распределяет процессорное время между несколькими одновременно существующими в системе процессами и потоками;
- — обеспечивает процессы необходимыми ресурсами;
- — поддерживает в памяти специальные информационные структуры для учета ресурсов, выделенных каждому процессу;
- — назначает процессу статически или динамически ресурсов в единоличное пользование или в совместное пользование с другими процессами;
- — взаимодействует с другими подсистемами ОС, ответственными за управление ресурсами, такими как подсистема управления памятью, подсистема ввода-вывода, файловая система.
Процесс при его создании включает следующую основную информацию:
- — Счетчик команд — адрес текущей выполняемой команды процесса;
- — Стек — резидентная область основной памяти, в которой хранятся локальные данные процедур процесса, их параметры (аргументы) и связующая информация между ними, необходимая для организации вычислений.
- — Секция данных — статическая (постоянно выделенная, неизменного размера) область основной памяти, в которой хранятся его глобальные переменные, массивы, структуры, объекты.
- — Исполняемый код (команды) процесса первоначально хранится во вторичной памяти и загружается в основную память полностью или частично при обращении к нему.