❗process란?
실행 중인 프로그램을 의미한다. 프로그램이 실행되면 운영체제로부터 독립적인 메모리 공간을 할당 받아서 코드, 데이터, 힙, 스택 등의 영역을 가지고 하나의 작업 단위로 처리된다.
Code 영역 | 프로그램의 실행 코드(명령어)가 저장됨 프로그램의 기계어 명령들이 위치함 read-only이며 실행 중 코드가 변경되지 않도록 보호됨 |
Data 영역 | 초기회된 전역 변수와 정적 변수가 저장되는 영역 프로그램이 실행되는 동안 고정된 메모리를 차지하며 종료될 때까지 유지됨 |
Heap 영역 | 동적으로 할당되는 메모리가 저장되는 곳 malloc이나 new 같은 함수로 요청되는 메모리가 이곳에 할당됨 프로그램 실행 중 메모리 크기를 유동적으로 변경될 수 있음 낮은 주소 -> 높은 주소로 확장 |
Stack 영역 | 함수 호출 시 지역 변수와 매개변수가 저장되는 영역 함수 호출마다 새로운 프레임이 할당되고, 함수가 반환되면 해당 프레임이 해제됨 높은 주소 -> 낮은 주소로 확장 Stack Overflow: 스택 영역이 힙 영역과 충돌할 때 발생 |
✏️스택과 힙의 관계
- 스택과 힙은 서로 반대 방향으로 메모리를 확장
- 둘 사이의 중간 영역은 사용할 수 있는 공간으로 남겨짐
- 메모리를 효율적으로 관리하기 위한 구조
- 스택과 힙이 서로 충돌할 경우 Stack Overflow가 발생할 수 있음
❗thread
프로세스 내에서 병렬적으로 실행되는 작은(하위) 작업을 의미한다. 하나의 프로세스 내에서 여러 스레드를 생성해서 멀티스레딩을 구현할 수 있다.
❗process vs thread
Process | Thread |
|
|
728x90
반응형
'🔻Computer Science > Operating System' 카테고리의 다른 글
[OS] Memory (1) | 2024.10.07 |
---|