본 게시물은 ‘강민철, ⌜혼자 공부하는 컴퓨터구조 + 운영체제⌟, 한빛미디어, 2022’ 을 인용하였습니다.
물리 주소와 논리 주소
- 메모리에 저장된 정보는 변함 -> CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못함
- 물리 주소(physical address) : 실제로 저장된 하드웨어 상의 주소(실제 주소)로 메모리가 사용하는 주소
- 논리 주소(logical address) : 실행 중인 프로그램에게 각각 부여된 0번지부터 시작되는 주소로 CPU와 실행 중인 프로그램이 사용하는 주소
- 메모리 관리 장치(MMU; Memory Management Unit)
- CPU가 메모리와 상호작용하려면 논리 주소와 물리 주소 간의 변환 필요
- MMU는 논리 주소와 물리 주소 간의 변환을 담당하는 하드웨어
- CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더해 논리 주소를 물리 주소로 변환함
▶ 메모리 관리 장치(MMU) 예시 : 베이스 레지스터에 15000 저장, CPU가 발생시킨 논리 주소 100번지
논리 주소 100은 물리 주소 15100번지(100+15000)으로 변환됨
물리 주소 15000번지부터 적재된 프로그램 A의 논리 주소 100번지에 접근O
- 베이스 레지스터는 프로그램의 가장 작은 물리주소 즉, 프로그램의 첫 물리 주소를 저장
논리 주소는 프로그램의 시작점으로부터 떨어진 거리
메모리 보호 기법
- 한계 레지스터(limit register)
- 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험함
- 논리 주소를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향 받지 않도록 보호
- 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장함
- 즉, 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만이 됨
- CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 크면 안됨
- 한계 레지스터보다 높은 주소 값에 접근하는 것은 프로그램의 범위에 벗어난 메모리 공간에 접근하는 것과 같기 때문
▶ 한계 레지스터 예시 : 베이스 레지스터에 100, 한계 레지스터에 150 저장
물리 주소 시작점이 100번지, 프로그램의 크기(논리 주소의 최대 크기)가 150이라는 것
이 프로그램은 150번지를 넘어서는 논리 주소를 가질 수 없음
- 만약 CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 하면, 인터럽트(트랩)를 발생시켜 실행을 중단함
확인 문제
1. 주소와 관련된 설명으로 옳은 것을 고르세요. : 프로그램이 실행될 때마다 다른 주소에 적재될 수 있다.
2. 논리 주소와 물리 주소에 대한 설명 중 옳지 않은 것을 고르세요. : 물리 주소는 모든 프로그램의 시작 주소를 0번지로 간주합니다.
실행 중인 프로그램에 각각 부여된 0번지부터 시작되는 주소는 논리 주소임
3. MMU에 대한 설명으로 옳은 것을 고르세요. : MMU는 논리 주소를 물리 주소로 변환해 줍니다.
4. 다음 그림은 논리 주소가 물리 주소로 변환되는 과정을 나타냅니다. 다음 빈칸에 알맞은 단어를 쓰세요.
① 한계 레지스터 : 명령어가 다른 프로그램 범위를 침범하는지 검사
② 베이스 레지스터 : 논리 주소와 더해져 물리 주소로 변환됨