음..갑자기 토욜날 얘기했던게 생각나서염..
각각의 guest들에게 메모리를 할당할때 이게 물리적으로 연속되어야 하는거 아닌가요??
창우님이 말씀하셨듯이 DMA같은것 땜에 그렇지 않을까요??
음..그렇다면 지금 프로젝트의 초간단 버전 상황에서는 메모리 할당을 그냥 반반 나누어서 하는 걸로 진행하는 것이 낳지 않을까 생각되네요..
글쓰다 보니까 shadow page 이건 direct page 이건간에 뭐 어찌어찌 페이지 테이블의 조작으로 가능 할 것 같은 느낌은 듭니다만....역시 아직 이해가 부족한지라..ㅜㅜ
각각의 guest들에게 메모리를 할당할때 이게 물리적으로 연속되어야 하는거 아닌가요??
창우님이 말씀하셨듯이 DMA같은것 땜에 그렇지 않을까요??
음..그렇다면 지금 프로젝트의 초간단 버전 상황에서는 메모리 할당을 그냥 반반 나누어서 하는 걸로 진행하는 것이 낳지 않을까 생각되네요..
글쓰다 보니까 shadow page 이건 direct page 이건간에 뭐 어찌어찌 페이지 테이블의 조작으로 가능 할 것 같은 느낌은 듭니다만....역시 아직 이해가 부족한지라..ㅜㅜ
댓글 3
-
백창우
2008.05.05 16:07
-
정성욱
2008.05.06 17:11
Virtual Address
     |
mmu를 통해서 변환(vMMU인지는 모르겠음, 아닌듯 싶음)
     |
     v
(Pseudo)Pysical Address
  : Guest가 생각하는 Machine Address, 0부터 연속되어진 주소체계,
  : 실제 Machine Address는 아님.
     |
  : pysical to machine table을 사용하여 변경
     |
     v
Machine Address
  : Hypervisor가 생각하는 Machine Address, 실제 기계의 Machine
  : Address, (Pseudo)Pysical Address의 연속된 주소가 연속되어 존재
  : 할 수도 있지만 아닐 수도 있음. -
정성욱
2008.05.06 17:12
그냥 참고 하시라고 도움이 될련지는 모르겠습니다만... ^^
.
차후 연속된 메모리 영역과 불연속된 메모리 영역을 구분해서 가지고 올수 있도록 zone과 같은 개념을 넣어야 되지 않을까 생각됩니다.
처음 시작할때는 초간단한 구조로 진행하셨으면 합니다.
메모리 메니져먼트는 의외로 복잡한 측면이 많이 있어 알지 못하는 버그 많이 내재될 가능성이 높습니다.
리눅스 커널 2.4에서 대부분의 버그가 메모리 메니져먼트에서 발견된 이유가 바로 그때문이고, 제가 만들었던 OS들에서도 메모리 메니져먼트에서 문제가 발생되는 경우가 많았습니다.