본문 바로가기

Study/CS 50

memory

하버드의 컴퓨터과학 입문 강좌(무료)를 듣고, 요약한 내용을 작성

- 네이버 부스트 코스 2019년 강좌를 무편집본으로 제공

- 커넥트 재단 옛날 버전의 강좌, 비교적 최근 버전의 강좌 편집본으로 제공, 별도의 학습자료 제공

- 아래 요약본은 커넥트 재단의 1: 컴퓨터와 컴퓨팅 - Topic 1, 2를 정리한 것입니다. 

요약

컴퓨터로 어떤 작업을 한다고 해 봅시다. 브라우저를 통해 웹 서핑을 하거나, 스포티파이와 같은 스트리밍 서비스로 음악을 듣거나, 문서를 작성할 수 있겠지요. 컴퓨터는 어떻게 이런 작업을 할까요?

 

우선 컴퓨터에 브라우저, 스포티파이와 같은 프로그램이 저장되어 있어야 합니다. 컴퓨터에는 여러 기억 장치(memory)가 있는데, 보통 HDD(또는 SSD)에 프로그램을 저장해 둡니다. 프로그램을 실행하면 이 HDD에 저장된 데이터는 RAM(random access memory)이라는 또 다른 기억 장치에 복사됩니다. 왜 이런 일을 해야 할까요?

 

HDD에 저장된 데이터를 가져오려면, 그 데이터를 찾기 위해 저장소를 뒤져야 합니다. 즉 원하는 데이터를 찾는 데 시간이 오래 걸릴 수 있습니다. 반면 RAM은 다릅니다. 데이터가 어디에 있는지와 데이터를 찾는데 걸리는 시간 사이에 관계가 없습니다. 그래서 원하는 데이터에 빠르게 접근할 수 있어요. 만약 HDD를 통해 우리가 실행하는 프로그램 데이터에 접근해야 한다면, 프로그램으로 원하는 작업을 수행하는 데 오랜 시간이 걸리겠죠?

 

그럼 컴퓨터의 모든 기억장치를 RAM으로 만들면 되지 않을까요? 그렇지는 않습니다. RAM에 저장되는 데이터는 일시적이기 때문에, HDD에 옮겨서 저장하지 않으면 사라집니다. 문서를 저장하지 않고 컴퓨터를 끄면, 우리가 썼던 내용이 전부 날아가지요. 뿐만 아니라 RAM은 같은 용량 대비 HDD보다 훨씬 비쌉니다. 그래서 상용 컴퓨터의 HDD 용량은 500GB~2TB인 반면, RAM의 용량은 8GB~32GB에 불과합니다. 물론 HDD에 저장된 모든 프로그램, 문서, 파일을 한 번에 실행하는 일은 거의 없을 것입니다. 그렇기 때문에 RAM의 용량은 상대적으로 작더라도 괜찮습니다. 

 

이제 프로그램을 RAM으로 옮겼으니, 우리가 원하는 작업을 하겠습니다. 문서 작성 프로그램을 실행하고, 키보드로 글을 작성한다고 해 봅시다. 만약 F라고 타이핑 했다면, 우리가 F를 타이핑 했다는 사실이 RAM에 저장됩니다. 즉, 우리가 컴퓨터에게 어떤 명령을 했는지를 저장합니다. CPU는 이 RAM에 접근해서, 우리가 시킨 일(우리가 타이핑한 f를 어떻게 처리할 것인지)을 수행할 것입니다.

 

그런데 CPU가 직접 RAM에 접근하지는 않습니다. CPU는 매우 빠르게 일을 처리할 수 있지만, 한 번에 처리할 수 있는 일의 양이 작기 때문입니다. 32 bit, 64 bit 컴퓨팅이라는 말을 들어보셨나요? CPU가 한번에 연산할 수 있는 단위를 뜻하는 말입니다. 즉, CPU는 한 번에 그렇게 많은 양의 데이터를 필요로 하지 않습니다. 그래서 RAM과 CPU 사이의 중간 다리로 L3 Cache, L2 Cache, L1 Cache 라는 또 다른 메모리를 사용합니다. RAM 보다 비싸고 용량은 작은 대신 빠르지요. CPU에게  적은 양의 데이터를 빠르게 넘겨주는 역할을 하는 것입니다.

 

+) windows, mac과 같은 운영 체제는 가상 메모리(virtual memory)라는 것을 사용합니다. RAM의 용량은 작은데, 실행 중인 프로그램이 많다고 생각해 봅시다. RAM 용량이 부족한 상황이지요. 이 때 운영 체제는 실행 중이긴 하지만 우선 순위가 밀려 있는 프로그램을 널널한 HDD로 넘깁니다. 이것이 가상 메모리입니다. 오랫동안 백그라운드 상태였던 프로그램을 다시 사용하기 위해 가져왔을 때, 화면이 버벅거리지 않았나요? OS가 우리 몰래 HDD에 넘겨주었던 프로그램을 RAM으로 다시 옮겨와야 하기 때문입니다.

 

from big & slow to fast and small