반응형
코드, 데이터, 힙, 스택
프로세스가 생성될 때
커널 영역에 PCB가 생성된다면,
사용자 영역은 코드, 데이터, 힙, 스택 영역으로
나뉘어 프로세스가 생성된다.
코드 영역 (Code segment)
코드 영역은 텍스트 영역이라고도 불리며,
CPU가 실행할 명령어가 담겨 있기 때문에
쓰기 작업이 금지되어 있다.
즉, 읽기 전용 공간이다.
데이터 영역 (Data segment)
데이터 영역은 프로그램이 실행되는 동안
유지할 데이터가 저장되는 공간이다.
전역 변수(Global Variable)와 같이
프로그램이 실행되는 동안 유지되며,
프로그램 전체에서 접근할 수 있는 변수가
저장되는 공간이다.
힙 영역 (Heap segment)
힙 영역은 프로그래머(사용자)가
직접 할당할 수 있는 저장 공간으로
언젠가는 해당 공간을 반환해야 하며,
메모리의 낮은 주소부터 높은 주소로
할당된다는 특징들이 있다.
만약 힙 공간이 반환되지 않고 계속 남는다면
메모리 누수(memory leak)라는
메모리 낭비가 초래된다.
스택 영역 (Stack segment)
스택 영역 또한 데이터를 일시적으로
저장하는 공간으로
데이터 영역과 달리 잠깐 쓸 값들이 저장되며,
메모리의 높은 주소부터 낮은 주소로
할당된다는 특징들이 있다.
매개 변수, 지역 변수가 스택 영역에
저장되는 대표적인 변수이다.
정적 / 동적 할당 영역
코드 영역과 데이터 영역은
크기가 고정된 영역이라는 점에서
정적 할당 영역이라 부르며,
힙 영역과 스택 영역은
프로세스 실행 과정에서 크기가
변할 수 있는 영역이라는 점에서
동적 할당 영역이라고 부른다.
반응형
'개인 학습 > 운영체제' 카테고리의 다른 글
08 - 프로세스 계층 구조 (0) | 2023.02.06 |
---|---|
07 - 프로세스 상태 (2) | 2023.02.06 |
05 - 프로세스 제어 블록(PCB) (0) | 2023.02.06 |
04 - 프로세스의 종류 (0) | 2023.02.06 |
03 - 운영체제의 핵심 서비스 (0) | 2023.02.06 |