1.1 작업을 동시에 실행하는 일에 대한 간략한 역사

프로세스

운영체제는 프로세스마다 메모리, 파일 핸들, 보안 권한 등의 자원을 할당하고, 프로세스끼리는 소켓, 시그널, 공유 메모리, 세마포어, 파일 등 다양한 통신 수단이 제공된다.

스레드

자원 활용, 공정성, 편의성 등 프로세스 개념을 만들어내게 된 것과 같은 동기를 갖고 스레드가 고안됐다. 스레드는 메모리 (힙 메모리), 파일 핸들과 같이 프로세스에 할당된 자원을 공유한다.

스레드를 가벼운 프로세스라고 부르기도하며, 현대 운영체제의 대부분은 프로세스가 아니라 스레드를 기본 단위로 CPU 자원의 스케줄을 정한다.

1.2 스레드의 이점

프로세서 스케줄링의 기본 단위는 스레드이기 때문에 스레드 하나로 동작하는 프로그램은 한 번에 최대 하나의 프로세서만 사용한다.

1.2.2 단순한 모델링

종류별 작업마다 또는 시뮬레이션 작업의 각 요소마다 스레드를 하나씩 할당하면 순차적인 작업처럼 처리할 수 있고, 스케줄링, 교차 실행되는 작업, 비동기 I/O, 자원 대기 등 세부적인 부분과 상위의 비즈니스 로직을 분리할 수 있다.