Использование процессов в пространстве пользователя для помощи модулям ядра - PullRequest
3 голосов
/ 24 апреля 2009

Я работаю над одним очень высокопроизводительным оборудованием, работающим под Linux. Мы хотели бы кэшировать некоторые данные, но нас беспокоит потребление памяти - поэтому идея заключается в создании пользовательского процесса для управления кешем. Таким образом, кеш может находиться в виртуальной памяти, а не в пространстве ядра и т. Д.

Вопрос в том, как лучше всего это сделать? Мой первый инстинкт заключается в том, чтобы модуль ядра создал файл символьного устройства и имел пользовательскую программу, которая открывает этот файл, а затем сидит в операторе select, ожидая поступления команд. Но я обеспокоен тем, что это не может быть оптимальным. Друг упомянул, что знает интерфейс на основе сокетов, но при нажатии он не может предоставить какие-либо подробности ....

Есть предложения?

1 Ответ

2 голосов
/ 24 апреля 2009

Я думаю, вы ищете интерфейс netlink . См. Почему и как использовать сокет Netlink [sic] для получения дополнительной информации. Будьте осторожны с вопросами безопасности при общении между ядром и пользовательским пространством; недавно была уязвимость , когда udev пренебрегали проверкой того, что сообщения приходят из ядра, а не из пространства пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...