Библиотеки реализации многопоточной модели в пространстве пользователя


Операционная система FreeBSD содержит три различные библиотеки реализации многопоточной модели исполнения: libc_r, libkse и libthr.

Самой первой на свет появилась библиотека libc_r. Ее многопоточная модель была целиком реализована в пространстве пользователя. Она эмулировала работу потоков в пределах одного процесса. Никакой масштабируемости, никаких преимуществ от наличия нескольких процессоров в системе. Библиотека libc_r уже практически не поддерживается, она плохо работает и является старейшей библиотекой реализации многопоточной модели исполнения в операционной системе FreeBSD. Библиотека libc_r по-прежнему существует в дереве исходных кодов FreeBSD, но по умолчанию она не устанавливается. Использовать библиотеку libc_r не рекомендуется, но при определенных обстоятельствах, когда она может потребоваться, ее можно установить из исходных кодов:

# cd /usr/src/lib/libc_r
# make obj all install clean

В версии FreeBSD 6.0 по умолчанию использовалась библиотека libkse, представляющая собой результат амбициозной попытки реализовать потоки M:N, где M:N означает, что в любой момент времени в системе имеется М процессоров и пул из N потоков в пространстве пользователя. Теоретически, это самая мощная модель многопоточного исполнения, но она отличается высокой сложностью и с трудом поддается реализации. Очень немногие операционные системы поддерживают потоки M:N, и хотя реализация в операционной системе вполне работоспособна, она не отличается оптимальностью. Библиотека libkse по-прежнему распространяется в составе FreeBSD, но уже не используется по умолчанию.

Библиотека libthr — это новая библиотека реализации многопоточной модели исполнения, используемая операционной системой FreeBSD по умолчанию. В библиотеке libthr применяется более простая модель потоков, чем в libkse, но она обеспечивает более высокую производительность, частично благодаря своей простоте.

Вам также могут встретиться упоминания о библиотеке libpthread(3). Название pthread — это сокращение от POSIX threads (потоки исполнения стандарта POSIX). Таким образом, так может называться любая библиотека реализации многопоточной модели исполнения, соответствующая требованиям стандарта POSIX. В операционной системе FreeBSD название libpthread — это всего лишь псевдоним системной библиотеки, используемой по умолчанию.

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

Комментарии запрещены.