리눅스에서 virtual address를 사용하는 이유 및 몇가지 궁금증
글쓴이: naruto0202 / 작성시간: 토, 2006/12/02 - 2:07오후
리눅스에서 가상주소를 굳이 사용하는 이유가 뭐죠? 장단점이 궁금합니다.
그리고, vmlinux.lds 화일을 보면 메모리맵이 설정이 되어있는데 이주소는 가상주소인가요 아니면 물리주소인가요?
ELF 화일을 로드해서 보이는 주소는 가상주소인가요?
실제 flash에 binary를 다운로드 할 경우에는 물리주소가 필요할텐데요. 만일 ELF 화일이 포함하고 있는것이 가상주소라면 binary 변환시 어떻게 물리주소로 매핑이 되는거죠? 물리주소 매핑은 일단 프로그램이 돌면서 MMU function이 돌아주어야 가능한 것 아닌가요?
Forums:
흠... 가상주소는 page
흠... 가상주소는 page 를 이용한 메모리관리를 하면서 생긴건데(?) 메모리를 효율적으로 관리할 수 있게 해주죠... 대신 MMU라는 조금은 복잡한 메모리관리하드웨어를 요구하구요... OS에서도 조금은 복잡한 알고리즘의 메모리 관리정책이 필요하죠...
각각의 독립된 프로세스마다 독립된 메모리 영역을 제공해주기도 하지요...
흠... 글 쓰신걸 보니깐 임베디드 개발을 하시는거 같은데 커널(vmlinux)가 올라가는 메모리는 실제 물리주소는 0x00000000부터 올라가구요 이게 가상주소로 0xc0000000으로 매핑되죠...(실제 주소는 아키텍쳐마다 틀립니다)
부트로더가 압축된 vmlinux를 물리주소인 0x00000000에 압축을 풀어주고 그쪽(0x00000000)의 entry point로 점프해주면 vmlinux의 시작부분에서 mmu를 초기화 하고 자기자신을(0x00000000)을 0xc0000000으로 매핑시키죠...
흠... 가상주소나 page 메모리 관리는 컴퓨터과학등의 운영체제 과목에 자세히 나오구요... 아마 인터넷에 찾아봐도 자료가 많을 듯 합니다...
그리고 임베디드 아키텍쳐의 동작은... 실제 소스를 따라가면서 이해하는게 빠를 듯 합니다...
댓글 달기