4.2데이터 세그먼트
데이터 세그먼트(data segment)는 전역 변수가 저장되는 공간입니다(C 언어의 static 지역 변수도 포함됩니다). 전역 변수는 프로세스가 실행될 때 데이터 세그먼트에 올라가고 프로세스가 종료될 때 소멸합니다. 즉, 프로그램이 실행되는 동안 계속 있으며 프로그래머가 생성 시기나 소멸 시기를 결정할 수 없습니다.
코드 세그먼트와 데이터 세그먼트의 특징은 프로세스가 실행되기 전에 이미 그 크기를 알 수 있다는 것입니다. 함수 인스트럭션이나 전역 변수는 런타임에 사라지지 않고 프로그램을 만들 때 컴파일러에 의해 이미 분석이 끝나기 때문에 어찌 보면 당연한 이야기입니다.
리눅스 운영체제에서는 size 명령어를 이용해 코드 세그먼트와 데이터 세그먼트의 크기를 확인할 수 있습니다. 그림 9-3은 size 명령을 이용해 segment.exe라는 프로그램의 코드 세그먼트와 데이터 세그먼트의 크기를 확인한 결과입니다.
그림 9-3 size 명령으로 코드 세그먼트와 데이터 세그먼트의 크기 확인하기
여기서 text는 코드 세그먼트고 data는 데이터 세그먼트입니다. 옆에 보이는 bss는 이 책에서는 다루지 않지만 데이터 세그먼트에 포함된다는 정도로만 이해하면 됩니다.