реклама на сайте
подробности

 
 
> Вопрос ламера по Linux IPC, Inter Process Comminications
Evgeny_CD
сообщение Jan 13 2006, 20:33
Сообщение #1


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Есть два процесса под Linux. Им надо обмениваться пакетами данных.

Пакет представляет из себя:

* заголовок - поле фиксированной длины
* данные - поле переменой длины (<= MAX_LEN), заполненное бинарными
случайными данными.

Как лучше всего сделать такой обмен?

Я удумал следующее.

1. Канал. Пишем, читаем. Но поскольку он имеет байтный интерфейс, при
последовательном чтении непонятно, где начинается заголовок. Значит,
придется вводить какие-то механизмы для его нахождения (Escape
последовательности и пр.). Это не сложно, но совершенно лишнее действие
в контексте решаемой задачи (нужно ее решить максимально быстро по
программированию, расход памяти и процессорного времени не важен (в
разумных пределах)).

2. Разделяемая память. Наделать там кучу семафоров, и обмениться
указателями на структуры.

3. Гибрид smile.gif

Делаем разделяемую память, а там - кольцевой массив структур. Каждая
структура - это сообщение, данные пакета аппроксимированы массивом
максимальной длины (пустые места в памяти не волнуют).

2 потока для каждого направления обмена.

Передающий процесс пишет в поток send_msg char значение номера
элемента в массиве, куда он положил пакет.

Принимающий процесс пишет в поток msg_ask char значение номера элемента в
массиве, который он прочитал (освободил).

IMHO, так еще будет быстрее всего (нет лишнего копирования) и
экономнее (по памяти) всего (нет памяти для лишних копий).

Вероятно, я изобретаю велосипед. А что скажут Гуру по данному поводу?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zaratustra
сообщение Jan 27 2006, 08:34
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 65
Регистрация: 18-11-05
Пользователь №: 11 054



