둠치킨
코딩하는 둠치킨
둠치킨

블로그 메뉴

  • 홈
  • 분류 전체보기 (201)
    • BOJ (159)
      • 스택 (14)
      • 큐 (5)
      • 덱 (4)
      • 그래프 (30)
      • 배열 (8)
      • 재귀 (12)
      • 브루트 포스 (2)
      • 그리디 알고리즘 (7)
      • 다이내믹 프로그래밍 (6)
      • 백트래킹 (24)
      • 기하학 (4)
      • 트리 (4)
      • 구현 (14)
      • 수학 (3)
      • 맵 (1)
      • 다익스트라 (2)
    • 자료구조 (14)
      • 스택 (3)
      • 큐 (5)
      • 덱 (2)
      • 그래프 (1)
      • 트리 (1)
      • 힙 (1)
      • 정렬 (1)
    • C++ (6)
      • 모두의코드 (2)
      • Effective C++ (3)
      • C++ STL (1)
    • 컴파일러 (1)
    • OS (17)
    • 컴퓨터 구조 (2)
    • Unreal Engine 5 (2)

공지사항

전체 방문자
오늘
어제

인기 글

최근 글

태그

  • BFS
  • boj
  • Bruteforce
  • C
  • C++
  • C++ STL
  • Cache Memory
  • deadlock
  • DFS
  • Effective C++
  • java
  • Mutex
  • next_permutation
  • os
  • Process
  • rotate
  • semaphore
  • spin lock
  • STL
  • Thread
hELLO · Designed By 정상우.
둠치킨

코딩하는 둠치킨

OS

컨텍스트 스위칭(Context Switching)이란?

2025. 6. 25. 18:27

컨텍스트 스위칭(Context Switching)이란?

컨텍스트 스위칭은 하나의 CPU 코어가 여러 작업을 동시에 수행하는 것처럼 보이게 만들어주는 핵심 개념입니다. 운영체제는 실제로 여러 프로세스 또는 스레드를 아주 빠르게 전환해가며 실행시켜 사용자에게 동시에 여러 작업이 이루어지는 것 같은 환상을 제공합니다.


왜 필요한가?

  • 멀티태스킹 환경에서 CPU 자원을 효율적으로 공유하기 위해
  • I/O 요청 등으로 대기 중인 프로세스를 쉬게 하고, 다른 프로세스를 먼저 실행시키기 위해
  • 하나의 CPU가 여러 프로세스/스레드를 번갈아 처리하려면 현재 실행 상태를 기억하고 복원해야 하기 때문

컨텍스트(Context)란?

CPU가 특정 작업을 수행할 때 내부적으로 사용하는 정보입니다.
주요 구성 요소는 다음과 같습니다:

  • 레지스터 상태
  • 프로그램 카운터 (PC)
  • 스택 포인터 (SP)
  • 페이지 테이블, 메모리 맵핑 정보 등

컨텍스트 스위칭 절차

  1. 현재 실행 중인 프로세스(또는 스레드)의 상태를 **PCB(Process Control Block)**에 저장
  2. 다음 실행할 작업의 PCB에서 상태 정보를 복원
  3. CPU는 해당 작업을 이어서 계속 수행

이 과정을 통해 운영체제는 마치 각각의 작업이 연속적으로 실행되고 있는 것처럼 처리합니다.


언제 발생하는가?

  • 프로세스가 I/O 요청으로 대기 상태에 빠질 때
  • **타임 퀀텀(Time Quantum)**이 만료되어 다른 프로세스로 교체될 때
  • 더 높은 우선순위를 가진 프로세스가 나타났을 때

컨텍스트 스위칭의 비용

컨텍스트 스위칭은 단순한 작업처럼 보이지만 다음과 같은 오버헤드가 발생합니다:

  • 캐시 무효화 (Cache Invalidation)
  • TLB(Translation Lookaside Buffer) flush
  • 메모리 접근과 상태 저장/복원

이런 이유로 너무 자주 발생하면 오히려 전체 시스템 성능이 저하됩니다. 따라서 효율적인 스케줄러 설계가 중요합니다.


프로세스 vs 스레드: 컨텍스트 스위칭의 차이점

구분 프로세스 간 컨텍스트 스위칭 스레드 간 컨텍스트 스위칭 (동일 프로세스 내)
주소 공간 전환 O (다름) X (공유)
페이지 테이블 교체 O X
TLB flush O X
레지스터 저장/복원 O O
비용 높음 낮음
속도 느림 빠름
저작자표시 (새창열림)

'OS' 카테고리의 다른 글

동기 vs 비동기 & 블로킹 vs 논블로킹  (0) 2025.06.25
캐시 메모리란?  (0) 2025.06.25
프로그램은 어떻게 실행되는가  (0) 2025.06.24
스핀락(Spin Lock)  (0) 2025.06.24
세마포어(Semaphore)  (0) 2025.06.24
    'OS' 카테고리의 다른 글
    • 동기 vs 비동기 & 블로킹 vs 논블로킹
    • 캐시 메모리란?
    • 프로그램은 어떻게 실행되는가
    • 스핀락(Spin Lock)
    둠치킨
    둠치킨
    코딩 공부를 위한 코딩 블로그 기록 일기

    티스토리툴바