본문 바로가기

카테고리 없음

프로그램과 메모리 공간

프로그램이 실행되는 과정

1. 사용자가 실행을 요청

2. 운영체제는 프로그램의 정보를 읽어 메모리에 공간 할당

3. CPU는 프로그램의 코드 실행

 

메모리 구조

메모리구조 (출처: http://www.tcpschool.com/c/c_memory_structure)

Text (코드영역)

코드를 실행하기 위한 정보들이 저장되는 영역으로 CPU는 이 영역에 저장된 명령어를 가져다 실행한다

제어문, 함수, 상수 등이 저장됨

 

Data 

코드에서 선언한 전역변수, 정적 변수 등이 저장되는 공간

프로그램의 시작과 함께 할당되며, 프로그램 종료 시 소멸한다

초기화 된 변수 영역, 초기화 되지 않은 변수 영역으로 나뉜다

 

Heap

사용자에 의해 관리되는 동적 할당 영역

클래스 인스턴스, 클로저 같은 참조 타입이 저장된다

Java에서는 gc에 의해 자동으로 해제된다

낮은 주소에서 높은 주소 방향으로 메모리가 할당된다

 

Stack

함수 호출과 관계되는 지역변수, 매개변수 등이 저장되는 공간

함수 호출 시 할당 되며, 함수 호출 완료 시 할당된 변수들을 메모리에서 해제한다

높은 주소에서 낮은 주소 방향으로 메모리가 할당된다

 

Heap 과 Stack 은 같은 공간을 공유하는데 서로의 영역을 침범하게 되면 Overflow가 발생한다

 

 

참고

https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/

 

[컴퓨터 기초] 메모리구조(Memory Structure) - jinShine

프로그램 실행 순서 메모리 영역에 관해 이야기하기 전에 어떤식으로 프러그램이 실행되는지 과정을 살펴 보겠습니다. 프로그램의 정보를 읽어 메모리에 로드되는 과정을 보실 수 있으실텐데,

jinshine.github.io

http://www.tcpschool.com/c/c_memory_structure

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com