물리 메모리 직접 접근이 안되는 이유.
글쓴이: zasxer / 작성시간: 월, 2018/06/11 - 11:15오후
static phys_addr_t __init early_pgtable_alloc(void) { phys_addr_t phys; void *ptr; phys = memblock_alloc(PAGE_SIZE, PAGE_SIZE); BUG_ON(!phys); ptr = pte_set_fixmap(phys); memset(ptr, 0, PAGE_SIZE); pte_clear_fixmap(); return phys; } arch/arm64/mm/mmu.c
위의 코드를 보면 pte_set_fixmap(phys)에서 물리메모리를 가상주소에 매핑한 후 해당 페이지를 0으로 초기화하는 작업인데, 바로 물리메모리에 접근해서 0으로 초기화 하면 안되나요??
시스템 구조상 바로 접근하여 초기화하는게 문제가 되기야 하겠지만...
결국 초기화할때만 쓸 거인데, 물리메모리 직접접근 안하는 이유가 무엇인지...
접근이 안된다면 접근이 안되는 이유는 뭘까요?
Forums:
추측
추측하건데, early_pgtable_alloc()가 불리울 때는 이미 MMU 가 On 되어 있을 것입니다.
따라서 물리적 메모리에 접근할 수 없죠.
딱히 그렇게 할 이유가 없지 않나요?
딱히 그렇게 할 이유가 없지 않나요?
이미 시스템에서 page 형식으로 관리하겠다라고 정책을 만들었는데 굳이 예외로 직접 접근해서 초기화 해야할 이유가 있을까요
댓글 달기