쓰레드는 프로세스와 마찬가지로 CPU의 작업단위이다. 그러나 쓰레드는 일반 프로세스(중량 프로세스)와 달리 경량 프로세스라 한다. 쓰레드는 자원의 관리보다는 프로그램의 하나의 실행흐름으로서 CPU의 실행되기 위해 스케줄 되어야 하는 개체이다.
일반 process는 프로세스가 더 이상 쪼개지지 못하는, 하나의 쓰레드만 가지고 있는 작업이다. 예를 들면 처음부터 끝까지 앞에 것이 실행 돼야 다음 것이 실행되는 작업의 경우 이렇게 볼 수 있다.
다중 쓰레드의 장점은 하나의 쓰레드가 멈춘 상태여도 다음 쓰레드가 같은 작업을 돌릴 수 있다는 점이다. 같은 작업에 대한 다중 쓰레드의 협동으로 같은 시간 안에 더 많은 일을 할 수 있다. 또한 프로세스는 프로듀서가 막히면 컨슘 하기가 힘들지만 쓰레드는 쉽다는 장점이 있다.
kernel-supported 쓰레드는 커널(운영체제)에서 지원하는 쓰레드, user-level 쓰레드는 라이브러리 호출의 집합을 통해 커널 위에서 지원된다. Hybrid 쓰레드는 두 가지 레벨의 쓰레드를 모두 지원하는 쓰레드다.
유저 레벨 쓰레드는 커널과 관계가 없으며 스케줄링이 공정하지 못하다는 특성을 가지고 있다. 커널 레벨 쓰레드는 반드시 스위칭 해야한다. 따라서 쓰레드 스위칭에서 시간을 더 잡아 먹는다.
user level은 일종의 가상의 쓰레드이고 kernel level은 실제 쓰레드이다. cpu는 커널 레벨의 쓰레드가 보이기 때문에 스케줄링 단위가 쓰레드가 된다. 커널 레벨을 지원하지 않으면 프로세스 단위로 스케줄링 한다.
멀티플 프로세스는 독자적으로 작동하며 스택이 크기 때문에 포인터만 가지고 있다. 각 프로세스별로 메모리 공간이 별도로 있고, 사용자 별로 사용하는 프로세스 목적이 다르므로 서로간의 보완이 필요하다.
멀티플 쓰레드의 경우 다른 쓰레드와 독자적이지 않다. 스택이 작아서 스택 공간을 통째로 가지고 있으며, 모든 쓰레드들이 다 같은 메모리공간을 사용한다. 쓰레드는 각각이 세부 목적을 가지므로 각자 상호 보완해줄 필요가 없다.