728x90
메모리에 저장된 정보의 위치는 주소로 나타낼 수 있다.
주소에는 논리 주소와 물리 주소가 있음
물리 주소: 하드웨어가 사용하는 주소
논리 주소: CPU와 실행중인 프로그램이 사용하는 주소
물리주소와 논리주소
물리주소
- 정보가 실제로 저장된 하드웨어상의 주소를 의미
논리주소
- CPU와 실행 중인 프로그램이 사용하는 주소
- 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소를 의미함
CPU와 실행 중인 프로그램은 현재 메모리가 몇 번지에 저장됐는지 다 알고 있을까?
-> 그렇지 않다. 메모리에 저장된 정보는 계속 변하기 때문! 1500번지에 적재되었던 프로그램을 실행하면 3000번지에 적재될 수 있음
그렇다면 CPU와 실행 중인 프로그램이 이해하는 주소는 무엇일까?
-> 논리 주소를 받아들이고 해석하고 연산함!
CPU가 이해하는 주소가 논리 주소라고 해도 CPU가 메모리와 상호작용 하기 위해서는 논리 주소와 물리 주소간의 변환이 이루어져야함.
CPU : A프로그램의 0번지에 'A' 저장 , C프로그램의 C번지에 'B' 저장
메모리: 0번지는 하나밖에 없는데?
논리주소를 물리주소로 변환
- CPU와 버스 사이에 위치한 메모리 관리 장치 MMU Memory Management Unit 하드웨어를 통해 수행됨
- MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더해 논리 주소를 물리 주소로 변환함
- 베이스 레지스터: 프로그램의 첫 물리 주소 저장
- 논리 주소: 프로그램의 시작점으로부터 떨어진 거리
메모리 보호 기법
- A프로그램의 물리주소 1000번지부터 1999번지
- B프로그램의 물리주소 2000번지부터 2999번지
- C프로그램의 물리주소 3000번지부터 3999번지
- 라고 할 때 A프로그램 1500번지에 숫자 100을 저장하라는 명령이 있다면 실행되어도 안전한가?
- 안전하지 않다 A프로그램의 논리 주소는 0번지부터 999번지인데 이를 벗어났기 때문
이렇게 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요하고 이를 한계 레지스터가 담당함
베이스 레지스터가 실행중인 프로그램의 가장 첫번째 물리 주소를 저장한다면
한계 레지스터는 논리 주소의 최대 크기를 저장함
CPU가 접근하려는 논리 주소는 한계 레지스터의 값보다 커서는 안됨
만약 한계 레지스터보다 높은 논리 주소에 접근하면 인터럽트가 발생함
728x90
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 보조기억장치 (0) | 2022.11.24 |
---|---|
[컴퓨터구조] 캐시 메모리 (0) | 2022.11.23 |
[컴퓨터구조] 메모리 RAM의 특징과 종류 (0) | 2022.11.23 |
[컴퓨터구조] 명령어 병렬 처리 기법 (0) | 2022.11.22 |
[컴퓨터구조] CPU 성능 향상 기법 (0) | 2022.11.22 |