2014-05-22 3 views
1

60 초마다 특정 프로세스의 가상 - 물리적 주소 매핑 (즉, 페이지 테이블)을 수정하려고합니다. 페이지 테이블을 수정하는 방법, 캐시 및 TLB를 적절히 비우는 방법, 60 초마다 내 기능을 호출하기 위해 작업 대기열을 활용하는 방법을 알고 있습니다. 그러나 대상 프로세스가 시스템 호출을 시작하지 않는다고 가정 할 때 커널 또는 커널 모듈에서 대상 프로세스에 "연결"하는 방법을 모르겠습니다. "attach"는 타겟 프로세스가 인터럽트 (예 : 페이지 폴트)를 만났을 때와 비슷하게 동작 할 것이고 실행은 컨텍스트가 저장되는 즉시 커널로 간다는 것을 의미합니다. 그렇게 할 수 있습니까?Linux 커널/커널 모듈에서 사용자 공간 프로세스를 "첨부"

커널 코드 또는 다른 힌트에서 유사한 사용법에 대한 포인터도 환영합니다.

+4

최종 목적이 무엇인지 설명하면 질문에 대한 직접 답변보다 더 나은 답변을 얻을 수 있습니다. 어쩌면 당신이 원하는 것을 할 수있는 시설이 이미 있습니다. – wallyk

+3

커널에서 프로세스를 첨부 할 수는 있지만 최종 목적이 도움이된다고 말할 수 있다면 간단하게 설명 할 수는 없습니다. – Sasi

+0

감사합니다. @wallyk 및 @Sasi! 나는 일련의 페이지에 동적 가상 주소를 부여하는 연구 아이디어를 모색 중이다. 예를 들어, 시간 T에서 가상 대 물리 매핑은 {V1-P1, V2-P2, ...}입니다. 시간 T + 60s에서, 매핑은 {V1-P2, V2-P1, ...}이된다. 그게 충분히 명확한가요? – w00dbunny

답변

0

동적 가상 주소를 적용하거나 IOCTL을 통해 모듈에 전화를 걸거나 드라이버에서 종료되는 다른 호출을 처리하고 wait_ * 함수를 사용하여 프로세스 컨텍스트에서 잠자기 후 깨우십시오 그 스레드에서 페이지 테이블을 수정하는 데 매 60 초가 걸립니다. 그러면 컨텍스트를 보장해야합니다.

관련 문제