|
Вопрос ламера по Linux IPC, Inter Process Comminications |
|
|
|
Jan 13 2006, 20:33
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Есть два процесса под Linux. Им надо обмениваться пакетами данных. Пакет представляет из себя: * заголовок - поле фиксированной длины * данные - поле переменой длины (<= MAX_LEN), заполненное бинарными случайными данными. Как лучше всего сделать такой обмен? Я удумал следующее. 1. Канал. Пишем, читаем. Но поскольку он имеет байтный интерфейс, при последовательном чтении непонятно, где начинается заголовок. Значит, придется вводить какие-то механизмы для его нахождения (Escape последовательности и пр.). Это не сложно, но совершенно лишнее действие в контексте решаемой задачи (нужно ее решить максимально быстро по программированию, расход памяти и процессорного времени не важен (в разумных пределах)). 2. Разделяемая память. Наделать там кучу семафоров, и обмениться указателями на структуры. 3. Гибрид  Делаем разделяемую память, а там - кольцевой массив структур. Каждая структура - это сообщение, данные пакета аппроксимированы массивом максимальной длины (пустые места в памяти не волнуют). 2 потока для каждого направления обмена. Передающий процесс пишет в поток send_msg char значение номера элемента в массиве, куда он положил пакет. Принимающий процесс пишет в поток msg_ask char значение номера элемента в массиве, который он прочитал (освободил). IMHO, так еще будет быстрее всего (нет лишнего копирования) и экономнее (по памяти) всего (нет памяти для лишних копий). Вероятно, я изобретаю велосипед. А что скажут Гуру по данному поводу?
|
|
|
|
|
 |
Ответов
|
Jan 16 2006, 01:16
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Evgeny_CD @ Jan 16 2006, 02:49)  Эта мысли меня уже посещала. Но стремно: * спецов по BSD очень мало * книжек тоже, хотя несколько книжек я уже утащил * книжек по NetBSD вообще нет (я не нашел). По иее это самый что ни на есть embedded BSD * хочется иметь ту же самую платфому на писюке и embedded девайсе. Хотя бы пока я учусь. 1. Ну по большому счету их под Линукс мало, если не считать спецов уровня "инсталляторов Windows". Массовые программисты разницы ПРОСТО НЕ ПОЧУВСТВУЮТ. Ну разбираться в железках/драйверочках (впрочем помнится с железом проблем к Вас не предвидится) в BSD заметно приятнее. 2. Ну книжки... С простыми вопросами и без них разберетесь, а готового рецепта выхода из сложной ситуации Вы в них не найдете - НЕ ДЛЯ ЭТОГО ИХ ПИШУТ. А исходники BSD много читабельнее, нежели то болото в которое превратились многочиленные Линуксы. 3. А может просто возьмете "кувалду побольше" (помнится я уже намекал на SOM-144, например) и получите без проблем с портированием (и сопровождением оного) почти одинаковые системы. Причем, если Вы полагаете, что если на десктопе и на какой-нибудь железке с ARM9 будет одна операционка по причине того, что там и там она спекулирует раскрученным словечком Линукс, то это совсем не так :-( Сколько там контроллеров с 'линуксом' в год предполагается выбрасывать на рынок?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 16 2006, 01:31
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(zltigo @ Jan 16 2006, 04:16)  1. Ну по большому счету их под Линукс мало, если не считать спецов уровня "инсталляторов Windows". Массовые программисты разницы ПРОСТО НЕ ПОЧУВСТВУЮТ. Ну разбираться в железках/драйверочках (впрочем помнится с железом проблем к Вас не предвидится) в BSD заметно приятнее. 2. Ну книжки... С простыми вопросами и без них разберетесь, а готового рецепта выхода из сложной ситуации Вы в них не найдете - НЕ ДЛЯ ЭТОГО ИХ ПИШУТ. А исходники BSD много читабельнее, нежели то болото в которое превратились многочиленные Линуксы. 3. А может просто возьмете "кувалду побольше" (помнится я уже намекал на SOM-144, например) и получите без проблем с портированием (и сопровождением оного) почти одинаковые системы. Причем, если Вы полагаете, что если на десктопе и на какой-нибудь железке с ARM9 будет одна операционка по причине того, что там и там она спекулирует раскрученным словечком Линукс, то это совсем не так :-( Сколько там контроллеров с 'линуксом' в год предполагается выбрасывать на рынок? Конечно, оси на дектопе и контроллере будет разные. Но, если у них одинаковые версии ядра, то базовые интерфейсы, по идее, должны совпадать. Я собственно, на это и надеюсь. SOM-144 - привлекательная вещь, я про них очень хорошо помню, и цены не очень безумные. Но я пока на нашел их Industrial, и, боюсь, цены там как раз будут неразумные. Для прототипов, где мне будут нужны x86, буду использовать это http://www.icop.com.tw/products_category.asp?CategoryID=2По моим оценками Intel PXA270 600 Мгц мне должно хватить на ближайщие проекты на несколько лет вперед. Но хочется иметь позможность "спуска вниз", посему попробую все-таки целевой осью сделать eCos. Собственно, будет использован аналог SOM-144 от http://www.toradex.com/e/Products_Colibri_..._Pentium_M.htmlКонтроллеров будет от 100 до 1к в год - как дело пойдет. Ядро по исходникам изучать пока не готов
|
|
|
|
Сообщений в этой теме
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, 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 zaratustra Вам виднее, кто кроме вас вашу задачу знает? Если ... Jan 27 2006, 08:34 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|