소소한 개발이야기

Process vs Thread 차이점 요약

밥도둑계장 2021. 8. 5. 11:42

process


운영체제로 부터 시스템 자원을 할당받아서
메모리에 올라와 실행되고 있는 프로그램의 인스턴스
각프로세스는 Code, Data, Stack, Heap 영역으로 구분되며
독립된 메모리영역을 할당 받으며 , 기본적으로 하나의 메인 쓰레드를 가진다
독립된 메모리 영역을 할당 받기 때문에 다른 프로세스의 변수나 자료구조에 접근 하지 못한다.
다른 프로세스에 접근하기 위해 IPC(inter-process-commnication) 를 사용해야함
* IPC 예시 파이프 , 파일 , 소켓 등을 이용한 통신

thread
프로세스가 할당받은 자원을 이용한 프로세스 내에서 동작되는 실행의 단위
프로세스 내에서 stack 만 할당받으며 Heap 영역은 공유된다.

java thread
자바에는 프로세스가 존재하지 않고, thread 만 존재한다.
JVM에 의해 스케줄되는 실행단위 코드블록 

multi process
장점 - 프로세스 작업중 문제가 발생되더라도 다른 프로세스에 영향을 주지않는다.
단점 - 독립된 메모리 영역을 할당받기 때문에 프로세스 끼리의 데이터 공유에 많은 자원이 소모된다.

multi thread
장점 - thread 간의 자원공유로 통신의 부담이적음
단점 - 동기화 문제를 잘 해결해야한다.
      하나의 thread 에 문제가 발생하면 전체 프로세스가 영향을 받는다.