![[컴퓨터 구조 ②] 실행과 저장의 구조](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255B%25EC%25BB%25B4%25ED%2593%25A8%25ED%2584%25B0%2520%25EA%25B5%25AC%25EC%25A1%25B0%2520%25E2%2591%25A1%255D%2520%25EC%258B%25A4%25ED%2596%2589%25EA%25B3%25BC%2520%25EC%25A0%2580%25EC%259E%25A5%25EC%259D%2598%2520%25EA%25B5%25AC%25EC%25A1%25B0%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3DRN%2520%25EC%2582%25BD%25EC%25A7%2588%2520%25EC%259D%25BC%25EC%25A7%2580&w=2048&q=75)
4. 데이터 메모리
데이터 메모리는 프로그램이 실행 중일 때 숫자, 문자, 배열, 객체 등의 데이터 값들을 저장하는 공간.
📌 구조와 예시
RAM(주기억장치):
데이터를 임시로 저장하고, 전원이 꺼지면 사라짐.
예: 게임에서 캐릭터의 체력, 위치 값 등이 이곳에 저장됨.
주소 기반 접근:
데이터는 모두 특정 "주소"에 저장됨. 예:
0x0000AB10
위치에50
이라는 값 저장.
변수 저장 예시:
int a = 5; int b = a + 2;
a
의 값5
는 메모리의 한 주소에 저장되고,b
는a
의 값을 읽어서 연산 후 또 다른 주소에 저장됨.
🧠 기억해야 할 것
CPU는 직접 데이터 메모리에 접근 못함 → 레지스터에 불러와서 연산 후 다시 저장
스택(Stack): 함수 호출 시 생기는 지역 변수 저장
힙(Heap): 동적 할당된 메모리 공간 (예:
malloc()
)
5. 기계어와 프로그램
컴퓨터는 오직 기계어, 즉 0과 1로 구성된 명령어만 이해할 수 있다.
📌 명령어 형태
예:
10110000 01100001
앞의 8비트는 명령 종류 (예: 데이터를 레지스터로 이동)
뒤의 8비트는 실제 값이나 주소
💡 예시로 보는 실행 흐름
int x = 10;
x = x + 5;
이 코드는 아래처럼 동작함:
기계어로 변환 (컴파일됨)
x
에 10 저장 →MOV R1, 10
x + 5
계산 →ADD R1, 5
결과 다시
x
위치에 저장 →MOV [주소], R1
🧠 기억할 것
기계어 → CPU 직접 실행
어셈블리어는 사람이 읽기 편한 기계어 형태 (예:
MOV AX, 5
)컴파일러가 고급 언어를 기계어로 번역함
6. 프로그램 메모리
프로그램 메모리는 실행되는 기계어 코드가 저장된 공간
📌 어떻게 사용될까?
프로그램 실행 시, 컴파일된 결과가 RAM의 특정 구역(예:
0x400000
)에 로드됨.CPU는
Program Counter
를 통해 한 줄씩 명령어를 읽음.
💡 예시
int main() {
printf("Hello");
}
→ 컴파일 후:
printf
관련 코드가 메모리 특정 위치에 저장됨CPU는 해당 주소로 이동해 실행
🧠 중요 포인트
이 공간은 보통 읽기 전용
악성코드 방지를 위해 데이터 공간과 분리해 보호함
7. 프로그램 메모리와 데이터 메모리
💡 시나리오: 영상 파일을 플레이할 때
바탕화면의 movie.mp4
파일을 더블클릭해서 영상을 재생한다고 가정해볼때
컴퓨터 메모리(RAM)에는 다음과 같은 일이 벌어진다
🔹 1단계: 영상 플레이어 프로그램이 실행됨
예:
VLC Media Player
실행이 프로그램의 기계어 코드(명령어들)가 운영체제에 의해 RAM의 프로그램 메모리 영역에 로드됨
이 메모리는 실행할 코드만 저장하는 공간으로, 예:
파일 열기
화면 렌더링
오디오 디코딩
재생 버튼 처리 등
→ 이 부분이 프로그램 메모리 (명령어 메모리)임
🔸 2단계: 영상 데이터(.mp4)가 메모리에 로드됨
영상 파일의 실제 내용(화면, 소리, 자막 등)은 별도로 RAM의 데이터 메모리에 로드됨
이는 CPU가 계산하거나 연산하는 데이터이고, 계속 변하거나 처리됨
예: 동영상 프레임 → 디코딩 → 화면 출력
오디오 신호 → 디코딩 → 스피커 출력
→ 이 부분이 데이터 메모리
🧠 정리: 두 메모리의 실전 역할
구분 | 역할 | 예시 (영상 재생 시) |
---|---|---|
프로그램 메모리 | 명령어 저장 | VLC 프로그램 코드: 화면 그리기, 버튼 클릭 처리 등 |
데이터 메모리 | 연산 데이터 저장 | 영상 파일 내용, 버퍼링된 프레임, 디코딩 중간 결과 등 |