프로세스
- 메모리 상에서 실행 중인 프로그램
- 스레드는 프로세스 안에서 실행되는 여러 흐름 단위, 프로세스마다 최소 1개의 스레드(메인 스레드)를 포함
멀티 프로세스
- 하나의 컴퓨터에 여러 CPU를 사용, 하나 이상의 프로세스들을 동시에 처리 (병렬)
- 장점
- 안전성: 메모리 침범 문제를 OS 차원에서 해결
- 단점
- 각각 독립된 메모리 영역을 갖고 있어 작업량이 많을수록 오버헤드 발생 증가
- Context Switching으로 인한 성능 저하
프로세스 주소 공간
프로그램이 CPU에 의해서 실행될 때 프로세스가 생성되고 메모리에 프로세스 주소 공간이 할당 됨
- 코드 영역 - 프로그램 소스 코드를 저장하는 영역
- 데이터 영역 - 전역 변수 저장 (초기화된 데이터)
- 스택 영역 - 함수, 지역 변수 저장 (임시 메모리 영역)
- 힙 - 동적 할당 시 사용
주소 공간을 나눈 이유 ⇒ 최대한 데이터를 공유해서 메모리 사용량을 줄이기 위해
- 코드는 같은 프로그램 자체에서는 같은 내용이기 대문에 따로 관리하여 공유
- 함수와 지역 변수는 스택 구조의 LIFO 특성을 가진 스택에서 실행
- 공통으로 사용되는 전역변수는 따로 저장