[운영체제] Context switching이 발생하는 과정과, 오버헤드가 생기는 이유

2026. 3. 27. 08:19·소프트웨어/운영체제

기술면접을 대비해 '1일 1기술면접 질문 답변하기' 운동(?)을 하는 요즘이다. 알고 있다고 생각하는 개념도 막상 설명하려고 하니 막히는 부분이 있어서 하나하나 집요하게 정리해보고자 한다. 설명할 수 있는 것만이 진짜 이해한 것이니!

질문

"컨텍스트 스위칭(Context Switching)이 발생하는 과정과, 이때 오버헤드가 발생하는 구체적인 이유를 설명해 주세요."

답변

더 높은 우선순위 프로세스가 Ready 큐에 들어왔거나, 현 프로세스 루틴 종료 등의 이유로 컨텍스트 스위칭이 발생하며, 현 프로세스의 스택 포인터, CPU 레지스터 값, 프로세스 상태 및 메모리 정보 등 해당 프로세스의 실행 흐름에 관한 정보가 PCB에 저장되고 전환하려는 프로세스의 문맥 데이터가 로드되면서 문맥 전환이 이뤄집니다.

 

이 과정에서  PCB에 값들을 저장하고 다시 로드하는 과정에서 CPU가 유의미한 연산을 하지 못할 뿐더러, 기존 프로세스의 캐시 데이터들이 flush 되면서 CPU가 메모리에 더 자주 접근하게 되기 때문에 캐시 히트 빈도가 줄어들어 문맥 전환시 오버헤드가 발생하게 됩니다.


 

개념

프로세스의 문맥 파고들기

우선 "프로세스의 문맥(Context)"이란 무엇인가? 이화여대 반효경 교수님(강의 링크) 교수님은 이렇게 정의해주셨다.

  1. 문맥이란 CPU에서 어디까지 수행했는가 이다. 구체적으로는, CPU 내부 레지스터들에 어떤 값을 가지고 있는가. 이를 하드웨어 문맥, CPU 문맥 이라고 부른다.
  2. 자신의 메모리공간에 무엇을 가지고 있는가를 나타내는 프로세스의 주소공간(stack, data, code 영역)이 프로세스 문맥의 구성요소가 된다.
  3. 운영체제도 하나의 프로그램이기 때문에, 커널영역 주소공간에 code, data, stack을 가지고 있고, 여기서 데이터 영역에 각 프로세스마다 PCB라는 자료구조를 구조체로 저장한다. 그 안에는 프로세스가 CPU를 얼마나 썼는지, 메모리를 어떻게 썼는지 등의 정보를 종합적으로 가지고 있다.

프로세스의 문맥 종합 모음

프로세스의 문맥은 프로세스의 실행에 필요한 필요한 각종 데이터들로 CPU 내의 레지스터값, 프로세스의 커널 스택 데이터, 프로세스의 주소공간 데이터를 지칭하는 말이었다.

 

Context Switching

각 프로세스마다 할당되는 저장 공간인 kernel stack이나 PCB와는 달리, 레지스터와 캐시 메모리는 모든 프로세스가 공유하는 유일한 메모리이다. 따라서 프로세스로 전환을 하려면 기존 레지스터의 값들을 새로운 프로세스가 보유하는 레지스터 값들로 세팅하고, 새로운 프로세스에서 쓸모 없는 캐시 데이터를 flush 하게된다. 이 과정 자체에서도 오버헤드가 생기고, 캐시 메모리가 날라가면서 캐시 히트 빈도가 줄어들면서 큰 오버헤드가 생긴다.

'소프트웨어 > 운영체제' 카테고리의 다른 글

[운영체제] '파일 시스템'이란 무엇인가? (파일 시스템, 파일 관리자, 파일 테이블, 파일 디스크립터, 파일 헤더)  (0) 2025.10.23
[운영체제] '이미지'란 무엇인가? (디스크 이미지, 커널 이미지)  (0) 2025.10.21
'소프트웨어/운영체제' 카테고리의 다른 글
  • [운영체제] '파일 시스템'이란 무엇인가? (파일 시스템, 파일 관리자, 파일 테이블, 파일 디스크립터, 파일 헤더)
  • [운영체제] '이미지'란 무엇인가? (디스크 이미지, 커널 이미지)
jh-rrr
jh-rrr
기술의 깊이에 집중하며 성장하길 지향합니다.
  • jh-rrr
    Embedded World
    jh-rrr
  • 전체
    오늘
    어제
    • 분류 전체보기 (73) N
      • 소프트웨어 (18)
        • 프로그래밍 (2)
        • C (11)
        • Python (1)
        • 운영체제 (3)
        • 네트워크 (0)
      • Embedded Systems (24) N
        • 리눅스 (13)
        • MCU 기본 (2)
        • 임베디드 레시피 (0)
        • Arm 아키텍처 (5) N
      • Projects (1)
        • Cortex-M3 (1)
        • 재난 구조 로봇 (0)
      • AI (12)
        • Computer Vision (2)
        • Deep Learning (4)
        • cs224n (2)
        • cs231n (2)
      • 취업 준비 (1)
        • 프로젝트 & 자격증 (1)
      • 엔지니어링 뉴스 (3)
      • Paper Reviews (4)
      • Insights (7)
        • Seminar ! (2)
        • 서평 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스 오류
    conda: command not found
    커널 이미지
    일귀
    kernel image 란
    OS 이미지
    essential deep learning paper reading
    리눅스
    커널 이미지란
    stm32f 시리즈를 이용한 arm cortex-m3/m4 구조와 응용
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jh-rrr
[운영체제] Context switching이 발생하는 과정과, 오버헤드가 생기는 이유
상단으로

티스토리툴바