Home 문맥교환
Post
Cancel

문맥교환

문맥교환(Context Switching)

[TOC]

문맥교환

문맥교환이 필요한 이유

  • 하나의 Task만 처리한다면 다음 Task는 끝날 때까지 기다려야한다.
  • 빠른 속도로 Task를 바꿔가며 실행해 사람에게는 실시간처럼 보이게 된다.

문맥교환이란?

  • 현재 진행중인 Task(Process, Thread)의 상태를 저장하고 다음 진행할 task의 상태값을 읽어와 실행하는 것.
  • 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.

PCB(Process Control Block) 구조

  • process state : 프로세스 상태
  • process counter : 다음 실행할 명령어 주소 값
  • CPU registers

문맥교환 절차

  1. 인터럽트/시스템 호출
  2. 커널모드 전환
  3. 현재 프로세스 상태를 PCB에 저장
  4. PCB에서 다음 실행 프로세스 상태 로드
  5. 사용자 모드 전환

문맥교환 발생 상황

img

  • dispatch : 준비 -> 실행
  • CPU할당 시간 만료 : 실행 -> 준비
  • I/O 작업 및 할당 : I/O작업이 필요하여 작업 완료시까지 대기. 실행 -> 대기
  • System Call : 또다른 서비스 호출이 필요한 경우 대기. 실행 -> 대기

오버헤드

문맥교환이 잦을 수록 오버헤드가 커진다.

오버헤드 해결 방안

  • 프로그램 다중화 수준 낮추기 -> 빈도 최소화
  • 스레드 이용 : 가벼운 프로세스인 스레드를 이용하여 부하 최소화
  • 스택포인터 활용 : 스택 이용 프로그램의 경우 스택 포인터를 활용해 문맥교환 최소화
This post is licensed under CC BY 4.0 by the author.