728x90
프로세스의 주소 공간
- 프로그램이 CPU에 의해 실행이 되면 프로세스가 생성이 되고 프로세스 주소 공간이 할당 된다.
- 프로세스 주소 공간에는 코드, 데이터, 스택으로 이루어져 있다
- 코드 segment : 프로그램 소스 코드를 저장한다. (읽기만 가능)
- 데이터 segment : 전역 변수를 저장한다. (읽고 쓰기가 가능하다)
- 스택 segment : 함수, 지역 변수가 저장되어 있다. (읽고 쓰기가 가능하다)
코드 segment :
- 코드 영역은 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등 함수에 대한 기계어 코드가 여기에 저장된다.
- 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없어 Read-Only
Data segment:
- 초기값이 있는 전역변수 , 배열, 정적 변수가 저장이 된다. 즉 프로그램이 구동이 되는 동안 항상 접근 가능한 변수가 저장이 되는 영역이다.
- 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.
Stack segment:
- 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다.
- Stack과 데이터를 나눈 이유는, 스택 구조의 특성과 전역 변수의 활용성을 위한 것!
프로그램의 함수와 지역 변수는, LIFO(가장 나중에 들어간게 먼저 나옴)특성을 가진 스택에서 실행된다. 따라서 이 함수들 안에서 공통으로 사용하는 '전역 함수'는 따로 지정해주면 메모리를 아낄 수 있다