커널 모듈에서 특정 사용자 프로세스의 메모리 공간을 접근하고 싶습니다.
글쓴이: namhw / 작성시간: 수, 2009/04/01 - 8:33오전
제가 하고싶은 일은 커널 모듈에서 특정 사용자 프로세스의 메모리 공간(가상주소)을 읽고 쓰는 작업을 하려고 합니다.
고민하고 있는 부분은 작성된 커널 모듈이 실행될때 스케쥴링이 계속 이루어지고 있을 것이므로 어떤 사용자 프로세스가 실행중일지를 예측할 수 없습니다. 따라서 제가 원하는 사용자 프로세스의 메모리 공간을 쉽게 포인터만을 사용하여 접근할 수가 없을것 같습니다.
따라서 제가 생각한 해결방법으로는
1. 직접 프로세스의 메모리 관련 자료구조들을 따라가면서 직접 복잡한(?) 주소변환 과정등을 거쳐 메모리에 접근하는 방법
2. 읽고자 하는 사용자 프로세스의 우선순위를 최대로 하고 바로 reschedule 하여 running 상태로 만들어주는 방법
을 생각해봤습니다. 더 다른 좋은 방법들이 있는지,,, 제가 생각한 방법이 올바른 접근 방법인지 질문드립니다.^^
Forums:
커널 구조에 대한
커널 구조에 대한 이해가 먼저 필요할 듯 합니다.
우선은 read,write 를 통해 접근하는 방법을 먼저 생각해 보는게 좋을 듯 합니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
커널 구조에 대한
커널 구조에 대한 이해가 먼저 필요할 듯 합니다.
우선은 read,write 를 통해 접근하는 방법을 먼저 생각해 보는게 좋을 듯 합니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
왜?
왜 커널 모듈에서 사용자 주소 공간에 직접 접근을 하실려고 하시는거죠? 궁금해서요..^^
머리를 굴려라! 그래야 먹고 산다.
원하는 기능이
원하는 기능이 뭔지는 모르겠으나 사용자 프로세스에서 호출된 시스템콜 안에서 해당 프로세스의 메모리를 참조한다면, 그냥 포인터로 바로 참조하시면 됩니다. 포인터는 시스템콜에서 파라미터로 받아오면 되구요.(read나 write, ioctl 등을 통해)
댓글 달기