더보기
프로세스와 쓰레드의 개념을 알고 차이를 알아보자
1. 프로세스
- 메모리에 적재되어 연속적으로 실행중인 프로그램 인스턴스
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- 운영체제로부터 CPU time과 코드,데이타,스택,힙으로 이루어져있는 독립된메모리 영역을 할당받는다
독립된 메모리 영역
2. 스레드
- 한 프로세스내에서 실행되는 독립된 흐름
- 스레드는 프로세스 내에서 각각 스택만 할당받고 나머지 코드,데이터,힙영역은 공유된다
3. 멀티프로세스
- 각각의 프로세스는 서로 특정한 상황(자식프로세스와 부모프로세스)가 아니면 서로 영향을 주지 않는다(중요)
- 프로세스는 독립된 메모리 영역을 할당받았기 때문에 서로간 변수를 공유할수없음
- CPU에서 여러 프로세스를 돌아가면서 실행할때 이과정을 Context Switching 이라고한다
[ Context Switching ]
프로세스가 다른 프로세스를 대기하면서 자신의 상태를 보관하고
자신의 차례가오면 이전에 보관했다 자신의 상태를 복구하는 작업
4. 멀티스레드
- 각각의 스레드는 코드,데이터,힙영역을 공유하므로 변수의 공유가 쉬워서 통신의 부담이 적다
- 하지만 공유하는 영역이 있는만큼 서로가 서로의 영향을 받기쉽다
- 서로 공유하는 영역때문에 충돌가능성이 높다
멀티프로세스 VS 멀티스레드
멀티프로세스 | 멀티스레드 | |
데이터영역 | 코드,데이터,스택,힙 을 독립적으로 가짐 | 스택영역은 독립적으로 갖지만 코드,데이터,힙 영역을 공유함 |
변수공유 | X | O |
영향 | 서로 영향없음 | 서로가 서로의 영향을 받음 |