Управление процессами и потоками
Управление процессами и потоками — это то, как операционная система создает, планирует и уничтожает единицы выполнения — процессы с их собственными адресными пространствами и потоки, которые разделяют одно — и переключает процессор между ними.
Definition
Управление процессами и потоками включает механизмы операционной системы, которые представляют запущенные программы как процессы и потоки, поддерживают их состояние выполнения, создают и завершают их, а также переключают процессор между ними, сохраняя и восстанавливая их контексты.
Scope
Эта тема охватывает абстракцию процесса и его жизненный цикл, блок управления процессом, создание и завершение процессов, потоки и модели многопоточности, переключение контекста и межпроцессное взаимодействие. Она исключает политику выбора следующей готовой задачи для выполнения (планирование ЦП) и координацию общих данных (параллелизм, рассматриваемый в общих вопросах операционных систем), фокусируясь на структурах, которые представляют и управляют выполнением.
Core questions
- Какое состояние должна поддерживать операционная система для каждого процесса и потока?
- Как создаются процессы, и чем потоки отличаются от процессов?
- Что происходит во время переключения контекста и какова его стоимость?
- Как процессы взаимодействуют и координируются через адресные пространства?
Key concepts
- процесс и блок управления процессом
- состояния процесса и жизненный цикл
- поток и многопоточность
- потоки пользовательского уровня против потоков уровня ядра
- переключение контекста
- fork и exec
- межпроцессное взаимодействие
- изоляция процессов
Key theories
- Абстракция процесса
- Операционная система представляет каждую запущенную программу как процесс с собственным адресным пространством и контекстом выполнения, хранящимся в блоке управления процессом, что обеспечивает изоляцию, планирование и контролируемое совместное использование процессора.
Mechanisms
Каждый процесс описывается блоком управления процессом, содержащим его регистры, отображения памяти, открытые файлы и состояние планирования. Система создает процессы (например, с помощью fork и exec), переводит их через состояния (новый, готовый, выполняющийся, ожидающий, завершенный) и переключается между ними, сохраняя один контекст и восстанавливая другой. Потоки разделяют адресное пространство своего процесса, что делает переключение дешевле, но требует синхронизации; межпроцессное взаимодействие использует каналы, сообщения или общую память.
Clinical relevance
Управление процессами и потоками лежит в основе многозадачности в каждой современной системе. Изоляция процессов является краеугольным камнем безопасности и стабильности, потоки обеспечивают отзывчивые и параллельные приложения, а стоимость переключения контекста и межпроцессного взаимодействия формирует дизайн серверов, сред выполнения и параллельного программного обеспечения.
History
Концепция процесса развивалась вместе с системами мультипрограммирования и разделения времени в 1960-х годах, а UNIX установил модель fork/exec и абстракцию процесса, широко используемые сегодня. Потоки были добавлены для использования многопроцессорных систем и улучшения отзывчивости, при этом стандарты, такие как потоки POSIX, формализовали видимую пользователю многопоточность.
Debates
- Потоки пользовательского уровня против потоков уровня ядра
- Потоки пользовательского уровня дешевы в управлении, но не могут быть независимо запланированы на разных ядрах и блокируют весь процесс при блокирующем вызове, тогда как потоки уровня ядра интегрируются с планировщиком с более высокими накладными расходами; гибридные модели пытаются объединить преимущества.
Key figures
- Ken Thompson
- Dennis Ritchie
- Per Brinch Hansen
- Abraham Silberschatz
- Andrew S. Tanenbaum
Related topics
Seminal works
- silberschatz2018
- tanenbaum2014os
Frequently asked questions
- Какую информацию операционная система хранит для каждого процесса?
- Она хранит блок управления процессом, записывающий сохраненные регистры процесса и счетчик команд, отображения памяти, состояние и приоритет планирования, открытые файлы, а также информацию об учете и идентификации — все, что необходимо для приостановки процесса и последующего возобновления его точно с того места, где он остановился.
- Почему переключение между потоками дешевле, чем между процессами?
- Потоки внутри процесса разделяют одно и то же адресное пространство и ресурсы, поэтому переключение между ними не требует изменения отображений памяти. Переключение между процессами дополнительно изменяет адресные пространства и может приводить к очистке кэшей трансляции, что делает его более дорогим.