프로세스
프로세스(Process)란, 실행 중인 프로그램을 말합니다. 즉, 디스크에 저장된 실행 파일을 메모리에 로드하여 실행시킨 것을 말합니다. 프로세스는 운영체제에서 실행되며, 각각 독립된 메모리 공간, 자원 등을 할당받습니다. 하나의 프로세스는 하나의 독립된 실행 흐름을 갖고 있습니다.
스레드
스레드(Thread)란, 프로세스 안에서 실행되는 여러 개의 흐름을 말합니다. 하나의 프로세스 안에서 독립적으로 실행되는 하나의 흐름을 스레드라고 합니다. 스레드는 하나의 프로세스에 할당된 자원을 공유하기 때문에, 프로세스보다 경량(lightweight)하며, 프로세스 내부에서 동시에 여러 작업을 수행할 수 있습니다.
프로세스와 스레드의 차이점
프로세스는 각각 독립된 메모리 공간, 자원을 할당받고, 스레드는 프로세스가 가지고 있는 메모리 공간, 자원 등을 공유한다는 것입니다.
또한, 프로세스는 다른 프로세스와는 IPC(Inter-Process Communication)을 통해 통신하며, 스레드는 프로세스 내부에서 스레드간의 공유된 메모리를 통해 통신합니다.
간단하게 말하자면, 하나의 프로그램(프로세스)을 여러 개의 작은 실행 단위(스레드)로 분할하여, 여러 작업을 동시에 수행하는 것이 스레드입니다.
프로세스는 하나의 실행 단위를 가지고, 독립적으로 실행되며, 프로세스 간의 통신을 위해서는 별도의 IPC 기술이 필요합니다.
비유적으로 표현하자면..
비유적으로 설명하면, 프로세스는 아파트 라면, 스레드는 아파트 내의 입주민으로 생각할 수 있습니다. 하나의 아파트에 여러 가구가 살고 있는 것처럼, 하나의 프로세스에 여러 개의 스레드가 실행될 수 있습니다.
이때 각각의 가구는 독립적인 생활을 유지하지만, 같은 아파트 내에서 서로 소통할 수 있는 것처럼, 스레드도 프로세스 내에서 메모리를 공유하여 상호작용할 수 있습니다.
'단순용어정리' 카테고리의 다른 글
[단순용어] 스택 오버플로우/정수 오버플로우/버퍼 오버런 (0) | 2023.03.15 |
---|---|
[단순용어] 쿠키와 세션 (0) | 2023.03.11 |
[단순용어] 유니코드 / 아스키코드/2진수/8진수/16진수 (0) | 2023.03.08 |
[단순용어] WebP (0) | 2023.03.06 |
[단순용어] Nest.JS, Next.JS, Nust.JS / 정적 웹 애플리케이션 (0) | 2023.03.05 |