명품 운영체제 8장 메모리 관리 - 메모리 주소
물리주소와 논리주소
- 물리 주소
실제 물리 메모리에서 사용하는 주소
- 논리 주소 (가상 주소)
프로세스 내에서 컴파일러에 의해 매겨지는 주소
논리 주소는 사용자에게 모든 메모리의 주소를 사용하고 있다는 착각과, 프로세스의 코드와 데이터가 0번지 무터 메모리에 적재된다는 착각을 불러일으킨다.
논리 주소의 물리 주소 변환
메인 메모리에 엑세스하여 명령어나 데이터를 얻기 위해서는 논리주소를 물리주소 로 변환해야한다.
이때, 논리 주소를 물리 주소로 바꾸는 방법은 " MMU( 주소 변환 하드웨어) " 를 이용한다.

MMU가 CPU 외부에 있다면, CPU가 발생시키는 주소는 논리 주소이다.
하지만 현재 컴퓨터는 대부분 MMU가 CPU 패키지 내부에 존재하기 때문에, CPU 패키지 바깥으로 나오는 주소는 물리주소이다.
컴파일과 논리주소, 논리 주소가 사용되는 이유
컴파일러는 사용자가 작성한 프로그램을 논리 주소로 컴파일 한다.
프로그램이 실행을 시작할때, 운영체제는 프로세스를 생성하고 코드와 데이터를 메인 메모리에 적재한 후
프로세스 별로 코드와 데이터가 적재된 물리주소의 매핑 테이블을 만들어 놓는다.
MMU는 이 매핑 테이블을 이용하여 CPU로 부터 출력된 논리주소를 물리 주소로 바꾼다
매핑 테이블과 MMU 덕분에 컴파일러는 논리 주소로 컴파일 하는데 부담이 없고, 운영체제 역시 물리 메모리의 빈공간 아무데나 할당하더라도 상관없다.
개발자 역시 프로그램이 물리 메모리의 몇번지에 할당되는지 주소를 알 필요도 없어지게 된다.
메모리 공간을 더욱 효율적으로 사용, 실제 주소를 몰라도 되는 편리함 (보안성↑)
🚨 출처
논리 주소 물리주소 변환 이미지 출처: https://cstaleem.com/memory-management-unit-in-os