프로세스와 스레드의 차이
프로그램
- 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태이며,
어떠한 작업을 위해 실행할 수 있는 파일
프로세스
- 프로그램이 메모리에 올라와 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태. 즉, 일을 처리하는 일련의 과정
스레드
- 프로세스 내에서 실행되는 흐름의 단위로, 프로세스 하나에 자원을 공유하면서 일련의 과정을 여러 개 동시에 실행 시 킬 수 있는 것
멀티 프로세스와 멀티 스레드의 차이
멀티 프로세스
- 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것
멀티 스레드
- 하나의 응용 프로그램을 여러 개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 하는 것
멀티 프로세스 대신 멀티 스레드를 사용하는 이유
- 자원을 효율성 증대, 처리 비용 감소, 응답 시간 단축
- 프로세스 생성 시 자원을 할당하는 시스템 콜이 줄어들어 자원 소모가 적고 자원을 효율적으로 관리할 수 있다. 또한 프로세스의 경우 Context Switching 시 CPU 레지스터, RAM과 CPU 사이의 캐시 메모리가 초기화되기 때문에 오버헤드가 큰 반면, 스레드는 Context Switching시 Stack 영역만 처리하면 되므로 스레드 간의 문맥 교환 속도가 빠르다. 그리고 프로세스의 경우 프로세스 간의 통신을 위해서는 IPC를 통해서 통신을 해야 하지만, 스레드의 경우 스레드 간의 자원 공유가 간단하기 때문에 시스템 자원 소모가 작다.
- 그러나 전역 변수를 통해 스레드 간의 자원을 공유하기 때문에 동기화 문제는 잘 해결해야 한다.
참조: [OS] 프로세스(Process)와 스레드(Thread) 차이 (멀티 프로세스, 멀티 스레드)