LINUX.ORG.RU

s/unix-soket/unix-socket/

А чем System V IPC не нравится?

Вообще, интересно, откуда берется такая постановка?

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>s/unix-soket/unix-socket/

Спасибо, опечатка

>А чем System V IPC не нравится?

по идеологическим соображениям

Можно привести хоть какоето преимущество System V IPC???

Насколько я знаю таковых не много

cvv ★★★★★
() автор топика
Ответ на: комментарий от carrot

> Можно привести хоть какоето преимущество System V IPC???

Repeat:

afaik, sockets на локальной машине - это обмен
через shared memory (читай System V IPC)

carrot
()
Ответ на: комментарий от carrot

carrot:

>...sockets на локальной машине - это обмен через shared memory

Не понял...

Кто-то из нас двоих не совсем понимает основы OS :(

Die-Hard ★★★★★
()
Ответ на: комментарий от cvv

cvv (10.01.2005 15:17:35):

>>А чем System V IPC не нравится?

>по идеологическим соображениям

Ну, тут я согласен -- мне тоже такой подход не симпатичен.

> Можно привести хоть какоето преимущество System V IPC???

Зависит от объема перекачиваемых данных.

Преимущество, в общем, одно -- единственный способ портаби^Hельного переноса данных через шареную память.

Под Линухом >=2.4 можно еще /dev/shm заюзать.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Кто-то из нас двоих не совсем понимает основы OS :(

возможно я :-( Попытаюсь разобраться ..
К тому же, и в исходники sockets любопытно было бы взглянуть

++
"копаться в исходниках" - хобби у меня такое

carrot
()
Ответ на: комментарий от carrot

carrot (10.01.2005 16:43:56):

> К тому же, и в исходники sockets любопытно было бы взглянуть

Тебя ждет сюрприз :-)

Я только что туда заглядывал.

Насчет шареной памяти:

Обычно под шареной памятью подразумевается память, доступная из юзерспейса более чем одного процесса.

Из кернела вся память и так шареная.

Когда ты пересылаешь данные сокетом, то ты используешь обычный write. То есть ты должен сначала скопировать данные в кернелспейс, а потом оттуда уже в юзерспейс другого процесса.

Die-Hard ★★★★★
()
Ответ на: комментарий от carrot

carrot wrote:
> afaik, sockets на локальной машине - это обмен
> через shared memory (читай System V IPC)

нет, это вы загнули, пожалуй.

но sockets (особенно AF_UNIX) действительно работают
быстро.

AF_UNIX даже быстрее чем pipe, и даже - при некоторых
условиях - быстрее, чем memcpy(size_gt_L2_cache)._

idle ★★★★★
()
Ответ на: комментарий от carrot

>afaik, sockets на локальной машине - это обмен через shared memory (читай System V IPC)

вы не шутите??

При чём здесь System V IPC???

на сколько я понимаю ет фишка для юзер-спейс задач но мы ж находимся внутри ядра??

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

ладно, ладно ... во навалились-то ;-)

обещаю, посмотрю "в упор", разберусь ..
под-текст был, что на локальной машине sockets "это круто быстро"

carrot
()
Ответ на: комментарий от idle

ага потому что вообще ничего не копируется помоему. просто перекидываются буфера из write очереди в read очередь в случае unix

lg ★★
()
Ответ на: комментарий от carrot

>ладно, ладно ... во навалились-то ;-)

Нерасстраивайся, не может же один человек всё знать ;)

cvv ★★★★★
() автор топика
Ответ на: комментарий от lg

lg (10.01.2005 17:19:06):

> ага потому что вообще ничего не копируется помоему. просто перекидываются буфера из write очереди в read очередь в случае unix

Один хрен, юзер->кернел->юзер копируется.

В случае шареной памяти на одно копирование меньше.

Die-Hard ★★★★★
()
Ответ на: комментарий от lg

> ага потому что вообще ничего не копируется помоему. просто
> перекидываются буфера из write очереди в read очередь в случае
> unix

не совсем...

данные копируются из адресного пространства посылающего процесса
в skb, но этот skb добавляется _сразу_ в sk_receive_queue целевого
socket. потом оттуда ни будут скопированы получателю.

итого - два копирования, как и в случае с pipe.

idle ★★★★★
()
Ответ на: комментарий от Die-Hard

> Один хрен, юзер->кернел->юзер копируется.
>
> В случае шареной памяти на одно копирование меньше.

вот и сразу видно что физик, не математик.

поскольку с shared memory вообще копировать не надо,
то насколько меньше? :))

idle ★★★★★
()
Ответ на: комментарий от idle

idle (10.01.2005 17:35:57):

> поскольку с shared memory вообще копировать не надо, то насколько меньше? :))

Конечно :-)

Я мысленно представлял себе задачу пересылки данных. Я сейчас в терминах NUMA думаю, и мне приходится данные с процессора на процессор гонять.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Я сейчас в терминах NUMA думаю, и мне приходится данные с > процессора на процессор гонять.

если подумать, то современные SMP архитектуры недалеко от NUMA ушли (концептуально). учитывая:

1. Размер (постоянно растущий) процессорного кэша.

2. Огромная разница (которая также все увеличивается) в скорости доступа к cache и main memory.

а если еще HT processor... чем не numa node?

оффтопик, конечно.

idle ★★★★★
()
Ответ на: комментарий от idle

кажется, Berkeley sockets не так "круто быстро"
на локальной машине под M$ windows. На самом деле, трудно сравнивать ..

Кто-нибудь может прокомментировать?

carrot
()
Ответ на: комментарий от idle

а, ну да .. user-kernel-user копирование конечно происходит ..

кстати что прикольно .. вот пример системы которая использует ipc достаточно сильно - X11

визуальной разницы при работе между shared memory и unix sockets нет, между unix sockets и tcp sockets - есть ..

lg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.