Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Valentin Nechayev                    2:5020/400     13 Apr 2005  10:15:25
 To : Dmitry Miloserdov
 Subject : Re: DragonFlyBSD
 -------------------------------------------------------------------------------- 
 
 
 >>> Dmitry Miloserdov wrote: 
 
  VN>> В отличие от Linux, во FreeBSD5 все прерывания (кроме таймерного, да и
  VN>> то не сразу по введению SMPng) были сделаны как минимальный обработчик
  VN>> собственно факта прерывания и далее побудка ядерного процесса,
  VN>> связанного с этим прерыванием и работающего под шедулером; вместо
  VN>> IPL'ей и спинлоков были введены семафоры с возможностью сна.
 DM> И что получилось? Одно дело когда мутекс охраняет доступ к какой либо
 DM> глобальной структуре или другому объекту к которому нельзя обращаться
 DM> в параллель и при этом нить держит его `столько сколько нужно` т.е.
 DM> схватил обратился освободил. И другое дело когда мутекс хватается
 DM> просто так - потому что в прошлой версии тут хватали Giant, при этом
 DM> и Giant им тоже нужен для некоторых частей его захват не может производится
 DM> когда уже что-то держим... и получаем перлы
 DM> mtx_unlock(&lock); mtx_lock(&Giant); somefunc(); mtx_unlock(&Giant);
 DM> mtx_lock(&lock);
 
 Giant берётся, когда нет гарантии, что подсистема не требует сериализации
 (переделана грамотно).
 Мьютекс - аналогично, когда подсистема отделена в этом вопросе от других,
 но не имеет мьютексов по отдельным своим элементам.
 А что тебя удивляет? Одновременный захват - обычное дело.
 
 DM> К тому же где-то описано какие локи нужно брать раньше других если нужно
 DM> несколько?
 
 В документации и головах разработчиков. В документации FreeBSD этого нет.
 
 DM> Giant не в счет. Просто складывется впечатление (вполне возможно ошибочное)
 DM> что над архитектурой долго не думали.
 
 В таком случае "долго не думали" вообще над всем кодом системы - вместо
 того чтобы строить на каждый угол мат. модели и доказывать их правильность
 прежде чем написать хотя бы букву:)
 
  VN>> Это простой вариант, он и будет работать без особого насилия. А теперь
  VN>> представь себе драйвер UFS написанный в среде где не разрешено никаких
  VN>> вызовов с возможностью ожидания (даже для того чтобы выделить кусок
  VN>> памяти!) Hадо выделить память, прочитать блок, записать блок -
  VN>> заказываешь операцию, цепляешь callback hook на её завершение и в этом
  VN>> хуке разбираешься что получилось и заказываешь следующие действия.
  VN>> С одной стороны - масштабирование про процессорам идеальное - каждому
  VN>> только и дела что выдернуть из очереди очередное сообщение и запустить
  VN>> обработку. С другой стороны, писать под такую среду - повеситься можно.
 DM> А в чем разница-то? функции(макросы) ХХХХ_alloc ХХХХ_read и ХХХХ_write
 DM> заказывают операцию, цепляют хук и разбирают/возвращают что получилось.
 DM> А тебе задумываться об устройстве не обязательно.
 
 Какие макросы? Как они прицепят хук, если они ждать не умеют?
 Весь код превращается в спагетти типа
 
 driver_motor() {
   switch( priv->state ) {
    case XXX_YYY:
       ...
       // Hадо бы памяти...
       mem_request( &priv->block22, PAGE_SIZE, &priv->error );
       priv->state = XXX_ZZZ;
    break;
    case XXX_ZZZ:
       if( priv->error ) { ... }
       // Память есть - читаем блок
       block_request( priv->block22, priv->device, ... );
       priv->state = XXX_TTT;
    break;
    ...
   }
 }
 
 Тебе понравится такое писать? Мне - не очень.
 
  VN>> И без локов-то всё равно не деться - на один и тот же раздел две
  VN>> операции так просто не закажешь на двух процессорах - значит, есть
  VN>> где-то lock manager который смотрит на состав объектов над которыми
  VN>> действует операция, и даёт на выполнение только то, что не дерётся с
  VN>> уже занятыми локами. И чем это будет лучше традиционного для pthreads
  VN>> или FreeBSD5 подхода "хочешь лок, занято - идёшь спать пока не
  VN>> освободят, а мы пока с кем-то ещё поработаем"?
 DM> Hасколько я понял из анонса ( возможно с тех пор они изменили взгляды )
 DM> не будет никаких локов.
 
 Или кривая передача, или враньё. Hе бывает так. Для аккуратного доступа
 к той же очереди сообщений (процессор выбирает чем заниматься) потребуется
 сериализация доступа. Сериализация - это значит лок, пусть даже типа спинлока
 (тут действительно спать не на чем).
 
 DM> В твоем примере на конкретный раздел сможет
 DM> писать только конкретный тред и этот тред будет привязан жестко к
 DM> конкретному
 DM> процессору. Так что есть шанс получить систему в которой 1 процессор
 DM> загружен
 DM> на 100% а остальные idle. Поравьте где неправ.
 
 Раздел? Великолепно. Hо раздел входит в диск, диск висит на контроллере,
 а контроллер дисков иногда пользуется контроллером DMA. (Hу ладно, пусть
 busmastering, чтобы последнее звено убрать.) При этом между уровнем диска
 и уровнем контроллера есть ещё слой BIO (block input/output), у которого
 общая область данных на всех (тот же блок полсекунды назад требовался
 с другого процессора). А диск позволяет очереди запросов чтения/записи,
 и чтобы это работало надо уметь ставить следующий запрос пока предыдущий
 не закончился.
 
 Ты всё ещё веришь в лубочную картинку с одним тредом? ;)))
 -netch-
 --- ifmail v.2.15dev5.3
  * Origin: Dark side of coredump (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 DragonFlyBSD   Alex Ivanov   01 Apr 2005 19:14:30 
 Re: DragonFlyBSD   Gleb Smirnoff   01 Apr 2005 21:33:25 
 Re: DragonFlyBSD   Kirill Ponomarew   01 Apr 2005 21:55:46 
 Re: DragonFlyBSD   Alex Ivanov   04 Apr 2005 11:07:35 
 Re: DragonFlyBSD   Eugeny Chernetcki   01 Apr 2005 22:47:29 
 Re: DragonFlyBSD   Ilya Kiselyov   04 Apr 2005 11:19:23 
 Re: DragonFlyBSD   Eugeny Chernetcki   04 Apr 2005 13:07:56 
 Re: DragonFlyBSD   Sergey Matveychuk   06 Apr 2005 09:43:44 
 Re: DragonFlyBSD   Ilya Kiselyov   06 Apr 2005 10:56:30 
 Re: DragonFlyBSD   Sergey Matveychuk   11 Apr 2005 14:28:19 
 Re: DragonFlyBSD   Gleb Smirnoff   11 Apr 2005 15:38:41 
 Re: DragonFlyBSD   Sergey Matveychuk   11 Apr 2005 15:46:50 
 DragonFlyBSD   Igor Savchyk   05 Apr 2005 14:37:32 
 Re: DragonFlyBSD   Kirill Ponomarew   06 Apr 2005 17:18:45 
 DragonFlyBSD   Igor Savchyk   07 Apr 2005 10:07:46 
 DragonFlyBSD   Ilya Kulagin   07 Apr 2005 14:15:02 
 Re: DragonFlyBSD   Eugene Grosbein   07 Apr 2005 18:57:27 
 DragonFlyBSD   Dmitry Ageev   07 Apr 2005 17:30:58 
 Re: DragonFlyBSD   Eugene Grosbein   07 Apr 2005 22:39:54 
 Re: DragonFlyBSD   Anton V. Yuzhaninov   09 Apr 2005 23:51:43 
 Re: DragonFlyBSD   Gleb Smirnoff   07 Apr 2005 18:31:08 
 Re: DragonFlyBSD   Valentin Nechayev   09 Apr 2005 19:34:41 
 Re: DragonFlyBSD   Sergey Skvortsov   07 Apr 2005 21:17:14 
 DragonFlyBSD   Vassily Kiryanov   08 Apr 2005 09:09:42 
 Re: DragonFlyBSD   Valentin Nechayev   08 Apr 2005 20:34:17 
 DragonFlyBSD   Vassily Kiryanov   09 Apr 2005 10:27:03 
 Re: DragonFlyBSD   Valentin Nechayev   09 Apr 2005 12:37:00 
 DragonFlyBSD   Vassily Kiryanov   09 Apr 2005 14:55:37 
 Re: DragonFlyBSD   Valentin Davydov   09 Apr 2005 13:28:50 
 Re: DragonFlyBSD   Sergey Skvortsov   08 Apr 2005 21:14:24 
 DragonFlyBSD   Vassily Kiryanov   09 Apr 2005 11:10:21 
 Re: DragonFlyBSD   Sergey Skvortsov   09 Apr 2005 11:57:41 
 DragonFlyBSD   Vassily Kiryanov   09 Apr 2005 15:00:12 
 Re: DragonFlyBSD   Sergey Skvortsov   09 Apr 2005 16:59:54 
 DragonFlyBSD   Slawa Olhovchenkov   09 Apr 2005 23:08:56 
 Re: DragonFlyBSD   Sergey Skvortsov   10 Apr 2005 02:07:42 
 Re: DragonFlyBSD   Eugeny Chernetcki   10 Apr 2005 03:05:37 
 Re: DragonFlyBSD   Valentin Nechayev   10 Apr 2005 11:37:59 
 Re: DragonFlyBSD   Eugeny Chernetcki   10 Apr 2005 12:40:02 
 Re: DragonFlyBSD   Valentin Nechayev   10 Apr 2005 12:56:52 
 Re: DragonFlyBSD   Eugeny Chernetcki   10 Apr 2005 13:50:57 
 Re: DragonFlyBSD   Valentin Nechayev   11 Apr 2005 12:23:26 
 Re: DragonFlyBSD   Eugeny Chernetcki   11 Apr 2005 13:58:38 
 Re: DragonFlyBSD   Sergey Matveychuk   11 Apr 2005 16:34:55 
 Re: DragonFlyBSD   Eugeny Chernetcki   11 Apr 2005 16:44:31 
 DragonFlyBSD   Lev Serebryakov   11 Apr 2005 21:38:48 
 Re: DragonFlyBSD   Eugeny Chernetcki   11 Apr 2005 22:31:08 
 Re: DragonFlyBSD   Valentin Nechayev   13 Apr 2005 14:10:23 
 DragonFlyBSD   Lev Serebryakov   10 Apr 2005 12:15:36 
 Re: DragonFlyBSD   Eugeny Chernetcki   10 Apr 2005 12:46:49 
 DragonFlyBSD   Alexander Pashchenko   11 Apr 2005 22:57:06 
 Re: DragonFlyBSD   Valentin Nechayev   09 Apr 2005 18:25:33 
 Re: DragonFlyBSD   Gleb Smirnoff   11 Apr 2005 11:54:43 
 DragonFlyBSD   Vassily Kiryanov   11 Apr 2005 13:31:59 
 Re: DragonFlyBSD   Valentin Nechayev   13 Apr 2005 14:09:47 
 Re: DragonFlyBSD   Valentin Davydov   11 Apr 2005 18:52:34 
 DragonFlyBSD   Vassily Kiryanov   12 Apr 2005 11:22:11 
 Re: DragonFlyBSD   Valentin Davydov   13 Apr 2005 13:09:05 
 DragonFlyBSD   Alex Masterov   14 Apr 2005 10:59:10 
 DragonFlyBSD   Vassily Kiryanov   14 Apr 2005 17:25:56 
 DragonFlyBSD   Artem Ignatiev   14 Apr 2005 16:44:09 
 DragonFlyBSD   Ivan Ushakov   14 Apr 2005 21:21:29 
 Re: DragonFlyBSD   Dmitry Miloserdov   14 Apr 2005 20:27:26 
 DragonFlyBSD   Ivan Ushakov   15 Apr 2005 08:48:10 
 Re: DragonFlyBSD   Eugene Grosbein   14 Apr 2005 23:33:43 
 DragonFlyBSD   Vassily Kiryanov   15 Apr 2005 09:02:31 
 DragonFlyBSD   Alex Ivanov   15 Apr 2005 10:52:23 
 DragonFlyBSD   Sultan Azhiguzhayev   15 Apr 2005 11:20:48 
 DragonFlyBSD   Artem Ignatiev   15 Apr 2005 16:28:17 
 Re: DragonFlyBSD   Andrew Filonov   15 Apr 2005 17:10:41 
 Re: DragonFlyBSD   Artem Ignatiev   15 Apr 2005 18:29:44 
 Re: DragonFlyBSD   Eugene Grosbein   15 Apr 2005 22:30:41 
 Re: DragonFlyBSD   Artem Ignatiev   15 Apr 2005 20:18:53 
 Re: DragonFlyBSD   Eugene Grosbein   15 Apr 2005 23:58:46 
 Re: DragonFlyBSD   Artem Ignatiev   16 Apr 2005 00:07:33 
 Re: DragonFlyBSD   Eugene Grosbein   16 Apr 2005 11:12:10 
 Re: DragonFlyBSD   Eugeny Dzhurinsky   15 Apr 2005 17:49:46 
 Re: DragonFlyBSD   Artem Ignatiev   15 Apr 2005 20:22:21 
 DragonFlyBSD   Lev Serebryakov   16 Apr 2005 00:18:24 
 Re: DragonFlyBSD   Dmitry Miloserdov   15 Apr 2005 20:42:20 
 DragonFlyBSD   Lev Serebryakov   16 Apr 2005 00:19:34 
 Re: DragonFlyBSD   Andrew Filonov   18 Apr 2005 10:11:35 
 DragonFlyBSD   Lev Serebryakov   19 Apr 2005 23:45:10 
 Re: DragonFlyBSD   Andrew Filonov   20 Apr 2005 11:01:49 
 DragonFlyBSD   Lev Serebryakov   20 Apr 2005 22:55:56 
 Re: DragonFlyBSD   Andrew Filonov   21 Apr 2005 15:28:54 
 DragonFlyBSD   Lev Serebryakov   22 Apr 2005 00:07:12 
 Re: DragonFlyBSD   Mykola Dzham   16 Apr 2005 12:42:15 
 DragonFlyBSD   Vitaly Mihno   01 Jan 2002 17:23:07 
 Re: DragonFlyBSD   Valentin Davydov   14 Apr 2005 18:09:50 
 Re: DragonFlyBSD   Vasily Korytov   07 Apr 2005 23:13:38 
 Re: DragonFlyBSD   Sergey Skvortsov   08 Apr 2005 00:26:30 
 Re: DragonFlyBSD   Valentin Nechayev   08 Apr 2005 20:38:54 
 Re: DragonFlyBSD   Sergey Skvortsov   08 Apr 2005 22:49:01 
 Re: DragonFlyBSD   Valeriy E. Ushakov   09 Apr 2005 17:51:04 
 Re: DragonFlyBSD   Sergey Skvortsov   09 Apr 2005 18:37:08 
 Re: DragonFlyBSD   Valeriy E. Ushakov   09 Apr 2005 20:57:20 
 Re: DragonFlyBSD   Sergey Matveychuk   11 Apr 2005 15:34:08 
 Re: DragonFlyBSD   Igor Sysoev   11 Apr 2005 14:15:06 
 DragonFlyBSD   Lev Serebryakov   09 Apr 2005 00:39:24 
 Re: DragonFlyBSD   Valentin Nechayev   09 Apr 2005 02:59:45 
 DragonFlyBSD   Lev Serebryakov   09 Apr 2005 13:02:44 
 Re: DragonFlyBSD   Valentin Davydov   09 Apr 2005 13:28:50 
 Re: DragonFlyBSD   Valentin Nechayev   09 Apr 2005 15:35:04 
 Re: DragonFlyBSD   Valentin Davydov   11 Apr 2005 18:52:33 
 Re: DragonFlyBSD   Valentin Nechayev   13 Apr 2005 18:09:26 
 Re: DragonFlyBSD   Dmitry Miloserdov   12 Apr 2005 21:26:24 
 Re: DragonFlyBSD   Valentin Nechayev   13 Apr 2005 10:15:25 
 Re: DragonFlyBSD   Dmitry Miloserdov   13 Apr 2005 20:05:40 
 Re: DragonFlyBSD   Valentin Nechayev   20 Apr 2005 10:59:13 
 Re: DragonFlyBSD   Dmitry Miloserdov   21 Apr 2005 18:47:25 
 Re: DragonFlyBSD   Gleb Smirnoff   13 Apr 2005 11:50:56 
 Re: DragonFlyBSD   Dmitry Miloserdov   13 Apr 2005 13:52:06 
 Re: DragonFlyBSD   Gleb Smirnoff   13 Apr 2005 18:13:43 
 Re: DragonFlyBSD   Valentin Nechayev   13 Apr 2005 18:13:43 
 Re: DragonFlyBSD   Dmitry Miloserdov   13 Apr 2005 21:01:34 
 Re: DragonFlyBSD   Valentin Nechayev   14 Apr 2005 10:26:55 
 Re: DragonFlyBSD   Valentin Nechayev   08 Apr 2005 00:53:01 
 Re: DragonFlyBSD   Gleb Smirnoff   08 Apr 2005 10:50:34 
 Re: DragonFlyBSD   vladimir.sharun@ukr.net   08 Apr 2005 10:56:41 
 Re: DragonFlyBSD   Valentin Nechayev   08 Apr 2005 13:29:16 
 DragonFlyBSD   Igor Savchyk   11 Apr 2005 10:20:34 
 DragonFlyBSD   Alex Ivanov   06 Apr 2005 18:26:00 
 DragonFlyBSD   Igor Savchyk   07 Apr 2005 10:01:14 
 Re: DragonFlyBSD   Dmitri Zubko   07 Apr 2005 21:27:40 
 Re: DragonFlyBSD   Valeriy E. Ushakov   08 Apr 2005 01:54:32 
 Re: DragonFlyBSD   Valentin Nechayev   08 Apr 2005 20:40:25 
 Re^2: DragonFlyBSD   Dmitri Zubko   08 Apr 2005 23:48:16 
 Re: DragonFlyBSD   Valentin Nechayev   09 Apr 2005 12:34:56 
 Re^2: DragonFlyBSD   Dmitri Zubko   09 Apr 2005 23:26:08 
 Re: DragonFlyBSD   Valentin Nechayev   10 Apr 2005 11:52:10 
 Re: DragonFlyBSD   Gleb Smirnoff   11 Apr 2005 11:48:39 
 Re: DragonFlyBSD   Valentin Nechayev   13 Apr 2005 14:09:13 
 Re: DragonFlyBSD   Gleb Smirnoff   13 Apr 2005 18:12:42 
 DragonFlyBSD   Sergej Kosinskij   11 Apr 2005 19:57:26 
 Re: Re^2: DragonFlyBSD   Sergey Skvortsov   09 Apr 2005 16:35:42 
 Re^2: Re^2: DragonFlyBSD   Dmitri Zubko   09 Apr 2005 23:43:54 
 Re: Re^2: Re^2: DragonFlyBSD   Sergey Skvortsov   10 Apr 2005 01:47:01 
 Re: Re^2: Re^2: DragonFlyBSD   Valentin Davydov   11 Apr 2005 18:52:32 
 Re: Re^2: Re^2: DragonFlyBSD   Sergey Skvortsov   11 Apr 2005 19:44:19 
 Re: Re^2: Re^2: DragonFlyBSD   Valentin Davydov   13 Apr 2005 13:45:52 
 Re: Re^2: Re^2: DragonFlyBSD   Sergey Skvortsov   13 Apr 2005 14:11:29 
 Re: DragonFlyBSD   Victor Sudakov   09 Apr 2005 19:52:20 
 Re: Re^2: DragonFlyBSD   Sergey Matveychuk   11 Apr 2005 13:55:40 
 Re^2: Re^2: DragonFlyBSD   Dmitri Zubko   12 Apr 2005 21:09:54 
 DragonFlyBSD   Igor Savchyk   12 Apr 2005 11:26:22 
 DragonFlyBSD   Slawa Olhovchenkov   12 Apr 2005 21:55:22 
Архивное /ru.unix.bsd/22383e6fc5369.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional