Storage

2 minute read

저장 공간 구조

폰 노이만 구조 상 컴퓨터는 일을 하기 위해서
메모리에 저장된 명령들을 CPU로 보내게 된다.
따라서 메인 메모리는 컴퓨터에 있어 필수 장치이다.
특히 메모리는 CPU가 직접 접근할 수 있는 유일한 대량 저장 장치이기도 하다.

메모리는 위치가 어디든 같은 속도로 접근할 수 있는 ‘random access’의 특성을 가지며
종료 시 메모리 내의 데이터가 삭제되는 휘발성이다.
우리가 아는 RAM은 Random Access Memory의 약자이다.

보조 저장 장치(secondary storage)는 메인 메모리의 확장으로, 비휘발성의 큰 저장 공간을 제공한다.
일반적으로 하드 디스크(Hard Disk Drive)가 이에 속한다.

자기 디스크(magnetic disk) 는 자성을 가진 재질로 덮인 단단한 금속이나 유리판을 저장 공간으로 이용한다.
디스크 표면은 트랙으로 나뉘고 이는 또다시 섹터로 구분이 되어 최종적으로 섹터에 데이터를 저장한다.
디스크 컨트롤러가 이 디바이스와 컴퓨터 사이의 상호작용을 결정하게 된다.
하드 디스크는 자기 디스크의 일종이다. 여러 플래터를 가져 암(arm)으로 정보를 읽는다.

SSD (Solid State Disks) 는 자기 디스크보다 빠르고 비휘발성이다.
다양한 기술로 구현이 되며 인기가 급증하고 있다.

저장 공간의 계급도

image

저장 공간에도 클래스가 있다.

위의 계급도는 저장 공간을 데이터 접근 때의 속도,
가격과 휘발성 여부에 따라 나눈 것이다.
저장 공간의 크기는 아래로 갈 수록 증가하며
가격과 속도 또한 그렇다.

제일 위의 레지스터는 CPU가 가지고 있는 최소한의 저장공간이다.
운영 체제 별로 다른 크기의 레지스터를 가지고 있으며
하나의 크기는 몇 바이트에 불과하여 수 하나와 문자 밖에 다루지 못한다.
그러나 CPU가 가지고 있다는 특성 때문에 접근 시간은 다른 저장 공간 중에서 제일 빠르다.

그 아래의 캐시(cache)는 CPU 안팎에 있는 저장 공간으로
프로그램의 명령이나 프로그램 실행에 필요한 값이 저장이 된다.
이는 일 처리 중에 메모리에 접근할 필요가 없이 바로 명령어나 값을 가져오기 위함인데
이렇게 낮은 속도로의 접근을 방지하기 위해
높은 속도의 저장 공간의 데이터를 일부 저장하는 것을 캐싱(caching)이라고 한다.
캐시는 이전에 실행한 명령을 저장하여, 자주 실행되는 명령을 메모리까지 안 가고 바로 실행할 수 있게 한다.
이렇게 되면 컴퓨터의 속도는 향상하게 된다.

보조 기억 장치로 가지 않고 명령을 실행하기 위해
프로그램의 일부를 메인 메모리에 저장하는 것도 역시 캐싱이라고 볼 수 있다.

그 밑으로 메인 메모리는 우리가 보통 부르는 램(RAM)이 이것이다.

이 위로는 전부 휘발성이며, 그 아래의 SSD, 자기 디스크, 광학 디스크 등은 전부 비휘발성이다.
이들은 큰 의미로 보자면 입출력 장치에 속할 수도 있다.
서드 파티 제작사도 많고 다 제어하는 방법이 다른데
이들의 특성과 무관하게 입출력을 관리할 수 있는 장치 제어기인 device driver가 있다.
이는 제어기와 커널 사이에 공통된 인터페이스를 제공한다.

캐싱

캐싱은 컴퓨터의 성능 향상을 위해
느린 저장 장치의 일부 데이터(원본)을 보다 빠른 저장 장치에 저장하는 것이다.
컴퓨터의 많은 계층에서 (하드웨어, 운영 체제, 기타 S/W)
사용되는 중요한 원칙이다.

일을 처리를 할 때 CPU는 고속 저장 장치를 먼저 살핀다.
만약 사용하려는 값이 있다면 그걸 가져다가 사용하면 되고
없다면 그 밑의 저장 장치에 가서 찾고, 그 값을 캐싱한다.

물론 캐시된 데이터를 저장할 고속 저장 장치는 그 크기가 작기 때문에
원본 데이터 중 일부만 옮길 수 밖에 없는데
때문에 이전에 쓰였던 데이터 등을 옮긴다. (다시 쓰일 확률이 높은 데이터)

또한 같은 이유로 캐시를 어떻게 관리할지는 중요한 디자인 문제로
캐시 사이즈가 다 찼을 경우 어떤 데이터를 지우고 어떤 데이터를 새로 들일지를 결정하는(대체)
replacement policy 가 중요하다.