ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
159407 Топик полностью
Evgeny_CD, Архитектор (21.06.2009 00:52, просмотров: 256) ответил AlexandrY на Есть проблема в такой версии "zero copy". Вы ведь предлагаете всю туже старую добрую идею перемещения без копирования.
Аккумулирование производится как раз мелким процом. И пишет он только кластером файловой системы. Еще раз. Данные живут в ОТДЕЛЬНОЙ от основной памяти процессора. Процессор вообще не может адресовать ту память напрямую! И у нас есть понятие - обобщенный болок данных. max (размер пакета по сети, размер кластера фаловой системы, размер пакета других служб). Внутри каждого блока может быть от 1 до MAX_BLOCK байт данных. Принял данные из IP пакета - ок, пусть живут в буфере. Перепутались - не вопрос, главное, чтобы у себя не перепутались указатели. Пришла кучка данных, и ты уверен, что с ними все ок - зашибись! Делаешь список блоков, в том порядке, в каком надо. И передаешь все это мелкому процу файловой системы. Это его забота, и его DMA, собрать сектор NAND из кучи пакетиков. Работа, заметим, тривиальная - загружаешь в DMA указатель на начало пакета, полезную длину, и куда грузить. В буфер NAND, например. Чпок - и все тама. Одновременно, "боковым ответвлением" потока данных ECC считалась. Грузишь ее туде же - и готово! Что касается защиты от хрени из сети - просто не успел написать. Поскольку при описанном мною подходе ресурсы проца освобождаются от тупого копирования, то у процессора отстается ресурс "подумать", а этот пакет-то, пришедший из сети - он тут вообще-то должен быть тут или как? Вот и защита от атак.