C / C++
프로세스와 메모리
부레두
2023. 10. 12. 02:00
프로그램
프로그래머가 작성한 소스 파일을 컴파일, 링크를 거쳐 만들어진 실행 파일(.exe)
프로세스
“먼저 운영체제가 실행 명령들을 읽어 메모리에 재구성 한 것”
‘실행중인 프로그램’
세그먼트( 메모리 영역 )
프로세스가 포함하고 있는 여러가지 정보나 입력한 데이터의 메모리 공간
프로세스 메모리 영역
- Code 영역 ( Read-Only )
- 사용자가 작성한 코드가 CU에서 수행할 수 있는 기계어 형태로 변환되어 저장되는 공간
- 컴파일 타임에 결정되고, 코드들이 바뀔 수 없게 Read-Only로 설정
- Data영역에서 정의된 상수 값들이 .rodata영역에 저장
- Data 영역 ( Read-Write )
- 전역 변수 또는 static 변수 등 “프로그램이 사용하는 데이터를 저장하는 공간”
- 전역 변수 중, 초기값 이 없다면 bss영역, 있다면 Data영역에 저장
- bss영역에 있던 변수들은 main()이 실행되기 전에 0으로 초기화 되어 Data 영역에 저장
- Heap 영역
- 프로그래머가 필요할 때마다 사용하는 영역, 동적 할당 변수들이 저장
- 사실상 스택과 같은 영역을 공유
- Stack 영역
- 호출된 함수 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 공간
- 지역, 매개 변수들이 저장
- 할당과 해제가 반복되어 크기가 변동됨
- x86 및 x64 컴퓨터의 경우 기본 스택 크기는 1MB