인프런의 개발자를 위한 컴퓨터 공학1 : 혼자 공부하는 컴퓨터 구조 + 운영체제 강의를 듣고, 학습 및 요약
주소에는 논리주소와 물리주소가 있다.
CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못한다.
- 메모리에 저장된 값들은 시시각각 변하기 때문
- 새롭게 실행되는 프로그램은 새롭게 메모리에 적재
- 실행이 끝난 프로그램은 메모리에서 삭제
- 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라짐
물리 주소 | 논리 주소 |
메모리 입장에서 바라본 주소 | CPU와 실행 중인 프로그램 입장에서 바라본 주소 |
정보가 실제로 저장된 하드웨어상의 주소 | 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소 |
겹치는 주소 번지가 없음 | 겹치는 주소 번지가 있음 |
물리 주소와 논리 주소의 변환
CPU가 이해하고 실행하는 주소 => 물리주소. 즉, CPU가 메모리와 상호작용을 하려면 논리 주소를 물리 주소로 변환하는 과정이 있어야 한다.
MMU(메모리 관리 장치) : 논리주소와 물리주소 사이의 변환을 이루어주는 장치
- MMU라는 하드웨어에 의해 변환됨
- MMU는 논리 주소와 베이스 레지스터(프로그램의 기준 주소) 값을 더해 논리주소를 물리주소로 변환한다.
- 베이스 레지스터 안에는 프로그램의 시작 주소가 담긴다.
- 즉 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장한다.
- 논리주소는 시작(기준) 주소에서 얼마나 떨어져 있는 지를 나타냄, 즉, 프로그램의 시작점으로부터 떨어진 거리인 셈
메모리 보호
어떤 명령어가 다른 프로그램의 영역을 침범하지 않도록 메모리를 보호해야 한다.
- 위처럼 되면 게임 프로그램의 3100번지 데이터가 삭제되기 때문에 이렇게 되면 안된다!
한계 레지스터(limit register)
프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
- 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장함
- 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터
- CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 크면 안됨
- 베이스 레지스터에 100, 한계 레지스터에 150이 저장되어 있다고 가정
- 물리 주소 시작점이 이 100번지, 프로그램의 크기(논리 주소의 최대 크기)는 150
- 프로그램 크기가 150 이기에 150보다 큰 주소 번지에 대한 명령이 들어오면 막는다! 즉, 위 그림의 명령어는 실행되지 않을 것임
CPU는 메모리에 접근하기 전 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사
실행 중인 프로그램의 독립적인 실행 공간을 확보하고, 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호함
'cs' 카테고리의 다른 글
[혼공운영체제] 보조기억장치(하드디스크, 플래시 메모리, RAID) (0) | 2023.04.30 |
---|---|
[혼공운영체제] 캐시메모리 (0) | 2023.04.26 |
[혼공운영체제] RAM의 특징과 종류와 메모리의 주소 공간 (0) | 2023.04.17 |
[혼공운영체제] CPU의 성능 향상 기법(3) : 명령어 집합 구조, CISC와 RISC (0) | 2023.04.17 |
[혼공운영체제] 5.CPU의 성능 향상 기법(2) : 명령어 병렬 처리 기법 (0) | 2023.04.17 |