※ 이 글을 작성하기 전에 본인은 이 분야의 전문성을 가진 전문가가 아님을 미리 밝힙니다. ※
#1. 메모리 영역
메모리 영역은 다음과 같다.
위의 그림과 같이 메모리 영역은 크게 4가지 영역으로 나눌 수가 있다.
Code / Data / Heap / Stack 영역으로 나눌 수가 있는데 이 메모리 영역들에 대해서 알아보자.
1. Code 영역
사용자가 작성한 소스코드가 저장되는 영역으로 프로그램이 끝날 때 까지 메모리에 적재되어 진다.
Text 영역이라고도 불리며, 프로그래머가 작성한 소스코드를 실행하게 된다.
2. Data 영역
프로그램의 전역변수 혹은 Static변수가 저장되는 메모리 영역이다.
이 영역 또한 프로그램이 끝날 때 까지 메모리에 적재되어 있는 영역이다.
3. Heap 영역
프로그래머가 동적으로 할당하거나 해제할 수 있는 메모리 공간이다.
즉, 사용자가 직접 관리를 해야 하는 메모리 영역이다.
C언어 같은 경우 malloc() , free()와 같은 연산자들을 통해서 메모리를 할당 및 해제 하게 되고
C++언어 같은 경우 new[] , delete[]와 같은 연산자들을 통해서 메모리를 할당 및 해제 하게 된다.
런타임시 크기가 결정되는 메모리 영역이며 Stack영역과 반대로 메모리에 데이터가 쌓이기 때문에 Stack영역의 크기와
반비례하게 결정되어 지는 영역이다.
굳이 사용하지 않아도 되는 메모리 영역이긴 하지만, 메모리의 효율적인 관리를 위해서는 사용되어질 수 밖에 없는 메모리 영역이다.
4. Stack 영역
프로그램의 지역변수 , 함수의 매개변수 , 함수 호출 시 Return값 등이 저장되는 메모리 영역이다.
함수 호출 시 생성되고 함수 종료 시 시스템에 다시 반환되어지는 메모리 영역이다.
컴파일시 크기가 결정되는 메모리 영역이며 Heap영역과 반대로 메모리에 데이터가 쌓이기 때문에 Heap 영역의 크기와
반비례하게 결정되어 지는 영역이다.
'[ Operating System ] > # OS : 운영체제' 카테고리의 다른 글
#3 - 2) 스케줄링 기법 및 종류와 Aging(에이징) 기법 (0) | 2021.04.26 |
---|---|
#3 - 1) 스케줄링(Scheduling)과 문맥교환(Context-Switching) (0) | 2021.04.26 |
#2 - 3) 멀티 프로세스와 멀티 쓰레드 (0) | 2020.12.10 |
#2 - 1) 프로세스와 쓰레드 (2) | 2020.12.04 |
#1) 운영체제란 ? (0) | 2020.12.03 |