2013-11-28 2 views
1

커널 모듈을 만들고 있습니다. 긴 이야기 짧게 : 모듈을 언로드 한 후에 메모리를 할당하고 그대로 두어야합니다. 가능한가? 방법?메모리를 할당하고 종료 한 후에 메모리에 저장합니다.

좋은 생각인지 묻지 않습니다. 나는 좋은 이유가있다.

+1

몇 가지 특별한 것들이 필요한지 잘 모르겠습니다 ...하지만 제 제안은 다음과 같습니다. 포인터를 전역 메모리로 만들고 extern을 메모리를 사용하려는 다른 파일로 만드시겠습니까? –

+0

@ user9000은 메모리가 실행 가능으로 표시되고 syscall 테이블에서 호출되는 자체 코드를 보유합니다. – alexandernst

+0

프로세스를 할당 한 프로세스에 할당 된 메모리는 프로세스가 종료 된 후에 해제됩니다. 프로그램이 종료되면 메모리를 회수 할 방법이 없습니다. 데이터를 공유하기 위해 파일을 사용하십시오. – erbdex

답변

3

정말 쉽습니다. 당신이해야 할 일은 동적으로 모듈 초기화 함수에 메모리를 할당하는 것이며 exit 함수에서 메모리를 할당 해제하지 못한다. 즉, 의도적 인 메모리 누수를 만듭니다.

할당 (및 syscall 테이블 패치)을 여러 번하지 않으려면 초기화하는 동안 조심해야합니다. 나는이 일을하지 않을 것을 강력히 제안하고, 모듈이 로딩되어있는 한 모니터링 코드 만 활성화시켜야한다. 나중에 활성 상태로 유지하면 다중로드 문제가 발생하고 모듈 사용자를 놀라게 할 것입니다.

+0

아, 정말 쉽지 않을 거라 생각 했어요 : P 그래서, 프로세스가 죽을 때 프로세스가 메모리를 할당한다는 일반적인 규칙은 커널/커널 모듈에 적용되지 않습니다. – alexandernst

+2

수정하십시오. 커널에 손주가 없음;) –

관련 문제