Precess
- 실행되고 있는 일의 단위를 뜻하며 프로그램 또는 명령어를 통해 생성
- 각 Process마다 자원, 메모리주소 등을 독립적으로 할당
- 다른 Process와 값을 공유하기 위해서는 소켓통신 등의 통신기법일 필요
- Process가 많은 경우 context switching 과정에서 시스템에 부담을 줄 수 있음
1) context switching: CPU가 실행되는 프로세스를 변경하는 작업
<그림1. 프로세스 메모리의 구조>
stack 또는 heap이 각자 영역을 침범하면 overflow 발생.
접근할 수 없는 메모리에 접근하면 문제 발생.
- Thread
- Process의 단점을 보완한 경량화 Process로 Process 생성 시 Main Thread 기본 생성
- stack만 독립적이고 Text, Data, Heap은 공유하여 Thread 간 데이터 공유가 쉬움
- Process가 없는 상태에서 Thread 생성 불가
- context switching 시 stack만 처리하므로 빠르고 부하가 적음
- 메모리 공유로 인한 문제가 발생할 수 있어 개발자들은 Thread safe하게 작업해야 함
1) 처리 시간 차에 따른 문제, 디버깅이 어려운 문제 등
2) ex: NSMutableArray보다 NSArray가 Thread safe함 - Heap VS Stack
- Stack은 메모리를 순서대로 지정하여 접근이 빠름(차곡차곡 쌓임)
- Heap은 아무 메모리나 할당(동적으로 여기저기)
- struct는 stack, class는 heap구조라서 속도 차이가 있음.
- autoreleasePool도 stack구조를 사용.
'프로그래밍 > 그외' 카테고리의 다른 글
모바일 앱 통계/관리 : Google Analytics (1) | 2017.08.16 |
---|---|
Big-O 표기법(annotation) (0) | 2017.04.10 |