Персональный
сайт
Игоря
Сысоева


 
english
обо мне
 
sysoev.ru
 
nginx
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
 

Немного из мэйл листов FreeBSD, N5

 

30.03.2003

  • Потоки вида 1:1
    В ядре FreeBSD 5.0-CURRENT уже практически всё готово для поддержки потоков вида 1:1, однако основные усилия разработчиков KSE направлены на разработку потоков вида M:N, её ядерной части и пользовательской библиотеки. Так как эта разработка грозит затянуться, Jeff Roberson сделал реализацию потоков вида 1:1 на основе инфраструктуры KSE, но используя при этом свой API, а не тот, который описан в kse(2). Весьма вероятно, что во FreeBSD 5.1-RELEASE уже будут отлаженные потоки с поддержкой на уровне ядра и совместимые со стандартом POSIX pthreads.

    03.04.2003:
    Первый вариант уже находится в репозитарии и опробован в работе с Mozilla, OpenOffice и KDE. Пользовательская библиотека libthr бинарно совместима с библиотекой libc_r. То есть, если приложение собрано с динамически подгружаемой библиотекой libc_r, то можно сделать симлинк на libthr и проверить работоспособность с новыми потоками.

    Для доступа к данным, специфичным для каждого потока, на платформе x86 используется сегментный регистр gs, в котором хранится селектор LDT. Так как для каждого потока используется свой селектор, то максимально возможное число потоков на платформе x86 ограничено максимальным числом селекторов в LDT - 8192. На платформе sparc64 используется регистр g6 и такого жёсткого ограничения на число потоков нет. Возможно, в будущем реализация измениться, например, все потоки будут использовать один и тот же селектор, а при переключении потоков ядро будет модифицировать сам дескриптор в LDT. Сейчас же селектор и дескриптор устанавливаются на пользовательском уровне сразу после создания потока. Хотя возможен и другой вариант - использование libthr с большим количеством потоков будет сочтено нецелесообразным и вместо этого будет рекомендоваться использовать потоки модели M:N, реализованные в библиотеке libkse.

  • Поддержка PAE
    Во FreeBSD 5.0-CURRENT появилась поддержка PAE, позволяющая использовать до 64G физической памяти на процессорах PentiumPro и выше. Хотя адресное пространство процесса ограничено 4G (на самом деле, даже 3G), тем не менее, PAE позволяет хранить больше используемых страниц в памяти, не прибегая к свопу. Наиболее оптимально использование PAE с устройствами и их драйверами, поддерживающими 64-битную адресацию.

(C) Игорь Сысоев
http://sysoev.ru