Выполнено"> Выполняется"> Заброшено"> Не начиналось"> Решено"> Не решено"> %developers; ]> &header;

Содержимое

Обзор

Объекты планирования ядра (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), описывающей новые системные вызовы. &a.archie; 10 сентября 2002 &status.done;
libpthread Repo-копия библиотеки libpthread из libc_r. хозяин cvs 16 сентября 2002 &status.done;
libpthread Использование KSE для планирования процессов. &a.mini; 30 октября 2002 &status.done;
libpthread Планирование простаивающего контекста по возможности. &a.mini; 2 ноября 2002 &status.done;
libpthread Направление сигналов в потоки. &a.deischen; &a.davidxu; 28 июня 2003 &status.done;
libpthread Разделение для SMP. &a.deischen; 3 мая 2003 &status.done;
kernel Разделение для SMP. &a.davidxu; 3 мая 2003 &status.done;
libpthread Запуск нескольких KSE (один на каждый CPU). &a.davidxu; 3 мая 2003 &status.done;
libpthread, kernel Реализация машинно-зависимых функций для alpha. &a.marcel; 30 августа 2003 &status.wip;
libpthread, kernel Реализация машинно-зависимых функций для amd64. &a.davidxu; &a.deischen; 30 августа 2003 &status.done;
libpthread, kernel Реализация машинно-зависимых функций для i386. &a.davidxu; &a.deischen; 30 августа 2003 &status.done;
libpthread, kernel Реализация машинно-зависимых функций для ia64. &a.marcel; 30 августа 2003 &status.done;
libpthread, kernel Реализация машинно-зависимых функций для sparc64. &a.jake; 30 августа 2003 &status.wip;
kernel Реализация схемы сигналов, специфичной для KSE. &a.davidxu; 28 июня 2003 &status.done;
libpthread Реализация границ системных потоков. &a.deischen; 3 мая 2003 &status.done;
kernel Эффективное ограничение системных потоков (отсутствие вызовов при их блокировке). &a.davidxu; 30 августа 2003 &status.done;
&footer;