프로세스
프로그램을 메모리 상에서 실행중인 작업
- Code: 코드 자체를 구성하는 메모리 영역
- Data: 전역변수, 정젹변수, 배열 등
- Heap: 생성자, 인스턴스와 같은 동적으로 할당시 사용
- Stack: 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
- 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해, 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용하는 차이가 존재
스레드
프로세스 안에서 실행되는 여러 흐름 단위, 프로세스가 할당받은 자원을 이용!
- 스레드는 Stack만 따로 할당받고 나머지 영역은 서로 공유
- Stack을 따로 가짐으로써 스레드는 독립적인 실행 흐름을 가질 수 있다
멀티 프로세스
하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것
장점
- 안정성
- 각 프로세스가 독립적인 메모리 공간을 가지므로, 한 프로세스가 비정상적으로 종료되어도 다른 프로세스에 영향을 주지 않는다
단점
- context switching overhead
- 프로세스의 상태 정보를 저장하고 복원하는 과정인데, 빈번한 context switching 작업으로 오버헤드(어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등)가 발생할 수 있다
- 자원 공유 비효율성
- 독립적인 메모리 공간을 가지므로, 메모리 사용량이 증가하게 된다
멀티 스레드
하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
장점
- 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유 가능
단점
- 안정성
- 하나의 스레드에서 문제가 발생하면 다른 스레드들도 영향을 받아 전체 프로그램이 종료될 수 있다
- 동기화문제
- 공유 자원에 동시 접근이 가능하기 때문에 스레드 간 동기화는 데이터 접근을 제어하기 위해 필수적이다
- 데드락
- 멀티 프로세스와 스레드의 공통된 문제점으로, 특정 자원에 대한 동시 엑세스로 인해 무한정 대기가 발생할 수 있다
크롬 탭은 멀티 프로세스, 스레드?
- 각 탭을 별도의 프로세스로 처리
- 하나의 탭이 다운되거나 문제가 발생해도 다른 탭이 영향을 받지 않는다
[참고자료]
멀티프로세스/스레드란
멀티프로세스/스레드의 장,단점
크롬