본문 바로가기
C

20201026#(4) 메모리구조 (1)

by zho 2020. 10. 26.

Data science를 배울 때 기본적으로 배워야 한다는 data segment에 대해서 알아보자.

 

프로그램이 실행될때 프로그램은 RAM에 올라간다. 이때 RAM에 올라오는 프로그램의 내용을 나누자면 code segment, data segment, heap, stack으로 나눌 수 있다. 

 

먼저 code segment에는 프로그램의 코드가 저장이 된다. 이때 코드는 컴퓨터가 이해할 수 있는 기게 어로 바뀌어서 저장이 된다. 예를 들자면 c언어에서 hi를 출력하려면 printf("hi"); 이지만 기계어는

0101 0001 0000 0000 0000 0111

0101 0001 0000 0000 0000 1000

0000 0000

0100 1000

0110 1001

로 나타내야한다고 한다. 기술이 발전함으로써 프로그래밍 하기가 정말 편해졌다. 

 

data segment는 이름처럼 data가 저장이 되는데, 모든 데이터가 저장되는 것이 아니라 전역 변수, static변수 그리고 문자열이 저장된다. datasegment는 컴파일(코드 실행 전 번역하는 과정) 할 때 생성된다. 

 

heap은 동적할당영역이다. 프로그램에서 필요한 만큼 할당하고 없앨 수 있는 영역이다.

 

마지막으로 stack은 지역변수,함수 그리고 parameter를 저장하는 공간이다. 이는 runtime(코드 실행) 때 생성된다.  

 

다음 글에서는 stack의 구조에 대해서 알아보자! (LIFO, PUSH, POP은 무엇일까요?)

 

728x90