Выполнено"> Выполняется"> Заброшено"> Не начиналось"> Решено"> Не решено"> %developers; ]> &header;
Объекты планирования ядра (Kernel Scheduler Entities - KSE) представляет собой систему многопоточного выполнения ядра, архитектура которой подобна Scheduler Activations [Андерсон и другие]. Она обеспечивает баланс между моделями многопоточного выполнения пользовательского уровня (1:N) и уровня ядра (1:1), обладает большинством преимуществ обоих подходов, и несколькими их отрицательными сторонами.
В этом проекте имеются две стороны: поддержка на уровне ядра и поддержка на уровне пользователя. Поддержка на уровне ядра представляет собой модификации к планировщику FreeBSD; пользовательская половина является реализацией &posix;-потоков выполнения, которые используют преимущества дополнительных служб ядра.
Целью является замена имеющейся на данный момент пользовательской системы многопоточного выполнения в библиотеке libc_r и параметре -pthread компилятора gcc, на новую библиотеку libpthread, которая будет компоноваться при использовании параметра -lpthread компилятора gcc.
Вся работа над 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; |