카테고리 없음

(OS) 컨텍스트 스위칭

그린티_ 2025. 5. 1. 23:40
반응형

📌 컨텍스트 스위칭

개념

  • CPU가 현재 실행 중인 작업(프로세스 또는 스레드)의 상태를 저장하고, 다른 작업으로 전환할 때 상태를 복원하는 과정

컨텍스트 스위칭의 흐름

  1. 프로세스 A 실행 중 B는 실행을 기다리고 있는 상태
  2. 운영체제가 프로세스 B를 실행하겠다고 함
  3. 그러면 현재의 A의 상태를 저장
  4. B의 상태를 복원하여 실행
  • 예시→ CPU가 그러면 잠깐 알림창 쪽으로 전환
  • → 작업 상태 저장/불러오기를 하면서 컨텍스트 스위칭 발생
  • → vscode로 코딩 중인데 알림창(크롬 알림)이 뜸

언제 발생하는가?

  • 주어진 Time Slice를 다 사용했을 때
    • 무슨 얘기냐면 CPU는 각 프로세스에 일정 시간만 할당함
    • 이 시간이 끝나면 다음 프로세스에게 CPU를 넘겨줘야 하므로 발생
  • I/O 작업을 해야할 때
    • 파일 읽기, 프린트 출력 등을 요청할 때
    • CPU는 대기할 필요 없이 다른 작업에게 넘겨주기 때문에 발생
  • 다른 리소스를 기다려야 할 때
    • CPU 외에 잠깐 접근할 수 없는 리소스(메모리, 락, DB 등)를 기다려야 한다면?
    • CPU가 현재 프로세스를 멈추고 다른 프로세스 할당해서 발생!
  • 인터럽트 (간단 설명 : 일하던 중 끼어들기!)
    • 외부 장치나 시스템 이벤트(키보드 입력, 타이머 알람)가 발생하면
    • 현재 실행 중인 작업을 멈추고 처리할 작업으로 전환할 때 발생
  • 공통점
    • CPU를 더 이상 쓸 수 없거나 운영체제가 다른 작업 먼저 처리하겠다고 판단할 때 발생!!!

사용 이유

  • 여러 프로세스와 스레드들을 동시에 실행시키기 위해(그렇게 보이기 위해)
  • 여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 갖기 위해
  • 높은 우선순위의 작업이 빠르게 처리될 수 있게

주의할 점 (오버헤드)

  • 컨텍스트 스위칭은 상태 저장/복원 때문에 시간이 소모됨
  • 너무 자주 발생하면 오히려 성능 저하가 생김 → 오버헤드 발생

캐시 오염 (Cache Pollution)

  • 컨텍스트 스위칭이 일어나면 CPU 캐시에 저장된 데이터도 바뀌게 됨
  • 자주 바뀌면 자주 쓰던 데이터가 밀려나서 캐시 성능이 떨어짐
  • → 이게 바로 ‘캐시오염’ 인거임!
  • 결국 스위칭이 너무 잦으면 캐시 적중률이 낮아지고 전체 시스템 성능이 하락할 수 있음
반응형