프로세스와 스레드?
프로세스, process
프로세스란 단순히 실행 중인 프로그램이라고 할 수 있다.
즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다.
데이터와 메모리 등의 자원 그리고 스레드로 구성된다.
스레드, thread
스레드란 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.
모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다.
또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다.
Single & Multi
싱글 스레드, single thread
- 하나의 프로세스에서 하나의 스레드 실행
- 하나의 레지스터와 스택으로 표현
장점
- 자원 접근에 대한 동기화를 신경쓰지 않아도 된다.
- 문맥 교환(context switch) 작업을 요구하지 않는다.
단점
- 여러 개의 CPU를 활용하지 못한다.
멀티 스레드, multi thread
- 프로그램을 다수의 실행 단위로 나누어 실행
- 프로세스 내에서 자원을 공유하여 자원생성과 관리의 중복을 최소화
- 서버가 많은 요청을 효율적으로 수행할 수 있는 환경을 제공
- 각각의 스레드가 고유의 레지스터와 스택으로 표현됨
장점
- 새로운 프로세스를 생성하는 것보다 기존 프로세스에서 스레드를 생성하는 것이 빠르다.
- 프로세스의 자원과 상태를 공유하여 효율적으로 운영이 가능하다.
- 프로세스의 문맥교환보다 스레드의 문맥교환이 더 빠르다.
단점
- 하나의 스레드만 실행중일 때에는 실행시간이 되려 지연될 수 있다.
- 멀티 스레딩을 위해 운영체제의 지원이 필요하다.
- 스레드 스케쥴링을 신경써야 한다.
Reference
http://www.tcpschool.com/java/java_thread_concept
https://beenlife.tistory.com/114