안녕하세요 현재 회사에서 리눅스 커널모듈 개발 프로젝트를 진행하고 있습니다.

 

도움을 청해야 할 곳을 마땅이 찾지 못해, 신입임에도 염치불구하고 이곳에 글을 올립니다.

 

커널모듈은 EXPORT_SYMBOL 키워드를 이용하여 심볼테이블에 함수를 등록시키면 다른 커널모듈에서 이를 참조하여 사용하는 방식으로 동작합니다.

 

프로젝트의 특성상 구현된 모듈이, 몇가지 요구사항을 만족시켜야 하도록 되어 있습니다.

 

그런데 다음 요구사항에 대해서 만족시킬 방안을 아직 찾지 못하였습니다.

 

  해당 모듈을 수행하는 프로세스 외에 타 프로세스에 의해서 간섭이 발생하지 않아야 한다.

 

여기서 말하는 간섭방지에 대한 예시는, 만약 모듈이 shared library이고 이를 사용하는 프로세스가 어플리케이션 프로그램 일 경우에 대해서 들어져 있습니다.

 

어플리케이션 레벨에서 동작하는 어플리케이션들이 서로 고유한 메모리 영역을 가지고 있어, A프로세스에서 B프로세스의 주소 영역을 참조하거나 값을 변경할 경우, 커널레벨에서 이를 잘못된 참조로 가정하고 프로세스를 종료시키기 때문에 이러한 잘못된 참조가 방지된다 (약간 다를 수 있으나 이러한 논지로 되어있습니다.)

 

그런데 여기서 다음 문제가 발생합니다.

 

저희가 개발한 모듈은 커널모듈이고 EXPORT_SYMBOL을 통해서 다른 커널모듈이 기능을 호출하여 사용하는 방식이기 때문에 위의 예시와 같이 구조적으로 해결되지는 않는 것으로 알고 있습니다.(혹시 된다면 레퍼런스를 알려주시면 정말 감사하겠습니다ㅜ)

 

 

그래서 논리적으로 외부 프로세스에 대해서 최대한 간섭을 방지할 수 있는 방법을 구현하려 하는데, 이러한 부분에서 참고할 만한 서적이나 논문, 개발 소스등이 있다면 알려주시면 정말 감사하겠습니다.

그럼 긴 글 읽어주셔서 감사합니다.

 

답변에 대해서는 제 메일주소나 댓글로 남겨주시면 제가 확인하겠습니다.

 

많은 도움을 주신 경우에는 제가 개인적으로 또는 회사차원에서 꼭 사례 하겠습니다.

감사합니다.

 

참고로 제가 조사한 자료에 의하면 커널모드에서는 메모리 보호등의 함수가 없는 것으로 알고 있습니다. 이에대한 stackoverflow 관련글입니다.

( http://security.stackexchange.com/questions/38384/mprotect-at-kernel-level)

http://stackoverflow.com/questions/17667312/mprotect-like-functionality-within-linux-kernel)

XE Login