특정 page 구조체를 커널의 주소 공간으로 매핑하려면 다음함수를 사용해야한다.
void *kmap(struct page *page);
이 함수는 상위 및 하위 메모리 모두에서 동작한다. page 구조체가 하위 메모리에 속해 있으면, 단순히 페이지의 가상 주소가 리턴한다. 하지만 페이자가 상위 메모리에 있는 경우 영구적 매핑이 생성되어 그 주소가 리턴.
함수는 휴면할 수도 있으므로 kmap()은 프로세스 컨텍스트상에서만 동작한다.
영구적 매핑의 수는 제한되어있기 때문에(그렇지 않다면 이렇게 복잡하게 처리하지 않고 모든 메모리를 영구적으로 매핑했을 것이다.) (음.. 맞아.. 그냥 다 매핑하면 쉽자나... )
더 이상 필요할 수 없는 경우 반드시 이러한 매핑을 제거해야한다. 이 작업 다음 함수를 통해 이루어지낟.
void kunmap(struct page *page)
void *kmap(struct page *page);
이 함수는 상위 및 하위 메모리 모두에서 동작한다. page 구조체가 하위 메모리에 속해 있으면, 단순히 페이지의 가상 주소가 리턴한다. 하지만 페이자가 상위 메모리에 있는 경우 영구적 매핑이 생성되어 그 주소가 리턴.
함수는 휴면할 수도 있으므로 kmap()은 프로세스 컨텍스트상에서만 동작한다.
영구적 매핑의 수는 제한되어있기 때문에(그렇지 않다면 이렇게 복잡하게 처리하지 않고 모든 메모리를 영구적으로 매핑했을 것이다.) (음.. 맞아.. 그냥 다 매핑하면 쉽자나... )
더 이상 필요할 수 없는 경우 반드시 이러한 매핑을 제거해야한다. 이 작업 다음 함수를 통해 이루어지낟.
void kunmap(struct page *page)
'OS이야기' 카테고리의 다른 글
유닉스 파일시스템 (0) | 2011.10.20 |
---|---|
가상 파일시스템 (0) | 2011.10.20 |
런타임에서의 CPU별 데이터 (0) | 2011.10.20 |
슬랩 할당자 사용예제 (0) | 2011.10.20 |
슬랩 할당자 인터페이스 (0) | 2011.10.20 |