메모리에 대해 공부해 보고, 메모리 관련 용어들을 정리해보려 한다.
먼저, 메모리(기억장치)의 종류는 레지스터, 캐시, 메인 메모리, 보조 기억장치로 구분할 수 있다.
위와 같이 계층 구조를 갖게 된 이유는 I/O bottlenect(I/O 병목 현상)을 해소하기 위해서다.
CPU는 작은 메모리에 더 빨리 접근이 가능하고, 자주 사용하는 데이터는 자주 사용하지 않는 데이터에 비해 자주 쓰인다는 특징들을 고려하여 설계된 메모리 계층 구조를 통해 디코딩 속도는 증가하고, 경제적으로 메모리를 구성할 수 있게 되었다.
메모리 계층 구조 간 데이터를 전달할 때에는 아래 그림과 같이 각각 전송 단위가 있다.
Address Binding은 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업으로, binding 시점에 따라 3가지 방법으로 나뉜다. 구분된 3가지 시점은, 아래와 같이 소스코드를 짜서 메모리에 올려 실행되기까지의 과정 안에 존재한다.
Dynamic Loading은 모든 루틴(함수)을 교체 가능한 형태로 디스크에 저장해놓고, 실제로 process가 해당 루틴을 호출하면 그 때 함수를 메모리에 올리는 방식이다. 해서 루틴 호출 시점에 address binding이 수행되고, 메모리 공간을 효율적으로 사용할 수 있다.