rv6
rv6 copied to clipboard
Generalizing uvm_* methods for kvm
- xv6에 대해서는 말씀하신대로 kernel page table이 변화하지 않습니다만 앞으로 우리가 만들 kernel에서는 필요하게 될 것 같습니다.
- 만약에 logic이 거의 비슷하다면 kvm도 지원하는
fn alloc()
으로 만들기를 제안합니다. (꼭 이번 PR일 필요는 없어보입니다. Issue raising 해주세요) - 아니라면 지금 그대로 일단 uvm_alloc으로 놔두는게 좋겠습니다. @Medowhill 님이 판단 부탁드려요
Originally posted by @jeehoonkang in https://github.com/kaist-cp/rv6/pull/334#discussion_r558818251
uvm_alloc
등의 uvm_*
메서드를 kvm도 지원하도록 일반화할 것을 제안하는 이슈입니다. 다만, 이는 xv6를 Rust로 리팩토링하는 것과는 상관이 없고, 이후에 xv6를 확장한 새로운 커널을 만들 때 필요한 것이니 xv6 리팩토링이 완료된 이후에 진행하면 좋을 것 같습니다.
참고: PageTable<UVAddr>::free()
(구 PageTable<UVAddr>::uvmfree()
)의 경우 PR https://github.com/kaist-cp/rv6/pull/330 에 의해 dead code가 되었으며, PageTable<UVAddr>
이나 PageTable<KVAddr>
이나 둘다 동일한 drop()
함수를 사용합니다. (즉, 어느정도 일반화되었으나, 나중에 KVAddr
부분을 좀 변경해야 될 수는 있습니다.)