'메모리에 저장된 정보의 위치는 주소로 나타낼 수 있다'가 있습니다.
사실 주소 종류로 '물리주소, 논리주소' 두 가지가 있습니다.
물리 주소
- 메모리가 사용하는 주소는 하드웨어상의 실제 주소 정보입니다.
- CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되는지 알지 못합니다.
- 메모리의 저장된 정보는 실행이 끝난 프로그램은 삭제되고 동일한 프로그램을 실행해도 적재되는
주소의 정보가 달라집니다.
논리 주소
- CPU와 실행 중인 프로그램이 사용하는 주소입니다.
- 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소를 의미합니다.
CPU가 메모리와 상호작용하려면 논리 주소, 물리 주소 간의 변환이 이루어져야 합니다.
논리 주소, 물리 주소 간에 어떠한 변환도 이루어지지 않는 다면 CPU와 메모리는 서로 이해할 수 없는
주소 체계를 가지고 각자 다른 이야기만 할 뿐 결코 상호작용할 수 없습니다.
논리 주소와 물리 주소 간의 변환은 CPU와 주소 버스 사이에 위치한 '메모리 관린 장치라는 하드웨어'에
의해 수행됩니다.
메모리 관리 장치(MMU)
- CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환합니다.
베이스 레지스터
- 프로그램의 가장 작은 물리 주소로 프로그램의 첫 물리 주소를 저장하는 셈입니다.
메모리 보호 기법
- 컴퓨터 메모리의 사용을 제어하는 방법으로 모든 운영체제에서 중요 사항 중 하나입니다.
- 운영체제에서 실행되고 있는 프로세스가 자신에게 할당되지 않는 영역의 메모리에 접근하는 것을
막는 것이 메모리 보호의 주된 목적입니다.
- 프로세스 내의 버그가 다른 프로세스의 동작에 영향을 미치는 것을 예방하고 악성 소프트웨어가 시스템
에서 허가되지 않는 접근권한을 갖고 시스템에 영향을 끼치는 것을 막아줍니다.
종류
ASLR : 메모리 상의 곡 격을 어렵게 하기 위함으로 라이브러리 등의 주소를 랜덤으로 프로세스 주소 공간에
배치함으로 실행된 때마다 데이터의 주소가 바뀌는 기법입니다.
NX-Bit : 프로세스 명령어, 코드, 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU 기술입니다.
NX특성으로 저장된 모든 메모리 구역은 데이터 저장을 위해서만 사용되며 프로세스 명령어가
그곳에 상주하지 않음으로 실행되지 않도록 만들어 줍니다.
DEP : 마이크로소프트 윈도 운영 처제에 포함된 보안 기능으로 악의적인 코드가 실행되는 것을 방지입니다.
한계 레지스터
- 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하여 논리 주소 범위를 벗어나는 명령어 실행을
방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법입니다.
베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면
한계 레지스터는 논리 주소의 최대 크기를 저장합니다.
프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만 됩니다.
CPU는 메모리에 접근하기 전 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지 검사합니다.
검사하여 CPU가 한계 레지스터보다 높은 논리 주소에 접근하는 경우 인터럽트(트랩)를 발생시켜
실행을 중단시킵니다.
이러한 특징으로 실행 중인 프로그램의 독립적인 실행 공간을 확보하고 하나의 프로그램이 다른 프로그램을
침범하지 못하게 보호합니다.