---
description: 컨텍스트 스위칭 발생 시기
---

# Timing of context switching

1. **시간 할당 소진**: 운영체제의 스케줄러는 각 프로세스나 스레드에 정해진 시간 할당(타임 슬라이스)을 제공합니다. 프로세스나 스레드가 그 시간을 모두 사용하면 다음 프로세스나 스레드로 스위칭됩니다.
2. **자원 요청**: 프로세스나 스레드가 요청한 자원(예: I/O)이 바로 사용할 수 없을 때 컨텍스트 스위칭이 일어날 수 있습니다.
3. **우선순위**: 더 높은 우선순위를 가진 프로세스나 스레드가 실행을 요청할 경우, 현재 실행 중인 프로세스나 스레드는 중지되고 높은 우선순위의 프로세스나 스레드가 실행됩니다.

💡 **프로세스 상태 변화의 관점**

<figure><img src="https://2804243633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfV6clXG953LqFieNgWUf%2Fuploads%2FaEcmR0GNH4TOqgR3MYLQ%2Fimage.png?alt=media&#x26;token=a58e51cf-18a2-430b-8b08-2dd20b3c3423" alt=""><figcaption></figcaption></figure>

1. **준비(Ready) → 실행(Running)**: 스케줄러에 의해 선택된 프로세스는 CPU를 할당받아 실행 상태로 전환됩니다. 준비 상태에 있던 프로세스가 실행 상태로 바뀌는 순간 컨텍스트 스위칭이 일어납니다.
2. **실행(Running) → 대기(Waiting/Blocked)**: 프로세스가 I/O 요청 또는 다른 이벤트를 기다리게 될 경우, 실행 상태에서 대기 상태로 전환됩니다. 이때도 컨텍스트 스위칭이 발생하며, CPU는 다른 프로세스나 스레드에 할당됩니다.
