논리적 주소와 물리적 주소 #

논리적 주소와 물리적 주소는 컴퓨터의 메모리 관리와 접근에 관한 내용입니다.

운영 체제의 메모리 관리 메커니즘에서 사용됩니다.

논리적 주소 #

  • 정의: 논리적 주소는 프로그램이 사용하는 주소입니다.
  • 생성: 컴파일러나 인터프리터(JS, Ruby, Python)에 의해 생성되며 컴파일 시점(C, C++, Java, Rust 등)에 결정되거나 프로그램이 실행되는 동안 동적으로 생성됩니다.
  • 목적: 논리적 주소가 존재하는 이유는 프로그램이 실제 물리적 메모리 주소에 직접적으로 의존하지 않게 함으로써 프로그램을 유연하게 만듭니다.
  • 예시: 프로그램에서 변수에 접근할 때 사용하는 주소가 논리적 주소입니다.

물리적 주소 #

  • 정의: 물리적 주소는 실제 메모리 상에서 메모리의 위치를 나타냅니다.
  • 생성: 메모리 컨트롤러가 데이터를 메모리의 실제 위치에 저장하거나 위치를 읽어옵니다.
  • 목적: 실제 메모리 장치 내에서 데이터의 위치를 정확하게 지정하는 역할을 합니다.
  • 예시: RAM의 실제 데이터가 저장 되어지는 물리적 셀의 주소

주소의 변환과 Memory Management Unit #

아래는 실제 MMU의 사진이다.

image alt

(최근은 CPU에 통합 되었습니다.)

MMU는 논리적 주소를 물리적 주소로 변환하는 하드웨어 장치입니다. 운영체제는 MMU를 통해 논리적 주소와 물리적 주소 사이의 매핑을 관리합니다.

매핑은 주로 주소 사상 기법이며 운영체제에 의해 실행 되어집니다.

정리하자면

운영체제는 MMU를 통해 물리적 주소와 가상 주소를 매핑하는 주소 사상 기법을 사용합니다.

주소 사상 기법 #

주소 사상 기법은 페이징과 세그멘테이션을 통해 구현되고, 추가적으로 직접 사상 방식이 추가됩니다.

직접 사상 방법 #

  • 개념: 논리적 주소와 물리적 주소 사이에 직접적인 매핑 관계를 설정합니다.
  • 주소 변환: 덧셈 뺄셈을 통해 주소 변환이 이루어집니다.
  • 특징: 단순하지만, 메모리 관리의 유연성이 제한됩니다.