2009-04-24 5 views
3

저는 리눅스에서 작동하는 매우 고성능 하드웨어를 원합니다. 일부 데이터를 캐시하고 싶지만 메모리 소비가 걱정됩니다. 따라서 캐시를 관리 할 사용자 프로세스를 만드는 것이 좋습니다. 이렇게하면 캐시가 커널 공간이 아닌 가상 메모리에있을 수 있습니다.사용자 공간 프로세스를 사용하여 커널 모듈 지원하기

질문 :이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 필자의 첫 번째 본능은 커널 모듈에 문자 장치 파일을 만들고 해당 파일을 여는 사용자 프로그램이 있고 그 다음에 명령이 도착할 때까지 기다리는 select 명령문에 앉아있는 것입니다. 그러나 이것이 최적이 아닌지 우려됩니다. 친구는 그가 소켓 기반 인터페이스를 알고 있다고 언급했지만, 눌렀을 때 그는 어떤 세부 사항도 제공 할 수 없었다고 언급했다. ...

어떤 제안이 있나?

+0

FUSE 소스를 살펴 보는 것이 좋습니다 ... –

+0

더 나은 방법은 http://git.kernel.org/?p=linux/kernel/git/torvalds/에서 CacheFiles와 cachefilesd를 볼 수 있습니다. hb = HEAD – ephemient

답변

2

나는 netlink 인터페이스를 찾고 있다고 생각합니다. 자세한 내용은 Why and How to Use Netlink Socket [sic]을 참조하십시오. 커널과 사용자 공간을 이야기 할 때 보안 문제를주의하십시오. udev이 메시지가 사용자 공간이 아닌 커널에서 오는 것인지 확인하지 않은 경우 최근 vulnerability이 발생했습니다.

+0

최근의 취약점은 귀하가 진술 한 것보다 약간 다른 원인을 가지고 있습니다 : udev는 그것이 수신 한 모든 netlink 메시지의 출처가 다음과 같다고 가정합니다 : linux-2.6.git; a = blob; f = Documentation/filesystems/caching/cachefiles.txt 커널이지만 사용자 프로세스가 악의적으로 udev에 메시지를 보낼 수 있습니다. – ephemient

+0

단순히 캐릭터 장치를 만드는 것보다 성능이 향상됩니까? –

+0

나 자신을 사용해 본 경험이 없습니다. 방금 들어 봤고 소켓 기반 인터페이스에 대해 물어 보았 기 때문에 나는 그것에 대해 언급 할 것이라고 생각했습니다. –

관련 문제