가상메모리에 대해서 궁금한것이 있습니다.

I/O를 위한 가상메모리랑 일반적인 task가 사용하는
가상메모리에 차이점이 있는지 궁금합니다.

왜궁금하냐면요...
I/O에대해서는 명시적으로 generic.c파일에 적어주잖아요..

그런데 일반 테스크가 사용하는 가상메모리의 범위 등은
커널에서 free...함수에서 자동으로 해주잖아요...

이차이가 I/O는 명확하게 physical어드레스가
나와야만 어드레스 디코딩등을 해서 정확하게
특정칩을 인에이블하는 등에 쓰이기 때문인가요??

저가 잘못생각한건지 맞는건지 잘모르겠네요...
답변 부탁합니다.