Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга 1 ОС.doc
Скачиваний:
94
Добавлен:
11.11.2018
Размер:
2.44 Mб
Скачать

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 ХР наличие процессов невозможное.