프로세스와 스레드는 독립적인 실행 순서라는 것은 동일하지만,

프로세스는 서로 다른 메모리 공간에서 실행되는 반면

스레드는 프로세스의 공유 메모리 공간에서 실행된다는 점이 차이가 있다.

프로그램은 특정 작업을 수행하기 위해 작성된 일련의 지침이다. 일반적으로 디스크나 다른 저장 매체에 저장되는 정적 엔터티이고, 이 프로그램이 실행 될때 프로세스가 된다.

프로그램을 실행하면, 운영체제는 해당 프로그램을 디스크에서 시스템 메모리로 로드하고, 실행을 한다. 프로그램의 실행 중인 인스턴스를 프로세스라고 한다.

동일한 프로그램의 여러 인스턴스를 동시에 실행하여 여러 프로세스를 생성할 수 있다. 각 프로세스는 자체 메모리와 리소스를 가지며 독립적이다.

(예를 들어 그림판을 여러 개 띄우면 각각 독립적인 별도의 프로세스가 되어 RAM에 적재된다.)

Untitled

프로세스란 자체 메모리 공간이 있는 독립 엔터티로, 애플리케이션에 대한 격리 및 보안을 제공한다.

즉, 실행 중인 프로그램의 인스턴스이다. 키워드는 격리 (Isolation)

Untitled

스레드란 프로세스 내의 더 가벼운 공유 메모리 단위로 작업의 효율적인 병렬 실행을 가능하게 한다.

프로세스의 하위 집합이며, 경량 프로세스라고도 한다. 프로세스 내부에는 둘 이상의 스레드가 있을 수 있으며, 이러한 스레드는 스케줄러에 의해서 독립적으로 관리된다. 키워드는 동시성(Concurrency)

하나의 프로세스 내의 모든 스레드는 서로 상호 연관되어 있다. 스레드에는 다른 피어 스레드와 공유되는 영역 ( Heap, Static, Code 의 메모리 정보)이 있지만 자체적으로 스택을 가진다.

멀티 스레드와 멀티 프로세스란?