프로세스의 메모리 구조
프로세스는 메모리에 올라가 실행되고 있는 프로그램을 의미합니다.
여기서 프로세스의 코드들은 코드의 상태와 종류에 따라 프로세스에 각기 다른 메모리 영역에 들어가게 됩니다.
이번 포스팅에서는 이러한 프로세스의 메모리 구조에대해 설명 해보겠습니다.
스택
- 함수가 호출되고 사용되는 지역변수와 매개변수가 저장되는 영역입니다.
- 컴파일 시 크기가 정해집니다.
- 컴파일 시간에 크기가 정해지는 스택 영역 특성상 크기를 늘릴 수 없기 때문에 재귀함수의 경우, 스택 영역을 초과하는 메모리가 필요할 경우 stack overflow가 발생합니다.
힙
- 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역입니다.
- 런타임 시 크기가 정해집니다.
데이터
- 전역변수, 정적변수가 저장되고 프로그램이 종료될 때 까지 사라지지 않는 변수가 들어 있는 영역입니다.
코드
- 프로그램에 내장되어 있는 소스 코드가 들어가는 영역입니다.
- 이 영역은 수정 불가능한 기계어로 저장되어 있으며 정적인 특징을 가집니다.
※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.
'CS > OS' 카테고리의 다른 글
멀티프로세싱, 멀티스레딩 (0) | 2023.03.07 |
---|---|
컨텍스트 스위칭 (0) | 2023.03.03 |
프로세스와 컴파일 과정 (0) | 2023.02.25 |
메모리 할당 (0) | 2023.02.13 |
가상 메모리 - 페이지 교체 알고리즘 (0) | 2023.02.12 |