커널의 디바이스 접근 방법?
글쓴이: firia2000 / 작성시간: 월, 2008/11/10 - 2:37오후
커널이란 것이 여러가지 커널 함수등등을 RAM에 적재하고
커널 프로세스를 동작시키는 거니까 결국 프로세스의 형태로 동작하는 건데,
프로세스는 가상주소공간을 사용하고, 페이지 테이블을 통해 변환을 거쳐서 CPU가 거기로 접근하지 않습니까..
사용자가 작성한 프로세스에서 디바이스에 접근하고자 할때, 결국 그일은 커널이 해주게 되구요..
그렇다면 커널은 어떤식으로 디바이스에 접근하게 되나요?
각 프로세스의 가상주소공간에는 공통적으로 커널이 사용하는 영역이 들어가 있는데,
그렇다면 커널이 디바이스에 접근하는것도 페이지 테이블을 통해 변환을 거친 뒤 접근하게 되는건가요?
Forums:
네
커널이 올라가면 어드레스 테이블을 커널이 관리합니다.
물리주소에 가상주소를 매칭시켜서 가상주소테이블을 만듭니다.
커널에서도 모든 작업은 가상주소상에서 이루어집니다.
사용자 프로세스와 다른점은 영역이 틀린겁니다.
영역이 틀리다 보니 사용자 영역에서 아무리 커널(물리영역)로 접근하려고해도 되지않습니다.
사용자영역에서 커널영역으로 접근하는법은 디바이스 드라이버를 통해서입니다.
등록된 디바이스 디스크립터를 사용하여 사용자영역에서 open,close.read.write.ioctl 등등을 사용해서 커널영역(디바이스)에 접근할수있습니다.
그러므로 사용자 영역에서 커널에 어떤 작업을 하려면 그에 해당하는 디바이스 드라이버를 작성하여야합니다.
감사합니다..
감사합니다..
댓글 달기