[CS]메모리 구조

rara_kim·2022년 6월 29일
0

CS

목록 보기
1/2

메모리 구조

프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(Load)되어야 한다.
또한, 프로그램에서 사용되는 변수들을 저장할 메모리 공간도 필요하다.

따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있는데,
프로그램이 운영체제로(OS)부터 할당받는 대표적인 메모리 공간은 4가지 이다.
1. 코드(Code) 영역
2. 데이터(Data) 영역
3. 스택(Stack) 영역
4. 힙(Heap) 영역

코드(Code) 영역

메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 한다.
CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리한다.


데이터(Data) 영역

메모리의 데이터(Data) 영역은 프로그램의 전역 변수정적(Static)변수가 저장되는 영역이다.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.


스택(Stack) 영역

메모리의 스택(Stack) 영역은 함수의 호출과 관계되는 지역변수매개변수가 저장되는 영역이다.
스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.
이렇게 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(Stack Frame)이라고 한다.

스택 영역은 푸시(push)동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출한다.
스택은 후입선출(LIFO, Last-In First-Out)방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출된다.

스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.

👍장점

  • 매우 빠른 액세스(할당, 해제가 빠름)
  • 변수를 명시적으로 할당하고 해제 할 필요가 없다.

😵단점

  • 메모리의 크기가 제한적이다.

힙(Heap) 영역

메모리의 힙(Heap) 영역은 사용자가 직접 관리할 수 있는, 그리고 관리 해야만 하는 메모리 영역이다.
힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.

힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.

생성된 인스턴스는 동적 메모리(Heap Memory)에 할당되며, 하나의 클래스로부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 된다.

자바에서는 Gabage Collector가 주기적으로 사용하지 않는 메모리를 수거한다.

👍장점

  • 변수는 전역적으로 액세스 할 수 있다.
  • 메모리 크기에 제한이 없다.

😵단점

  • 상대적으로 느린 액세스(할당, 해제가 느림)
  • 메모리를 관리해주어야 한다.(변수의 할당, 해제)
  • 운영체제(OS)마다 메모리 관리가 다르다.

profile
느리더라도 꾸준하게

0개의 댓글