메모리와 저장 장치
32비트 주소로 프로세서가 가리킬 수 있는 바이트는 4,294,967,296개, 정확히 4 GiB입니다. 전원을 끄면 RAM은 그 내용을 모두 잊습니다.
「내 노트북은 메모리가 16 GB니까 사진을 16 GB까지 넣을 수 있다.」 이 문장은 서로 다른 두 부품을 하나로 헷갈린 말입니다. 노트북 광고를 보면 이유가 보입니다. 크기가 두 가지 적혀 있습니다. 예를 들어 메모리 16 GB, 저장 장치 512 GB처럼요. 메모리, 다른 말로 RAM은 CPU가 바로 지금 쓰고 있는 프로그램과 데이터를 담습니다. 저장 장치는 SSD(solid-state drive)나 예전의 하드 디스크를 말하고, 전원을 꺼도 파일을 지킵니다. 사진은 512 GB 쪽에 저장됩니다. 16 GB는 사진을 열어 고치는 동안 잠시 올려 두는 작업 공간입니다.
전원이 꺼지면 RAM이 내용을 잊는 까닭
대부분의 RAM은 비트 하나하나를 아주 작은 전하로 저장합니다. 이 전하는 1초에도 여러 번 다시 채워 주지 않으면 새어 나가기 때문에, 전원이 꺼지면 RAM의 내용은 모두 사라집니다. 이것이 「휘발성」이라는 말의 뜻입니다. 밤늦게 수행평가 보고서를 쓰다가 노트북 배터리가 다 되어 꺼졌는데, 저장하지 않은 마지막 두 문단이 사라졌다고 해 봅시다(지어낸 예입니다). 그 두 문단은 RAM에만 있었고, 저장 장치에는 아직 한 글자도 쓰이지 않았습니다. 저장 장치는 전원이 없어도 데이터를 지킵니다. SSD는 플래시 메모리 칸에 전하를 가둬 몇 년씩 지키고, 하드 디스크는 빙빙 도는 원판 위에 자기를 띤 점으로 비트를 기록합니다. 저장 장치는 RAM보다 훨씬 크고 바이트당 값도 싸지만 데이터에 닿는 데 훨씬 오래 걸립니다. 그래서 프로그램은 실행되기 전에 저장 장치에서 RAM으로 복사됩니다. 앱 화면에 「불러오는 중」이 떠 있을 때 일어나는 일이 이 복사입니다.
CPU가 수십억 바이트 가운데 하나를 찾는 방법
메모리는 긴 줄로 늘어선 칸이고, 칸마다 바이트 하나가 들어 있습니다. 칸에는 0부터 시작하는 번호가 붙어 있는데 이것이 주소입니다. 아파트 우편함에 호수가 붙어 있는 것과 비슷합니다. 읽거나 쓸 때 CPU는 전선 묶음에 주소를 실어 보내고, 그 칸에 든 바이트를 돌려받습니다. 주소가 몇 비트인지에 따라 닿을 수 있는 메모리의 양이 정해집니다. 장난감 컴퓨터처럼 주소가 4비트면 2의 4제곱 = 16칸입니다. 16비트면 65,536칸입니다. 32비트면 4,294,967,296바이트, 정확히 4 GiB이고, 예전 32비트 시스템이 RAM을 4 GiB보다 많이 쓰지 못한 까닭이 이 한계입니다. 요즘의 64비트 프로세서는 이보다 훨씬 많은 칸을 가리킬 수 있습니다.
메모리 칸은 자기 안의 비트가 무슨 뜻인지 모릅니다. 장난감 컴퓨터의 데이터 칸에 든 00000100은 수 4이지만, 같은 비트를 명령으로 읽으면 HALT 4가 됩니다. 둘 가운데 어느 뜻인지는 CPU가 그 칸에 어떻게 닿았느냐로만 정해집니다. 다음 명령으로 읽었는지, 어떤 명령이 가리킨 데이터로 읽었는지가 기준입니다. 명령과 데이터를 한 메모리에 두자는 폰 노이만의 생각에서 바로 나오는 결과입니다. 엉뚱한 주소에 값을 써 버리는 버그 하나가 프로그램 전체를 망가뜨릴 수 있는 이유도 여기에 있습니다.
끌어서 돌리고, 휠이나 두 손가락으로 확대하세요.
아래층으로 갈수록 크고 느립니다
빠른 메모리는 비싸기 때문에 컴퓨터는 메모리를 여러 층으로 나눠 씁니다. 회로에 가장 가까운 층은 레지스터입니다. CPU가 바로 다루는 값 수십 개가 들어가고, 장난감 컴퓨터의 누산기도 여기에 속합니다. 그다음 층은 캐시입니다. 프로세서 칩 위에 있는 작고 빠른 메모리로, 흔히 L1, L2, L3이라고 부르며 최근에 쓴 RAM 부분의 사본을 둡니다. 그 아래가 RAM, 그 아래가 SSD나 하드 디스크이고, 더 멀리에는 네트워크가 있습니다. 한 층 내려갈 때마다 더 커지고 더 느려집니다. 책상 위, 책가방, 교실 사물함, 학교 도서관 순서로 생각하면 쉽습니다. 프로그램에 필요한 것이 대부분 위쪽 층에 이미 있으면 프로그램이 빨리 돕니다. 그래서 데이터를 처음부터 차례대로 읽는 편이 여기저기 건너뛰며 읽는 것보다 대개 빠릅니다.
| RAM | 작업용 메모리, 휘발성 |
| SSD | 플래시 저장 장치, 전원 없이도 보존 |
| 주소 | 메모리 칸의 번호 |
| 캐시 | CPU 칩 위의 작고 빠른 메모리, 최근 데이터 보관 |
| 레지스터 | CPU 안에 있는 값 |
| 32비트 주소 | 4,294,967,296바이트 = 4 GiB |
- 「RAM을 늘리면 CPU가 빨라진다.」 RAM 크기는 클록도, 한 박자에 하는 일의 양도 바꾸지 않습니다. 가까이 둘 수 있는 양을 정할 뿐입니다. 쓰는 프로그램과 데이터가 이미 RAM에 다 들어간다면 RAM을 늘려도 달라지는 것이 별로 없습니다. 다 들어가지 않을 때는 컴퓨터가 훨씬 느린 저장 장치를 자꾸 오가야 하므로, 그때는 RAM을 늘리면 도움이 됩니다.
- 「메모리 16 GB면 파일을 16 GB까지 저장할 수 있다.」 파일은 저장 장치, 광고에 적힌 512 GB 쪽에 저장됩니다. RAM은 지금 열려 있는 것을 잠시 올려 두는 작업 공간이고, 전원이 꺼지면 비워집니다.
- 「화면에 보이면 컴퓨터 안에 안전하게 들어 있는 것이다.」 열려 있는 문서는 RAM에 있습니다. 저장 장치에 저장하기 전에는 정전이나 배터리 방전 한 번에 사라집니다. RAM이 휘발성이기 때문입니다.
- RAM이 "휘발성"이라는 말은 무슨 뜻입니까?
- 전원이 꺼지면 내용을 잃는다
- 아주 빠르다
- 한 번만 쓸 수 있다
- 도는 원판에 저장된다
- 32비트 주소로 가리킬 수 있는 바이트는 몇 개입니까?
- 4,294,967,296바이트는 몇 GiB입니까?
- 주소 비트 16개로 닿을 수 있는 메모리 칸은 몇 개입니까?
- 장난감 컴퓨터에는 8비트 칸이 16개 있습니다. 메모리는 모두 몇 비트입니까?
- 전원을 꺼도 파일을 지키는 것은 어느 것입니까?
- SSD
- RAM
- 캐시
- 레지스터
- 빠른 것부터 느린 것 순서로 놓으세요.
- 4 × 3 프로그램이 멈춘 뒤 13번지에는 어떤 수가 있습니까?
- 장난감 컴퓨터의 데이터 칸에 00000100이 들어 있습니다. 명령으로 읽으면 무슨 뜻입니까?
- HALT 4
- LOAD 4
- STORE 4
- ADD 4
- 프로그램은 왜 실행 전에 저장 장치에서 RAM으로 복사됩니까?
- CPU가 RAM에 훨씬 빨리 닿기 때문에
- 저장 장치는 프로그램을 담지 못해서
- RAM은 전원이 꺼져도 데이터를 지켜서
- SSD가 바로 닳아 버려서
- 메모리는 번호 붙은 칸이고, 주소 비트 n개는 2ⁿ칸에 닿습니다(32비트 = 4 GiB).
- 같은 비트가 명령일 수도 데이터일 수도 있고, CPU가 어떻게 닿는지가 정합니다.
- RAM은 휘발성 작업 메모리이고, SSD와 하드 디스크는 전원 없이도 데이터를 지킵니다.
- 레지스터, 캐시, RAM, 저장 장치. 아래로 갈수록 크고 느립니다.
이 과정의 출처 (9)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
- Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
- IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
- IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
- Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
- Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
- Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
- abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
- John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).
확인한 날: 2026-10-17