컨텍스트 스위칭

김태희·2020년 12월 20일
0
post-custom-banner

Context Switching이란?

멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서, 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때, 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)으로 교체하는 작업을 컨텍스트 스위칭 이라고 한다.

Context Switching을 하는 주체 : OS 스케줄러

Context : CPU가 특정 프로세스를 실행시키기 위한 프로세스의 정보들.

Context는 프로세스의 PCB(Process Control Block)에 저장된다.

그래서 Context Switching을 할 때, PCB의 Context 정보를 읽어와서, 이전에 실행시키다가 중단되었던 부분부터 이어서 수행 가능한 것이다.

PCB에 저장되는 정보

  • 프로세스의 상태 : 생성, 준비, 수행 대기 중지.

  • 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소.

  • 레지스터 : 누산기, 스택, 색인 레지스터.

  • 프로세스 번호

* Context Switching을 할 때, 해당 CPU는 아무런 일을 하지 못한다. 따라서 컨텍스트 스위칭이 잦아지면 오버헤드가 발생해 성능이 떨어진다.

Context Switching을 발생시키는 인터럽트의 종류

  • 입출력을 요청할 때
  • CPU 사용시간이 만료되었을 때
  • 자식 프로세스를 만들 때
  • 인터럽트 처리를 기다릴 때

참고 : https://jeong-pro.tistory.com/93

profile
Web Back-End (Spring, JPA, AWS)
post-custom-banner

0개의 댓글