운영체제 | Context Switching

성수당·2025년 9월 5일

운영체제

목록 보기
8/31
post-thumbnail

🥔 Context Switching이란?

Context Switching(문맥 교환) 은 CPU가 한 프로세스(또는 스레드)의 실행 상태를 저장하고, 다른 프로세스(또는 스레드)의 상태를 불러와 실행을 전환하는 작업이다.

운영체제가 멀티태스킹을 구현할 수 있도록 해주는 핵심 메커니즘으로, 동시에 여러 프로세스가 실행되는 것처럼 보이게 만드는 핵심 기술이다.

🥔 Context란?

Context(문맥)는 프로세스나 스레드의 현재 실행 상태를 구성하는 정보의 집합이다. 주요 내용은 다음과 같다:

항목설명
Program Counter (PC)다음에 실행할 명령어의 주소
CPU 레지스터 값들연산 중인 값들이 저장되어 있음
Stack Pointer (SP)함수 호출 스택의 현재 위치
메모리 관리 정보페이지 테이블, 세그먼트 정보 등
파일 디스크립터 정보열린 파일 목록 등

운영체제는 Context를 저장하고 복원함으로써 실행 흐름을 중단하고, 나중에 다시 이어서 실행할 수 있게 만든다.

🥔 Context Switching의 동작 과정

1. 현재 실행 중인 프로세스의 Context 저장
2. 스케줄러가 다음 실행할 프로세스를 선택
3. 선택된 프로세스의 Context를 복원
4. CPU가 새 프로세스를 실행

→ 이 과정을 수 μ초(마이크로초) 단위로 빠르게 반복하며, 사용자는 여러 작업이 동시에 실행되는 듯한 착각을 하게 된다.

🥔 Context Switching의 비용

Context Switching은 유용하지만, 성능 측면에서 비용이 존재한다.

항목설명
오버헤드 발생저장/복원 과정이 CPU 시간을 소모
캐시 무효화CPU 캐시가 다른 프로세스 데이터로 오염될 수 있음
전환 시간레지스터, 스택, 메모리 등의 복원에 따른 시간 지연

스레드 간 전환이 프로세스 간 전환보다 가볍다 (메모리 공간 공유 여부 차이 때문)

🥔 Context Switching이 발생하는 경우

  • 타이머 인터럽트 (Time Slice가 끝남 → 선점형 스케줄링)
  • 입출력 요청 (I/O 대기 상태 진입)
  • 시스템 콜 호출
  • 프로세스 생성/종료
  • 우선순위가 더 높은 프로세스가 도착

🥔 Thread와의 관계

멀티스레딩 환경에서도 Context Switching은 발생한다.

항목프로세스 전환스레드 전환
메모리 공간서로 다름공유
전환 비용높음낮음
캐시 영향상대적으로 작음

즉, 스레드는 메모리를 공유하므로 전환 비용이 줄어든다. 그래서 동시성 처리에서 많이 사용된다.

🥔 Context Switching 줄이는 방법

  • Thread Pool 사용: 매번 스레드를 새로 만들지 않고 재사용
  • Non-blocking I/O, Event Loop: 전통적인 블로킹 방식보다 효율적
  • CPU 바운드와 I/O 바운드 분리: CPU 집중 작업과 I/O 집중 작업을 나누어 처리

🥔 실제 운영체제에서

운영체제스케줄링 방식Context Switching 방식
LinuxPreemptive + Time Slicingtask_struct 저장/복원
WindowsRound Robin + 우선순위 기반Thread Context 구조체 사용
macOSHybrid 방식Mach thread 상태 저장

🥔 정리

  • Context Switching은 멀티태스킹을 가능하게 하는 핵심 기술
  • 전환 비용이 존재하므로 빈번한 전환은 성능 저하를 초래
  • 스레드 전환이 프로세스 전환보다 효율적
  • 성능 최적화를 위해 적절한 스케줄링 알고리즘과 설계가 필요함
profile
말하는 감자🥔

0개의 댓글