프로세스란 실행중인 프로그램이다. 프로그램을 실행하면 OS로부터 실행에 필요한 메모리를 할당받아 프로세스가 된다.
프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리등의 자원 그리고 쓰레드로 구성되어 있다.
모든 프로세서에는 최소한 하나 이상의 쓰레드가 존재한다.
둘 이상의 쓰레드를 가진 프로세스 "multi-threaded process(멀티쓰레드 프로세스)" 라고도 한다.
현재 우리가 사용하고 있는 대부분의 컴퓨터 OS는 Multi-tasking(다중작업)을 지원하기 때문에 여러 프로세스가 동시에 실행될 수 있다.
이와 마찬가지로 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 할 수 있는데 이를 Multi-threading(멀티쓰레딩)이라 한다.
CPU의 코어는 한 번에 단 하나의 작업만 수행할 수 있다 그래서 쓰레드의 개수는 CPI의 코어의 개수와 일치해야하지만, 실제로 처리해야하는 쓰레드의 수는 언제나 코어의 개수보다 많기 때문에 각 코어는 아주 짧은 시간동안 여러 개의 작업을 번갈아 수행함으로써 다중작업을 하고 있는것처럼 보이게 한다.
장점:
CPU의 사용률을 향상시킨다.
자원을 보다 효율적으로 사용할 수 있다.
사용자에 대한 응답성이 향상된다
작업이 분리되어 코드가 간결해진다.
단점:
여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 synchronization(동기화), deadlock(교착상태)에 빠질 수 있다.