[알아보기] 컨텍스트 스위칭이란

V A M M U Z·2024년 11월 4일

알아보기

목록 보기
13/13
post-thumbnail

컨텍스트 스위칭(Context Switching)

: CPU가 현재 실행 중인 프로세스나 스레드의 작업을 멈추고, 다른 프로세스나 스레드의 작업을 수행하기 위해 그 상태를 변경하는 작업입니다.
: 멀티태스킹 운영체제에서 여러 프로그램을 동시에 실행하는 것처럼 보이게 하는 중요한 기술입니다.

프로세스 간 컨텍스트 스위칭

: 프로세스 간의 컨텍스트 스위칭은 현재 실행 중인 프로세스의 상태 정보를 저장하고, 다음 프로세스의 상태를 복구하는 과정을 포함합니다.

  1. 현재 프로세스의 상태 저장: CPU 레지스터(PC, 스택 포인터 등)와 같은 프로세스의 상태 정보를 PCB(Process Control Block)에 저장합니다.
  2. 메모리 매핑 해제: 프로세스가 사용하는 메모리 맵핑을 해제하여, 다른 프로세스가 CPU와 메모리 자원을 사용할 수 있도록 합니다.
  3. 다음 프로세스 상태 복구: 새로 실행할 프로세스의 PCB에서 상태 정보를 복구하여 CPU에 로드합니다.
  4. 메모리 매핑 재설정: 새 프로세스의 주소 공간에 맞게 메모리를 다시 매핑합니다.
  5. 프로세스 실행: 새로운 프로세스가 이전에 중단된 위치에서 실행을 시작합니다.

스레드 간 컨텍스트 스위칭

: 스레드는 같은 프로세스 내에서 실행되기 때문에, 스레드 간의 컨텍스트 스위칭은 프로세스 간의 컨텍스트 스위칭보다 빠르게 수행됩니다. 이는 스레드가 프로세스의 자원을 공유하기 때문에 메모리 매핑을 변경할 필요가 없기 때문입니다.

  1. 현재 스레드 상태 저장: CPU 레지스터와 같은 상태 정보를 스레드의 TCB(Thread Control Block)에 저장합니다.
  2. 다음 스레드 상태 복구: 새로 실행할 스레드의 TCB에서 상태 정보를 복구하여 CPU에 로드합니다.
  3. 스레드 실행: 새로운 스레드가 이전에 중단된 위치에서 실행을 시작합니다.

컨텍스트 스위칭에서 발생하는 작업

  • 레지스터 저장 및 복구
    : 현재 실행 중인 작업의 CPU 레지스터 상태를 저장하고 복구하여 중단된 지점에서 다시 시작할 수 있게 합니다.
  • 메모리 맵핑
    : 프로세스 간 컨텍스트 스위칭 시에는 해당 프로세스의 주소 공간에 맞는 메모리 맵핑을 설정해야 합니다.
  • 캐시 무효화 및 재로딩
    : 다른 프로세스의 메모리 접근이 다를 수 있기 때문에 CPU 캐시를 무효화하고 새롭게 로딩할 필요가 있습니다.
  • 스케줄러의 개입
    : 어느 프로세스를 다음에 실행할지 결정하는 스케줄러가 관여하여 CPU 자원을 효율적으로 배분합니다.

컨텍스트 스위칭은 여러 작업을 “동시에” 실행하는 효과를 내기 위해 필수적이지만, 전환 과정에서 발생하는 오버헤드는 줄일 수 없는 부분입니다.

0개의 댓글