수많은 칸 중에서 한 칸을 어떻게 찾을까요?
지난 시간, 기억 칸을 수십억 개 모으면 메모리가 된다고 했죠. 그런데 그 많은 칸 중에서 내가 원하는 딱 한 칸을, 어떻게 단번에 찾아갈까요?
칸이 너무 많으면 못 찾아요
기억 칸이 수십억 개.
엄청난 양이죠.
그런데 여기서 문제가 생겨요.
이렇게 많은 칸 중에서
'아까 저장한 그 값'이
어느 칸에 있는지
어떻게 다시 찾을까요?
이름도 없이 똑같이 생겼는데요.
전부 똑같이 생겼어요. 어떻게 한 칸을 콕 집을까요?
도서관에 책이 수만 권인데
번호도 없이
마구 꽂혀 있다고 생각해보세요.
원하는 책을 찾는 건
거의 불가능하죠.
메모리도 똑같은 문제예요.
해결책이 필요해요.
모든 칸에 번호를 붙여요
해결책은 사물함과 똑같아요.
수영장 사물함을 떠올려 보세요.
똑같이 생긴 사물함마다
번호가 붙어 있죠.
0번, 1번, 2번.
메모리도 그래요.
모든 칸에
순서대로 번호를 붙여둬요.
위는 칸 번호(주소), 아래는 그 칸에 담긴 값.
이 번호를 주소라고 불러요.
집집마다 주소가 있어서
우편물이 정확히 배달되듯,
칸마다 주소가 있으면
원하는 칸을 정확히
찾아갈 수 있어요.
주소를 부르면, 그 칸으로
주소가 있으면
찾는 건 순식간이에요.
'3번 칸 값 가져와'라고 하면,
메모리가 곧장 3번으로 가서
그 안의 값을 꺼내줘요.
수십억 칸이 있어도
번호만 알면
단번에 도착하죠.
주소를 입력해보세요.
주소를 입력하면 그 칸으로.
번호 하나로
원하는 칸에 바로 가는 것.
이게 메모리가 빠른 비결이에요.
처음부터 하나씩 세지 않고,
주소로 곧장 짚으니까요.
원하는 칸에 값을 넣어요
꺼내는 것만 되는 게 아니에요.
'5번 칸에 이 값을 넣어'라고 하면,
그 칸에 값이 저장돼요.
읽기는 주소로 꺼내기,
쓰기는 주소로 넣기.
이 두 가지가
메모리가 하는 일의 전부예요.
직접 넣어보세요.
주소를 정해 값을 넣기.
주소로 읽고, 주소로 쓰고.
단순하죠?
그런데 이 단순한 두 동작이
모든 프로그램의 바탕이에요.
변수도, 사진도, 그 무엇도
결국 이렇게
주소로 드나들어요.
CPU는 주소로 부탁해요
이제 큰 그림이에요.
계산하는 CPU가
값이 필요하면,
메모리한테 주소로 부탁해요.
'3번 값 줘,
이 결과는 7번에 넣어줘.'
CPU와 메모리가
주소를 주고받으며
일을 해나가는 거예요.
주소로 주고받아요.
이걸로 컴퓨터의 몸,
그 기초를 한 바퀴 다 돌았어요.
0과 1에서 시작해,
계산하고, 기억하고,
주소로 찾아가기까지.
다음부터는
이 부품들이 어떻게
진짜 명령을 따르는지 볼 거예요.