
- •Глава 3
- •Раздел 3 Управление процессами и потоками
- •3.1. Базовые понятия процессов и потоков
- •3.1.2. Модели процессов и потоков
- •3.1.3. Составные элементы процессов и потоков
- •3.2. Многопотоковость и ее реализация
- •3.2.1. Понятие параллелизма
- •3.2.2. Виды параллелизма
- •3.2.3. Преимущества и недостатки многопотоковости
- •3.2.4. Способы реализации модели потоков
- •3.2.5 Состояния процессов и потоков
- •3.3 Описание процессов и потоков
- •3.3.1. Управляющие блоки процессов и потоков
- •3.3.2. Образы процесса и потока
- •3.4. Переключение контекста и обработка прерываний
- •3.4.1. Организация переключения контекста
- •3.4.2. Обработка прерываний
- •3.5 Создание и завершение процессов и потоков
- •3.5.1 Создание процессов
- •3.5.2. Иерархия процессов
- •3.5.3. Управление адресным пространством во время создания процессов
- •3.5.4. Особенности завершения процессов
- •3.5.5. Синхронное и асинхронное выполнение процессов
- •3.5.6. Создание и завершение потоков
- •3.6 Управление потоками в Linux
- •3.6.1. Базовая поддержка многотопотоковости
- •3.6.2. Особенности новой реализации много поточности в ядре Linux
- •3.6.3. Потоки ядра Linux
- •3.7 Управление процессами в Windows хр
- •3.7.1. Составные элементы процесса
- •3.7.2. Структуры данных процесса
- •3.7.3. Создание процессов
- •3.7.4. Завершение процессов
- •3.7.5. Процессы и ресурсы. Таблица объектов процесса
- •3.8 Управление потоками в Windows хр
- •3.8.1. Составные элементы потока
- •3.8.2. Структуры данных потока
- •3.8.3. Создание потоков
3.6.2. Особенности новой реализации много поточности в ядре Linux
Попытки усовершенствовать реализацию многотопотоковости в ядре системы, а также библиотеку поддержки потоков, которая использует новые возможности ядра, описанны в литературе [67]. Новая реализация многотопотоковости в ядре системы имеет такие особенности.
-
Повысилась производительность операции создания и завершение потоков. Снято ограничения на общее количество потоков в системе. Система остается стабильной при условиях одновременного создания и завершение сотен тысяч потоков (при наличии достаточного объема оперативной памяти).
-
Все потоки процесса теперь возвращают один и тот самый идентификатор (pid), кроме того, связь «предок-потомок» между ними не поддерживается (у созданного потока сохраняется тот самый предок, что и у потока-творца). Как процесс в системе регистрируют только начальный поток приложения.
-
Реализация вызова clone(), расширена таким образом, что сделала ненужным поток-менеджер.
Сегодня новые средства интегрированные в тестовую версию ядра. Доступная также обновленная реализация библиотеки потоков, которая получила название NPTL (Native POSIX Threads Library).
Библиотека поддержки потоков NPTL
Библиотека NPTL предназначена для того, чтобы, опираясь на новые возможности ядра, обеспечить полную и корректную реализацию стандарта потоков POSIX для использования в прикладных программах.
Основной особенностью библиотеки NPTL есть то, что в ней сохранилась поддержка схемы многопотоковости 1:1, вследствие чего достигается простота и надежность реализации. При этом производительность и масштабируемость обеспечены обновленной поддержкой багатопотоковості в ядре. Программный интерфейс библиотеки не изменился сравнительно с LinuxThreads.
3.6.3. Потоки ядра Linux
Кроме процессов и потоков пользователя, Linux также поддерживает специальный вид планированных объектов, которые имеют уже знакомое название - потоки ядра. Такие потоки планируют как обычные процессы и потоки, при этом каждый из них имеет свой идентификатор (ріd).
Отличия потоков ядра от процессов и потоков пользователя состоят в потому, что:
-
функции потока для них определяют в коде ядра;
-
они выполняются только в режиме ядра;
-
для них недоступные участки памяти, выделенные в режиме пользователя.
3.7 Управление процессами в Windows хр
Понятие процесса и потока в Windows ХР четко разграничены. Процессы в данной системе определяют «поле деятельности» для потоков, которые выполняются в их адресном пространстве. Среди ресурсов, с которыми процесс может работать прямо, отсутствует процессор - он доступный только потокам этого процесса. Процесс, тем не менее, может задать начальные характеристики для своих потоков и тем самым повлиять на их выполнение.
3.7.1. Составные элементы процесса
Рассмотрим базовые составные элементы процесса.
♦ Адресное пространство процесса состоит из набора адресов виртуальной памяти, которые он может использовать. Эти адреса могут быть связаны с оперативной памятью, а могут - с отображенными в память ресурсами. Адресное пространство конкретного процесса недоступное другим процессам.
Процесс владеет системными ресурсами, такими как файлы, сетевые соединения, устройства ввода-вывода, объекты синхронизации и т.п..
-
Процесс содержит некоторую стартовую информацию для потоков, которые в нем будут создаваться. Например, это информация о базовом приоритете и привязывании к процессору.
-
Процесс должен содержать хотя бы один поток, который система направляет на выполнение. Без потоков в Windows ХР наличие процессов невозможное.