Q. CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되아 있는지 다 알고 있을까?
A. 모른다. (메모리에 저장된 정보는 시시각각 변하기 때문)
그럼 CPU와 실행 중인 프로그램이 아는 주소는? 논리 주소다
주소에는 메모리가 사용하는 물리 주소와 CPU, 실행 중인 프로그램이 사용하는 논리 주소가 있다.
물리 주소
메모리 입장
에서 바라본 주소- 실제 저장된 하드웨어상의 주소
논리 주소
CPU와 실행 중인 프로그램 입장
에서 바라본 주소- 실행 중인 프로그램
각각에게 부여된 0번지부터 시작하는 주소
메모리 관리 장치(MMU Memory Management Unit)
- 물리 주소와 논리 주소 간의
변환
을 해줌- CPU가 발생시킨 논리 주소에
베이스 레지스터 값
을 더하여 논리 주소를 물리 주소로 변환베이스 레지스터: 프로그램의 가장 작은 물리 주소 (프로그램의 첫 물리 주소를 저장)
논리 주소: 프로그램의 시작점으로부터 떨어진 거리
주소 범위를 침범한다면?
한계 레지스터가 처리할테니 걱정 말라구🦝
한계 레지스터
- 논리 주소 범위를 벗어나는 명령어 실행 방지
- 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호
논리 주소의 최대 크기를 저장
베이스 레지스터 값
≤프로그램의 물리 주소 범위
<베이스 레지스터 값+한계 레지스터 값
즉, CPU가 접급하려는 논리 주소는 한계 레지스터가 저장한 값보다 크면 안됨
<출처>
"혼자 공부하는 컴퓨터구조+운영체제".강민철.https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl (2023.04.24)
책과 강의를 통해 학습한 내용을 요약 정리했습니다.