운영체제로부터 시스템 자원을 할당 받는 자원의 단위
시스템 자원의 예
- CPU 시간
- 파일
- 입출력 장치
- 주소 공간
- 독립된 메모리 영역
프로세스가 OS로부터 할당받는 대표적 메모리 공간 4가지
- 데이터 영역
- global 변수와 static 변수, 배열, 구조체, 문자열 상수가 저장되는 영역
- 프로그램 시작과 함께 할당- stack 영역
- 함수의 호출과 함께 할당된다.
- 컴파일 타임에 크기가 결정된다.
- 임시 메모리
- 함수의 호출과 관계되는 local 변수나 parameter가 저장되는 영역
- Last in First Out
- 데이터 access가 빠른편이다.- heap 영역
- 런타임 시에 크기가 결정됨
- 사용자가 직접 관리할 수 있고, 관리해야 하는 영역
- 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨.
- First-in-First-OUt
- 장점
1. 메모리 크기에 제한이 없음
- 단점
1. 데이터 엑세스가 상대적으로 느린 편
2. 메모리를 관리해야 함
3. 힙 경합으로 인한 속도 저하 발생
python 에서는?
- 파이썬에서의 heap 사용
- 파이썬은 동적 할당의 기능이 없습니다.
- 사용자가 직접 메모리 할당 범위를 조정하지 않습니다.
- Python Memory Manager은 자동으로 메모리를 관리해주는 언어이기 때문입니다.
- Heap 영역의 메모리 할당 범위와 내부 버퍼를 조정해줍니다.
- 링크텍스트
- 출처: 위 링크텍스트
부모 자식 프로세스
- 부모가 자식 프로세스를 생성하면, 두 프로세스가 가능한 실행 방식
- 병행되어 같이 실행
- 자식 프로세스들이 전부 종료될 때까지 대기(wait)
- 주소 공간 가능한 방식 2가지
- 완전히 같은 복사본 (fork)
- 다른 새 프로그램이 탑재 (exec)