다음을 통해 공유


스레드 및 태스크 아키텍처

스레드는 응용 프로그램 논리를 여러 동시 실행 경로로 분리할 수 있게 하는 운영 체제 기능입니다. 이 기능은 여러 태스크를 동시에 수행할 수 있는 복잡한 응용 프로그램에 유용합니다.

운영 체제는 응용 프로그램 인스턴스를 실행할 때 인스턴스를 관리하는 프로세스라는 단위를 만듭니다. 프로세스에는 실행 스레드가 하나씩 있습니다. 실행 스레드는 응용 프로그램 코드가 수행하는 일련의 프로그래밍 명령입니다. 예를 들어 차례로 수행되는 단일 명령 집합을 포함하는 단순한 응용 프로그램에는 응용 프로그램에 하나의 실행 경로 또는 스레드만 있습니다. 좀 더 복잡한 응용 프로그램은 차례로 진행되지 않고 동시에 수행될 수 있는 여러 태스크를 포함할 수 있습니다. 이 경우 응용 프로그램은 각 태스크에 대해 별도의 프로세스를 시작해야 합니다. 그러나 프로세스를 시작하는 데는 많은 리소스가 필요합니다. 따라서 응용 프로그램은 프로세스를 시작하는 대신 별도의 스레드를 시작할 수 있습니다. 이렇게 하면 리소스 사용량이 상대적으로 줄어듭니다. 또한 각 스레드는 프로세스와 관련된 다른 스레드와 독립적으로 실행되도록 예약할 수 있습니다.

스레드는 복잡한 응용 프로그램이 단일 CPU가 있는 컴퓨터에서도 CPU를 더 효율적으로 사용할 수 있게 합니다. 하나의 CPU가 있으면 한 번에 한 스레드만 실행할 수 있습니다. 한 스레드가 디스크 읽기 또는 쓰기와 같이 CPU를 사용하지 않는 장기 실행 작업을 실행하는 경우 첫 번째 작업이 완료될 때까지 다른 스레드를 실행할 수 있습니다. 다른 스레드가 작업이 끝날 때까지 기다리는 동안 스레드를 실행할 수 있으면 응용 프로그램이 CPU의 사용을 최대화할 수 있습니다. 이와 같은 이점은 특히 데이터베이스 서버와 같은 여러 사용자가 사용하는 디스크 입출력 집중형 응용 프로그램에서 잘 나타납니다. 여러 마이크로프로세서 또는 CPU가 있는 컴퓨터는 CPU당 하나의 스레드를 실행할 수 있으므로 동시에 여러 스레드를 실행할 수 있습니다. 예를 들어 CPU가 8개 있는 컴퓨터에서는 동시에 8개의 스레드를 실행할 수 있습니다.

섹션 내용