더보기

프로세스와 쓰레드의 개념을 알고 차이를 알아보자

 

1. 프로세스

- 메모리에 적재되어 연속적으로 실행중인 프로그램 인스턴스

- 운영체제로부터 시스템 자원을 할당받는 작업의 단위

- 운영체제로부터 CPU time과 코드,데이타,스택,힙으로 이루어져있는 독립된메모리 영역을 할당받는다

 

독립된 메모리 영역

프로세스 메모리 영역

 

2. 스레드

- 한 프로세스내에서 실행되는 독립된 흐름

- 스레드는 프로세스 내에서 각각 스택만 할당받고 나머지 코드,데이터,힙영역은 공유된다

 

 

스레드의 메모리영역

 

3. 멀티프로세스

- 각각의 프로세스는 서로 특정한 상황(자식프로세스와 부모프로세스)가 아니면 서로 영향을 주지 않는다(중요)

- 프로세스는 독립된 메모리 영역을 할당받았기 때문에 서로간 변수를 공유할수없음

- CPU에서 여러 프로세스를 돌아가면서 실행할때 이과정을 Context Switching 이라고한다

 

[ Context Switching ]

프로세스가 다른 프로세스를 대기하면서 자신의 상태를 보관하고

자신의 차례가오면 이전에 보관했다 자신의 상태를 복구하는 작업

 

4. 멀티스레드

- 각각의 스레드는 코드,데이터,힙영역을 공유하므로 변수의 공유가 쉬워서 통신의 부담이 적다

- 하지만 공유하는 영역이 있는만큼 서로가 서로의 영향을 받기쉽다

- 서로 공유하는 영역때문에 충돌가능성이 높다

 

멀티프로세스 VS 멀티스레드

  멀티프로세스 멀티스레드
데이터영역 코드,데이터,스택,힙 을 독립적으로 가짐 스택영역은 독립적으로 갖지만 코드,데이터,힙 영역을 공유함
변수공유 X O
영향 서로 영향없음 서로가 서로의 영향을 받음