Re: структура программы
> > Может использовать thread'ы, а не форкаться? Как бы тут на них не ругались,
> > что они не вписываются в архитектуру Unix, но работать с ними можно всё-таки.
> вроде насколько я читал (правда это относительно давно было) треды через
> те же форки в линуксе организованы
1) ИМХО, с появлением NPTL это уже не так.
2) Во-вторых, всё-таки у потоков адресное пространство одно и тоже, и никакого
отложенного копирования страниц там не возникает.
> > Кроме того, возможно у тебя ещё происходит копирование из kernel-space в
> > user-space.
> чтение из девайса? ну да
> но тут если оптимизировать - модульность смажется
> будет не программа а гнусный хак ;)
>
> > Если ты можешь править драйвер, но покури доку, кажется, на
> > relayfs - его, по-моему, как раз придумали для того, чтобы этого избежать.
>
> это в смысле драйвер может предоставить свои буфера для чтения чтоли?
> сейчас поищу доку
>
> > > PS: смотрел я как работает система - максимум дочек накапливается около
> > > 20 штук, то есть скорость потока "пляшет", однако интегральный запас ОЗУ
> > > получается очень большим.
> > В принципе, я думаю, что можно обойтись двумя нитями, одна читает, другая
> > пишет.
> то есть у той что пишет - очередь данных на входе?
> получается копирований данных может еще больше чем в моем случае
> получиться :)
Почему только у той, что пишет? У той что читает тоже таже очередь. Только одна
нить ставит, другая снимает. Доступ к очереди на изменение контролируется
каким-нить семафором (его значение можно интерпретировать как кол-во блоков в
очереди), либо мьютексом. Ну естественно в очереди хранятся только указатели на
блоки, поэтому никаких копирований больше не возникает.
ЗЫ: Посмотри как делают буферные дескрипторы, по-моему, задача того же рода.
--
Макс
Reply to: