2024.11.04 컨텍스트 스위칭

장재영·2024년 11월 4일
0

컨텍스트 스위칭

  • 운영체제(OS)에서 여러 프로세스나 스레드가 CPU 자원을 공유할 때, 현재 실행 중인 프로세스 또는 스레드의 상태를 저장하고 새로운 프로세스나 스레드로 전환하는 과정

  • 각 작업을 순차적으로 실행하면서도 동시에 여러 작업이 진행되는 것처럼 보이게 하는 핵심 메커니즘

  • 다음 실행할 프로세스의 상태를 로드하여 이어서 실행

  • 컨텍스트 스위칭은 멀티태스킹 환경에서 필수적인 작업이지만, '전환 과정에서 시간이 소요'되기 때문에 잦은 스위칭은 시스템 성능에 영향

컨텍스트 스위칭 과정

  1. 현재 프로세스/스레드의 상태 저장

    레지스터 저장

  • 현재 프로세스나 스레드가 CPU에서 실행되고 있는 동안 CPU는 프로그램 카운터(Program Counter), 스택 포인터(Stack Pointer), 상태 레지스터(Status Register) 등 다양한 레지스터에 상태 정보를 저장
  • 컨텍스트 스위칭이 일어나면 이 정보를 메모리의 PCB(Process Control Block) 또는 TCB(Thread Control Block)에 저장하여, 이후에 이 작업을 재개할 때 동일한 상태에서 시작

메모리 관리 정보 저장

  • 프로세스 간 스위칭 시에는 레지스터 외에도 프로세스의 메모리 매핑 정보나 페이지 테이블 등의 메모리 관련 정보도 저장
  • 프로세스가 사용하는 메모리 주소 공간을 복구하기 위해 필요하며, 이를 통해 프로세스는 전환 후에도 동일한 메모리 위치를 참조
  1. 상태 변경 및 스케줄링

상태변경

  • 현재 실행 중인 프로세스나 스레드는 '실행 중(Running)' 상태에서 '준비(Ready)' 또는 '대기(Waiting)' 상태로 변경
  • 프로세스가 입출력 작업을 기다려야 하는 경우 '대기' 상태가 되고, 단순히 CPU 점유 시간이 끝났다면 '준비' 상태로 변경

스케줄러

  • 운영체제의 스케줄러(Scheduler)는 현재 프로세스/스레드의 상태를 평가하고, 우선순위에 따라 다음 실행할 프로세스를 선택
  • 스케줄링 방식은 우선순위 기반, 라운드 로빈(Round Robin), 선점형 등 다양한 알고리즘을 사용할 수 있으며, 이를 통해 CPU 자원을 최적화
  1. 새로운 프로세스/스레드 상태 로드

PCB/TCB 로드

  • 스케줄러가 다음에 실행할 프로세스나 스레드를 결정하면, 선택된 프로세스의 PCB 또는 TCB에 저장된 레지스터 값, 프로그램 카운터, 스택 포인터 등의 정보를 CPU에 로드
  • 이를 통해 새롭게 선택된 작업은 중단된 시점부터 다시 실행

메모리 매핑 복구

  • 프로세스 간 스위칭에서는 페이지 테이블과 같은 메모리 매핑 정보도 복구
  • 이를 통해 새로운 프로세스는 자신의 고유한 메모리 공간을 사용할 수 있으며, 다른 프로세스의 메모리에 접근하지 않도록 격리
  1. 캐시 및 CPU 파이프라인 플러싱

캐시 플러싱

  • 프로세스 간 스위칭이 일어날 때는 이전 프로세스의 데이터가 CPU 캐시(Cache)에 남아 있을 수 있음
  • 이 데이터를 제거하고 새로운 프로세스의 데이터를 캐시에 적재해야 하며, 이러한 과정은 캐시 미스(Cache Miss)를 유발, 오버헤드를 발생시키는 주요 요인

파이프라인 플러싱

  • CPU는 파이프라인 구조를 갖추고 있어 명령어를 단계별로 실행하는데, 스레드나 프로세스가 바뀌면 기존 명령어 파이프라인을 비우고 재구성되어 성능 저하의 원인이 됨
  1. 작업 복귀
profile
개발 하고 싶은 비버

0개의 댓글