프로세스 vs 프로그램
프로세스(process)는 컴퓨터에서 실행 중인 하나의 프로그램을 의미합니다.
프로그램(program)은 특정 작업을 수행하기 위한 명령어의 집합입니다.
메모리 구조
OS는 프로그램을 실행하면서 디스크에 저장된 데이터를 메모리로 로드합니다. (메모리에 로드된 프로그램을 프로세스라고 합니다.) 프로세스는 OS로부터 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받으며 다른 프로세스의 메모리 영역에는 접근할 수 없습니다.
프로세스의 메모리 영역 구조를 간단히 표현하면 다음과 같습니다.
참고로, Text(코드) 영역이 가장 낮은 주소 값을 가지며, Stack(스택) 영역이 가장 높은 주소 값을 가지고 있습니다.
Code 영역 (Text)
- 실행할 코드가 기계어로 컴파일되어 저장되어 있는 영역으로 텍스트 영역이라고도 합니다.
Data 영역 (Data)
- 전역 변수, 정적 변수 등이 저장되는 영역입니다.
- 데이터 영역은 세부적으로 BSS(Block Stated Symbol) 영역과 데이터 영역으로 다시 나눌 수 있습니다.
- BSS : 초기화하지 않은 변수
- 데이터 : 초기화된 변수
Heap 영역 (Heap)
- 사용자에 의해 동적 메모리 할당이 일어나는 영역입니다.
- c언어에서는 malloc(), c++에서는 new()로 할당되는 영역입니다.
- 낮은 주소 값에서 높은 주소 값으로 메모리가 할당되며 영역 크기는 런타임 때 결정됩니다.
Stack 영역 (Stack)
- 지역 변수, 함수의 매개변수, 반환되는 주소 값 등이 저장되는 영역입니다.
- 높은 주소 값에서 낮은 주소 값으로 메모리가 할당되며, 영역 크기는 컴파일 때 결정됩니다.
여기서 스택 영역과 힙 영역은 동적으로 메모리 할당이 가능해 두 영역 사이의 빈 메모리 공간이 존재합니다.
스택 영역은 LIFO방식으로 높은 주소 값에서 낮은 주소 값 순서로 사용하며, 힙 영역은 FIFO방식으로 낮은 주소 값에서 높은 주소 값 순서로 사용합니다.
위와 같이 메모리 영역을 공유하기에 스택 영역과 힙 영역이 서로의 영역을 침범하는 문제가 생길 수 있습니다.
스택 영역이 힙 영역을 침범하는 경우를 스택 오버플로우(Stack Overflow)라고 하며, 힙 영역이 스택 영역을 침범하는 경우를 힙 오버플로우(Heap Overflow)라고 합니다.
해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
이수진, ⌜기술면접대비 CS전공 핵심요약집⌟, (주)도서출판 길벗
'CS지식 > 운영체제' 카테고리의 다른 글
교착 상태(Deadlock)와 스레드 안전(Thread Safe) (0) | 2025.02.03 |
---|---|
프로세스 동기화 (0) | 2025.02.01 |
동시성과 병렬성, 멀티 프로세스와 멀티 스레드 (0) | 2025.01.31 |
PCB(Process Control Block), 프로세스의 생성, 프로세스 상태도 (0) | 2025.01.30 |
운영체제, 커널, 시스템 콜 (0) | 2024.11.05 |