Context switching in threads
스레드에서의 컨텍스트 스위칭
스레드에서의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭과 비슷한 개념이지만, 스레드 수준에서 발생하는 작업입니다. 스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 하나의 프로세스에 여러 개의 스레드가 존재할 수 있습니다. 스레드는 같은 프로세스 내에서 공유 메모리 공간을 가지고 있기 때문에 스레드 간의 컨텍스트 스위칭은 비교적 가볍고 빠르게 이루어집니다.
스레드에서의 컨텍스트 스위칭은 주로 다음과 같은 상황에서 발생합니다:
스레드 스케줄링: 운영체제는 여러 스레드 중 어떤 스레드가 CPU를 사용할지 결정하고, 실행 중인 스레드를 일시 중지하고 다른 스레드를 실행해야 할 때 스레드 간의 컨텍스트 스위칭이 발생합니다.
입출력 작업: 스레드가 파일 입출력, 네트워크 통신, 데이터베이스 조회 등의 블로킹 작업을 수행할 때, 스레드는 대기 상태로 들어가고 다른 스레드가 CPU를 사용해야 합니다. 이때도 컨텍스트 스위칭이 필요합니다.
스레드 간 협력: 다른 스레드와 협력하거나 데이터를 공유하는 작업을 수행할 때 스레드 간의 컨텍스트 스위칭이 필요할 수 있습니다.
컨텍스트 스위칭은 CPU 레지스터 상태, 스택 포인터, 프로그램 카운터 등의 스레드 상태 정보를 저장하고 복원하는 작업을 포함하며, 이를 통해 스레드 간의 전환을 가능하게 합니다. 스레드에서의 컨텍스트 스위칭은 프로세스 수준의 컨텍스트 스위칭보다 빠르지만 여전히 오버헤드가 발생하므로, 효율적인 멀티스레딩 애플리케이션을 설계할 때 이를 고려해야 합니다.
Last updated