Вам виднее, кто кроме вас вашу задачу знает? Если необходим именно десяток удалённых процессоров и система не может быть спроектирована в рамках одного, то конечно же вы правы. Но если вы хотите синхронизировать все эти процессы при помощи linux ipc на десятках килогерц, то возможно вы не сможете так решить свою задачу. Реалтайм (или близкие) синхронизации в qnx на мой взгляд выполнить удобнее. Спорить конечно не имеет смысла, в этом вы тоже правы.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Evgeny_CD   Вопрос ламера по Linux IPC   Jan 13 2006, 20:33
- - zltigo   Цитата(Evgeny_CD @ Jan 13 2006, 22:33) Ес...   Jan 13 2006, 21:49
|- - Evgeny_CD   Цитата(zltigo @ Jan 14 2006, 00:49) Самое...   Jan 13 2006, 22:47
- - zltigo   Цитата(Evgeny_CD @ Jan 14 2006, 00:47) С ...   Jan 13 2006, 23:33
|- - Evgeny_CD   Цитата(zltigo @ Jan 14 2006, 02:33) Значи...   Jan 13 2006, 23:39
- - psL   Если один процесс родительский, а второй его потом...   Jan 14 2006, 11:43
- - zltigo   Цитата(psL @ Jan 14 2006, 13:43) Если оди...   Jan 14 2006, 13:03
|- - psL   > 1. Pipe и FIFO суть одно и то-же и работают о...   Jan 14 2006, 13:56
- - zltigo   Цитата(psL @ Jan 14 2006, 15:56) > 1. ...   Jan 14 2006, 14:53
|- - psL   Цитата(zltigo @ Jan 14 2006, 17:53) ?????...   Jan 14 2006, 16:01
|- - alexr22b   Цитатая имел ввиду, что TCP - не гарантирует сохра...   Jan 15 2006, 06:23
- - Harbour   Насчет выделения пакетов из какого угодно потока (...   Jan 14 2006, 19:04
- - zltigo   Цитата(Harbour @ Jan 14 2006, 21:04) Я та...   Jan 14 2006, 20:54
- - zltigo   Цитата(alexr22b @ Jan 15 2006, 08:23) И э...   Jan 15 2006, 11:34
- - _artem_   Vikladivayu knizku na /upload/doc/Unix_Linux_books...   Jan 15 2006, 16:37
|- - Evgeny_CD   Цитата(_artem_ @ Jan 15 2006, 19:37) Vikl...   Jan 15 2006, 16:54
|- - Konst_777   Цитата(_artem_ @ Jan 15 2006, 19:37) Vikl...   Jan 18 2006, 03:14
- - Evgeny_CD   Спасибо всем просветившим меня! Из всего мног...   Jan 15 2006, 17:55
- - nazim   Я для этой цели использовал простой "самодель...   Jan 15 2006, 19:18
|- - Evgeny_CD   Цитата(nazim @ Jan 15 2006, 22:18) ...Я д...   Jan 15 2006, 20:01
- - zltigo   Обалдеть.   Jan 15 2006, 21:36
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 00:36) Обалд...   Jan 15 2006, 21:51
|- - psL   Вообще-то для обеспечения прозрачности передаваемы...   Jan 15 2006, 22:08
- - zltigo   Цитата(Evgeny_CD @ Jan 15 2006, 23:51) Ци...   Jan 15 2006, 23:05
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 02:05) ...В ...   Jan 15 2006, 23:32
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 01:32) Вс...   Jan 15 2006, 23:55
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 02:55) Ну и ...   Jan 16 2006, 00:49
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 02:49) Эт...   Jan 16 2006, 01:16
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 04:16) 1. Ну...   Jan 16 2006, 01:31
|- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 03:31) SO...   Jan 16 2006, 11:08
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 14:08) ...На...   Jan 16 2006, 11:16
- - Harbour   Цитата(zltigo @ Jan 14 2006, 22:54) Цитат...   Jan 16 2006, 09:35
- - zltigo   Цитата(Harbour @ Jan 16 2006, 11:35) 3. С...   Jan 16 2006, 10:51
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 13:16) Ви...   Jan 16 2006, 11:31
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 14:31) Излиш...   Jan 17 2006, 15:56
- - Harbour   Цитата(zltigo @ Jan 16 2006, 12:51) Цитат...   Jan 16 2006, 17:55
- - zltigo   Цитата(Harbour @ Jan 16 2006, 19:55) то ч...   Jan 16 2006, 18:26
- - Harbour   Пусть теоретики на своими прожектами думают - мне ...   Jan 17 2006, 07:02
- - zltigo   Цитата(Harbour @ Jan 17 2006, 09:02) Пуст...   Jan 17 2006, 11:32
- - Harbour   Даже такой отторможенный арм как 920 должон легко ...   Jan 17 2006, 20:21
|- - Evgeny_CD   Цитата(Harbour @ Jan 17 2006, 23:21) ...Д...   Jan 17 2006, 20:56
- - zaratustra   > оцифровывать входной сигнал с относительно вы...   Jan 26 2006, 12:57
|- - Evgeny_CD   Цитата(zaratustra @ Jan 26 2006, 15:57) ....   Jan 26 2006, 13:44
- - zaratustra   А вы не пробовали поискать девкиты работающие под ...   Jan 26 2006, 14:02
|- - Evgeny_CD   Цитата(zaratustra @ Jan 26 2006, 17:02) А...   Jan 26 2006, 14:27
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 11:34) ....   Jan 27 2006, 09:32
- - zaratustra   Линукс насколько я вижу мигрирует к десктопу быстр...   Jan 27 2006, 10:17
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 13:17) Л...   Jan 27 2006, 11:42
- - zaratustra   Самое лучшее что могу вам посоветовать - побыстрее...   Jan 27 2006, 13:00
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 16:00) ....   Jan 27 2006, 13:02
- - defunct   Я прощу прощения если не в тему, но Evgeny_CD а н...   Jan 31 2006, 01:31
- - Evgeny_CD   Цитата(defunct @ Jan 31 2006, 04:31) Я пр...   Jan 31 2006, 02:01
- - defunct   Цитата(Evgeny_CD @ Jan 31 2006, 04:01) 1....   Jan 31 2006, 02:47
- - Evgeny_CD   Цитата(defunct @ Jan 31 2006, 05:47) Опыт...   Jan 31 2006, 08:00
- - defunct   Цитата(Evgeny_CD @ Jan 31 2006, 10:00) Пр...   Jan 31 2006, 23:45
- - Evgeny_CD   Цитата(defunct @ Feb 1 2006, 02:45) ...По...   Feb 1 2006, 06:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th August 2025 - 00:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016