프로세스와 스레드
Last updated
Last updated
멀티태스킹은 운영체제 소프트웨어 관점에서 하나의 CPUI가 여러 작업을 동시에 처리하는 것처럼 보이게 하는 기술입니다. CPU 시간을 작은 단위로 분할해서 여러 작업을 번갈아 수행합니다. 반면 멀티프로세싱은 하드웨어 관점에서 여러 CPU를 사용하여 실제로 동시에 여러 작업을 처리하는 기술입니다.
프로세스는 실행 중인 프로그램의 인스턴스로, 독립적인 메모리 공간과 시스템 자원을 가지는 컨테이너 역할을 합니다. 반면 스레드는 프로세스 내에서 실제로 작업을 실행하는 단위로, 같은 프로세스 내의 스레드들은 메모리와 자원을 공유합니다. 프로세스는 서로 독립적이지만, 스레드는 같은 프로세스 내에서 자원을 공유하므로 더 가볍고 생성과 관리가 용이합니다.
CPU 바운드 작업은 복잡한 수학 연산이나 데이터 처리처럼 CPU의 연산 능력을 많이 사용하는 작업을 말합니다. 반면 I/O 바운드 작업은 데이터베이스 쿼리나 파일 읽기/쓰기처럼 입출력 작업이 많은 경우를 말합니다. 이때 스레드는 대부분의 시간을 I/O 작업이 완료되기를 기다리는데 소비하며 CPU는 상대적으로 덜 사용됩니다.
웹 애플리케이션의 특성상 대부분 I/O 바운드 작업이 많기 때문에, CPU 코어 수보다 많은 스레드를 생성하는 것이 일반적입니다. 하나의 요청이 CPU를 1% 정도만 사용한다면, 이론적으로는 100개의 스레드를 만들어 동시에 100명의 사용자 요청을 처리할 수 있습니다. 단, 너무 많은 스레드를 생성하면 컨텍스트 스위칭 비용이 증가하므로, 실제 운영 환경에서는 성능 테스트를 통해 최적의 스레드 개수를 결정해야 합니다.
연관된 문서