메모리에 저장된 주소에는 물리주소, 논리주소 두 가지가 있다.
물리주소는 메모리 하드웨어가 사용하는 주소이고,
논리주소는 CPU와 실행중인 프로그램이 사용하는 주소이다.
물리주소와 논리주소의 개념에 대해 더 알아보고,
논리주소와 물리주소 간 변환 방법,
메모리 보호 방법에 대해 알아보자.
메모리에 저장된 정보는 시시각각 변한다.
메모리에는 새롭게 실행되는 프로그램이 시시때때로 적재되고, 실행이 끝난 프로그램은 삭제된다.
1. 정의
물리주소 | 논리주소 |
메모리가 사용 | CPU와 실행 중인 프로그램이 사용 |
정보가 실제로 저장된 하드웨어상의 주소 | 실행 중인 프로그램 가각에게 부여된 0번지부터 시작되는 주소 |
EX) 메모리에 메모장, 게임, 인터넷 브라우저 프로그램이 적재되어 있을때
각각의 프로그램들은 서로가 어느 물리 주소에 저장되어있는지 알필요 없음
(새로운 프로그램이 언제든 적재되거나, 실행되지 않는 프로그램은 언제든 삭제될 수 있기 때문이다)
∴ 각각 0번지부터 시작하는 논리주소를 가지고 있다.
프로그램마다 같은 논리주소가 얼마든지 존재할 수 있다.
2. 논리주소와 물리주소 간 변환 - MMU
CPU가 메모리와 상호작용하려면 논리주소와 물리주소간 변환이 있어야한다.
CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MMU)라는 하드웨어에 의해 수행된다.
CPU가 발생시킨 논리주소 + 베이스 레지스터 값 = 물리주소
* 베이스 레지스터 = 프로그램의 첫 물리주소를 저장
* 논리주소 = 프로그램의 시작점으로부터 떨어진 거리
ex)
베이스 레지스터: 15000이 저장
CPU가 발생시킨 논리주소: 100번지
물리주소 = 15000 + 100 = 15100번지
3. 메모리 보호 기법
[오류 케이스]
메모장의 논리주소 = 0번지 ~ 1000번지인데
CPU는 메모장의 논리주소 1500번지에 값을 저장하라고 명령
→ 인터넷브라우저에 숫자 100을 저장하게 됨
[해결 방법]
* 베이스 레지스터 = 실행중인 프로그램의 가장 작은 물리주소 저장
* 한계 레지스터 = 논리주소의 최대 크기를 저장
논리주소 범위를 벗어나는 명령어 실행을 방지하고, 실행중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호한다.
+ 베이스 레지스터 값 ≤ 물리주소 ≤ 베이스 레지스터 + 한계 레지스터 값
접근하고자 하는 논리 주소가 한계 레지스터보다 작은지 검사
→ 높으면 인터럽트(트랩) 발생
'CS > [혼자 공부하는 컴퓨터구조 + 운영체제]' 카테고리의 다른 글
[컴퓨터구조] 7-1. 다양한 보조기억장치 - 하드디스크 / 플래시메모리 (0) | 2024.05.13 |
---|---|
[컴퓨터구조] 6-3. 캐시 메모리 (0) | 2024.05.09 |
[컴퓨터 구조] 6-1. RAM의 특징 (0) | 2024.05.07 |
[컴퓨터 구조] 5-3. ISA, CISC와 RISC (0) | 2024.05.03 |
[컴퓨터 구조] 5-2. 효율적인 CPU를 위한 설계 기법 - 명령어 병렬 처리 기법 (1) | 2024.05.02 |