Re: Re: FreeBSD 5.1

От: Vladimir A. Butenko <CGatePro_at_mx_ru>
Дата: Thu 09 Oct 2003 - 03:01:59 MSD


On Thu, 9 Oct 2003 02:27:31 +0400
  <CGatePro@mx.ru> (Andrew A. Vasilyev) wrote:
> On Wed, Oct 08, 2003 at 03:09:31PM -0700, Vladimir A. Butenko wrote:
> > Это ж надо было НЕ сделать их в течении 5 лет. Теперь сделали - вопрос,
>
> А нафига они нужны в 1-2-процессорных конфигурациях?

Потому что реализации "чисто в юзерланде" невозможны. Нельзя сделать так, чтобы вызов open() передавал управление в библиотеку, а она сама уже запускала другой тред. Поэтому в Free/OpenBSD есть куча "параллельных", неблокирующих вызовов для всех "потенциально блокирующих" syscall. То есть libc вызывает эти "другие" ядренные примитивы, а сама передает управление подпрограммам диспетчера. А при этом "неблокирующие вызовы" каким-то образом вызывают те же подпрограммы, чтобы сказать, что они,мол, все сделали. Но в Унихе нет понятия "completion routine". Поэтому это там, *кажется*, сделано при помощи сигналов. Соответственно, при входе в диспетчер надо сигналы блокировать.

То есть геморрой там - уровня CP/M. И именно в нем, как я *понял*, были все эти баги в FreeBSD threading. Которые они с трудом, но вылизали.

Когда концепция трединга есть в ядре - то все это сильно упрощается. А ядро усложняется не сильно, так как в нем треды и так есть и были - так или иначе.

> И удивительно, что всего за 5 лет их сделали - это из монолитного-то
> ядра. Ни один "коммерческий" ОС так быстро не развивался. Твой любимый
> Виндовз сколько лет от DOS 3.1 до Posix threads шёл? :-)))

В Windows треды были изначально. Как и в OS/2, ставшей Windows NT.

В "коммерческих" Унихах работающие треды появились хрен знает когда, а когда приняли стандарт p-threads, то работающие p-threads у всех появились где-то за год - за 1997-ой. Стандарт официально 1995-го года, реально - конца 1996-го. В 1998 у всех были работающие треды. Ну, в IRIX они черепашили, как СЕЙЧАС выяснилось - на 4-х процессорных машинах, так это быстро поправили.

> ________
> ANDY
Sincerely,
Vladimir Получено Wed Oct 08 23:03:38 2003

Этот архив был сгенерирован hypermail 2.1.8 : Tue 21 Feb 2006 - 03:14:32 MSK