프로세스 : 실제 메모리에서 실행되고 있는 프로그램
스레드 : 프로세스 안에서 동시에 실행되고 있는 작업들
프로세스는 자신만의 메모리 공간을 가지어 사용될 수 있는 상태 혹은 실행 중인 상태라고 말 할 수 있다. 기본적으로 프로세스는 최소 1개의 스레드를 보유하고 있다.
프로세스 공간
프로세스가 할당 받은 자원을 이용하는 실행의 단위로 프로세스 내의 Heap, Data, Code 영역을 공유하여 사용한다. Stack은 쓰레드 별로 존재
멀티 프로세스는 말 그대로 여러개의 프로세스가 동시에 처리되는 것을 의미한다.
장점으로는 프로세스 별로 메모리 공간을 가지고 있기 때문에 안정성이 있지만 여러가지의 프로세스가 많아지면 많아질 수록 Context Switching으로 인한 성능 저하가 발생 할 수 있다.
멀티 스레드는 하나의 프로세스 안에서 여러개의 스레드가 처리되는 것을 의미한다.
장점으로는 프로세스 내의 메모리를 공유해서 사용하기 때문에 시간과 자원손실이 적고 작업전환도 빠르다.
단점으로는 자원들이 공유되기 때문에 안정성의 문제가 발생할 수 있는데 이때는 Critical Section 기법을 사용해 이를 처리한다.