달력

6

« 2025/6 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2011. 10. 20. 15:37

영구적 매핑 OS이야기2011. 10. 20. 15:37

특정 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
:
Posted by НooпeУ


Code Start Code End