🧠 메모리 공간 핵심 정리: 컴퓨터의 '기억 장소'
메모리는 컴퓨터가 데이터를 저장하고 처리하는 데 사용하는 가장 중요한 '기억 장소'입니다.
1. 🗺️ 메모리의 기본 구조 및 주소 체계
메모리는 데이터를 보관하는 저장 공간이며, 효율적인 관리를 위해 다음과 같은 구조를 가집니다.
- 주소가 있는 저장 공간입니다: 메모리는 수많은 작은 칸으로 나뉘어 있으며, 이 칸들에는 우편번호와 같은 고유한 주소가 부여됩니다.
- 주소의 최소 단위는 1 Byte입니다. 하나의 메모리 주소는 기본적으로 1 Byte의 데이터를 저장합니다.
- 주소는 16진수로 표현됩니다: 메모리 주소는 가독성을 높이기 위해 보통 (, 등)로 나타냅니다.
- 운영체제에 따라 주소 개수가 결정됩니다.
- 32비트 () 운영체제는 $2^{32}$개의 주소까지 접근 가능하여, 최대 약 4GB의 메모리를 관리할 수 있습니다.
- 64비트 () 운영체제는 $2^{64}$개의 주소를 다룰 수 있어 훨씬 광범위한 메모리 공간을 활용합니다.
- 메모리 할당은 주소값 부여입니다: 프로그램에서 변수를 선언할 때, 해당 변수가 사용할 메모리 공간에 주소값을 지정하는 과정을 메모리 할당이라고 합니다.
| 자료형 (예시) | 크기 | 메모리 차지 방식 |
| (정수) | 4 Byte (32비트) | 4개의 연속된 메모리 주소를 사용합니다. |
| (실수) | 8 Byte (64비트) | 8개의 연속된 메모리 주소를 사용합니다. |
2. 🏠 메모리의 주요 3가지 영역 (Stack, Heap, OS)
메모리 공간은 데이터의 수명과 사용 목적에 따라 세 가지 구역으로 분리되어 관리됩니다.
1) 스택 (Stack) 영역
- 특징: 데이터 접근 속도가 매우 빠르고, 데이터가 쌓였다가 사라지는(LIFO: 후입선출) 구조입니다.
- 할당 시점: 프로그램 컴파일 시점에 이미 크기와 주소값이 결정됩니다.
- 저장 대상: 함수 내에서 사용되는 지역 변수 (예: ), 함수 호출 시의 정보 등이 여기에 저장됩니다. ($\text{int value}$는 스택 공간에 주소값이 이미 결정됩니다.)
2) 힙 (Heap) 영역
- 특징: 프로그램 실행 중(런타임)에 크기가 자유롭게 변하는 동적 메모리 영역입니다. 메모리 관리가 필요합니다.
- 할당 시점: 프로그램 실행 중(런타임)에 요청에 따라 메모리가 할당됩니다.
- 저장 대상: 자바 등의 객체 지향 언어에서 생성하는 객체나 배열의 실제 데이터가 이곳에 저장됩니다.
| 영역 | 성격 | 할당 시기 |
| 스택 | 정적이고 빠름 | 컴파일 시에 결정됩니다. |
| 힙 | 크기가 유동적인 동적 영역 | 런타임 시에 결정됩니다. |
3) OS 영역 (커널)
- 특징: 운영체제의 핵심 기능인 커널이 상주하며 사용하는 공간입니다.
- 보호: 시스템의 안정성을 위해 일반 프로그램의 접근으로부터 철저히 보호됩니다.
3. 📝 자바에서의 메모리 예시
자바(Java) 언어 환경을 예시로 들면, 변수와 객체가 메모리에 다음과 같이 저장됩니다.
- 기본형 변수: int numberPuppy = 7;과 같은 기본형 변수는 스택 영역의 주소 0x000D에 저장됩니다.
- 배열 및 객체: int[] scores와 같은 배열이나 객체는 힙 영역 0x10000에 실제 값이 저장되며, 이 힙의 주소를 가리키는 참조 변수만 스택 ()에 저장됩니다.
'기초 CS > 네트워크' 카테고리의 다른 글
| 네트워크 토폴로지의 종류 (0) | 2025.04.03 |
|---|---|
| 웹브라우저에 www.google.com을 입력했을 때 일어나는 일 (0) | 2025.04.03 |
| 서버와 클라이언트 (0) | 2025.04.03 |
| TCP/IP 5계층, OSI 7계층 (0) | 2025.04.03 |
| 컴퓨터 역사 (0) | 2025.04.03 |