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
'C' 카테고리의 다른 글
20201130#(11) 메모리구조 (3) (heap) 동적할당(1) (0) | 2020.11.30 |
---|---|
20201103#(8) 지역변수와 메모리 구조? (0) | 2020.11.03 |
20201101#(7) 메모리구조 (3) (전역변수,static) (0) | 2020.11.01 |
20201031#(6) 메모리구조 (2) (stack) (0) | 2020.10.28 |