Skip site navigation (1) Skip section navigation (2)

Проект FreeBSD KSE

Содержимое

Обзор

Объекты планирования ядра (Kernel Scheduler Entities - KSE) представляет собой систему многопоточного выполнения ядра, архитектура которой подобна Scheduler Activations [Андерсон и другие]. Она обеспечивает баланс между моделями многопоточного выполнения пользовательского уровня (1:N) и уровня ядра (1:1), обладает большинством преимуществ обоих подходов, и несколькими их отрицательными сторонами.

В этом проекте имеются две стороны: поддержка на уровне ядра и поддержка на уровне пользователя. Поддержка на уровне ядра представляет собой модификации к планировщику FreeBSD; пользовательская половина является реализацией POSIX®-потоков выполнения, которые используют преимущества дополнительных служб ядра.

Целью является замена имеющейся на данный момент пользовательской системы многопоточного выполнения в библиотеке libc_r и параметре -pthread компилятора gcc, на новую библиотеку libpthread, которая будет компоноваться при использовании параметра -lpthread компилятора gcc.

Использование KSE

Вся работа над KSE выполняется в 5.0-CURRENT. Для построения ядра с изменениями, касающимися KSE, не требуется никаких специальных параметров ядра (изменения не отделимы от планировщика FreeBSD).

Для использования KSE в приложении вам необходимо скомпоновать его с библиотекой libpthread; это делается весьма однозначным образом. В make-файлах приложения измените параметр компилятора -pthread или параметр компоновщика -lc_r на -lpthread и выполните компоновку повторно. В качестве альтернативного способа вы можете использовать файл /etc/libmap.conf для отображения libc_r в libpthread (обратитесь к libmap.conf(5)).

Дополнительная литература

Состояние проекта

Далее приведен неполный общий перечень задач:

Модуль Задача Ответственный Последнее обновление Состояние
libpthread Написание страницы справки kse(2), описывающей новые системные вызовы. Archie Cobbs 10 сентября 2002 Выполнено
libpthread Repo-копия библиотеки libpthread из libc_r. хозяин cvs 16 сентября 2002 Выполнено
libpthread Использование KSE для планирования процессов. Jonathan Mini 30 октября 2002 Выполнено
libpthread Планирование простаивающего контекста по возможности. Jonathan Mini 2 ноября 2002 Выполнено
libpthread Направление сигналов в потоки. Daniel Eischen David Xu 28 июня 2003 Выполнено
libpthread Разделение для SMP. Daniel Eischen 3 мая 2003 Выполнено
kernel Разделение для SMP. David Xu 3 мая 2003 Выполнено
libpthread Запуск нескольких KSE (один на каждый CPU). David Xu 3 мая 2003 Выполнено
libpthread, kernel Реализация машинно-зависимых функций для alpha. Marcel Moolenaar 30 августа 2003 Выполняется
libpthread, kernel Реализация машинно-зависимых функций для amd64. David Xu Daniel Eischen 30 августа 2003 Выполнено
libpthread, kernel Реализация машинно-зависимых функций для i386. David Xu Daniel Eischen 30 августа 2003 Выполнено
libpthread, kernel Реализация машинно-зависимых функций для ia64. Marcel Moolenaar 30 августа 2003 Выполнено
libpthread, kernel Реализация машинно-зависимых функций для sparc64. Jake Burkholder 30 августа 2003 Выполняется
kernel Реализация схемы сигналов, специфичной для KSE. David Xu 28 июня 2003 Выполнено
libpthread Реализация границ системных потоков. Daniel Eischen 3 мая 2003 Выполнено
kernel Эффективное ограничение системных потоков (отсутствие вызовов при их блокировке). David Xu 30 августа 2003 Выполнено