Thread와 Process의 차이점
Thread와 Process의 차이
모두 프로그램의 실행과 관련된 단어로
Thread는 어떠한 프로그램 내, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.
Process는 컴퓨터에서 연속적으로 실행되고 있는 프로그램을 의미한다.
이 둘의 차이로는 Process는 실행의 단위, Thread는 Process 내에서 실행되는 흐름의 단위로 볼 수 있다.
Process는 독립적으로 실행되지만 Thread는 Process 내의 Thread 끼리는 Heap, Data 등을 공유한다.
멀티 프로세스와 멀티 스레드의 차이
멀티 프로세싱은 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다. 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽고 다른 영향이 확산되지 않으나, Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생한다.
* Context Switching이란, CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정으로, 동작 중인 프로세스가 대기하며 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 프로세스가 동작하며 이전 프로세스의 상태를 복구하는 작업이다.
멀티 스레드는 하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다. 웹 서버가 대표적인 멀티 스레드 응용 프로그램이다. 시스템 자원 소모가 감소하여 자원의 효율성이 증대하며 처리 비용이 감소하고 프로그램 응답 시간을 단축시킬 수 있으나, 설계와 디버깅이 까다롭다. 단일 프로세스 시스템은 효과를 볼 수 없으며 다른 프로세스에서 스레드를 제어할 수 없고, 동기화 문제, 멀티 프로세스와 달리 하나에 문제가 발생하면 전체가 영향을 받는다.
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4
https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html