프로세스는 실행 중인 프로그램을 말하며, 완벽히 독립적이기 때문에 메모리 영역을 다른 프로세스와 공유하지 않는다. 프로세스는 최소 1개의 쓰레드를 가지고 있다.
쓰레드는 프로세스 내에는 STACK만 따로 할당 받고, 그 이외의 메모리 영역을 공유하기 때문에 다른 쓰레드의 실행결과를 즉시 확인할 수 있다.
쓰레드는 프로세스 내에 존재하며 프로세스가 할당 받은 자원을 이용하여 실행됩니다.
멀티 프로세스는 하나의 프로세스가 죽어도, 다른 프로세스에 영향을 끼치지 않고 계속 실행된다는 장점이 있지만 멀티 스레드 보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.
멀티 스레드는 멀티 프로세스와 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만 하나의 스레드에 문제가 생기면 전체 스레드가 영향을 받으며 동기화 문제도 있다는 단점이 있다.
선점형은 하나의 프로세스가 다른 프로세스대신에 CPU를 차지할 수 있음을 말한다.
비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 말한다.
동기는 순차적, 직렬적으로 테스크를 수행하고,
비동기는 병렬적으로 테스크를 수행한다.
예를 들어, 서버에서 데이터를 가져와서 화면에 표시하는 작업을 수행할 때,
동기는 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후 테스크들은 블로킹(Blocking, 작업 중단)됩니다.
비동기는 서버에 데이터를 요청한 이후 서버로부터 데이터가 응답될 때까지 대기하지 않고(Non-Blocking) 즉시 다음 테스크를 계속해 수행합니다.
바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.
순서에 맞춰 진행되는 장점이 있지만, 여러 가지 요청을 동시에 처리할 수 없다.
위 그림의 (a)처럼 커피 주문을 받고 나올 때까지 기다리는 것이 동기 방식의 예시라고 할 수 있다.
하나의 요청에 따른 응답을 즉시 처리하지 않아도, 그 대기 시간동안 또 다른 요청에 대해 처리 가능한 방식이다.
여러 개의 요청을 동시에 처리할 수 있는 장점이 있지만 동기 방식보다 속도가 떨어질 수도 있다.