본문 바로가기
CS/운영체제

컨텍스트 스위칭이란?

by taehee.kim.dev 2020. 11. 19.

컨텍스트 스위칭이란 무엇인가요?


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

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

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

PCB에 저장되어있는 정보

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

  • 프로세스 카운터 (프로세스가 다음에 실행할 명령어의 주소)

  • 레지스터 (누산기, 스택, 색인 레지스터)

  • 프로세스의 번호

★ Context Switching을 할 때, CPU는 아무 일을 하지 못한다. Context switching 시에 딜레이가 존재한다. 따라서 Context Switching이 잦아지면 오버헤드가 발생해 성능이 나빠진다.

 

그럼, 위에서 설명한 Context를 Switching(교체) 한다는 것은 무엇일까?

멀티 프로세스 환경 : 여러 가지 프로세스를 동시에 실행시킬 수 있는 환경.

CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서,

인터럽트 요청에 의해 다음 우선순위의 프로세스가 실행되어야 할 때,

기존에 실행되고 있던 프로세스의 Context를 PCB에 저장한다.

그리고, 다음 프로세스를 바로 수행하도록 새로운 프로세스의 Context로 교체하는 작업을

Context Switching이라고 한다.

 

이런 컨텍스트 스위칭이 일어날 때 다음으로 실행될 프로세스는 스케줄러가 결정한다.

즉, 컨텍스트 스위칭을 하는 주체는 스케줄러이다.

그럼 Context Switching을 일으키는 인터럽트(Interrupt)는 어떤 것들이 있을까?

인터럽트 : CPU가 프로세스를 수행하고 있을 때, 해당 프로세스 밖에서 예외 상황이 발생하여 급하게 처리하 필요한 경우, CPU에게 알려 해당 예외 상황을 먼저 처리할 수 있도록 하는 것을 말한다.

  • I/O request (입출력을 요청할 때)

  • time slice expired (CPU 사용시간이 만료되었을 때)

  • fork a child (자식 프로세스를 만들 때)

  • 등등.

컨텍스트 스위칭에서 스레드와 프로세스의 차이

스레드가 프로세스보다 빠른 이유는 컨텍스트 스위칭이 한몫한다.

스레드는 컨텍스트 스위칭 될 때 Text, Data, Heap 영역은 프로세서의 것이기에 자신의 PCB에는 스택 및 간단한 정보만 저장하기에 프로세스 컨텍스트 스위칭보다 훨씬 빠르다.

 

 

참조

jeong-pro.tistory.com/93

 

OS - Context Switch(컨텍스트 스위치)가 무엇인가?

Context Switching이 무엇인가? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세

jeong-pro.tistory.com

www.crocus.co.kr/1364

 

컨택스트 스위칭(Context Switching)

컨택스트 스위칭(Context Switching)이란? 위의 그림을 통해 설명하고자 한다. 프로세스 P0와 P1이 존재할 때, P0가 CPU를 점유중(excuting)이었고 P1이 대기중(idle)이었는 상태이다가 얼마후에는 P1이 실행

www.crocus.co.kr

 

'CS > 운영체제' 카테고리의 다른 글

뮤텍스와 세마포어란?  (0) 2020.11.17
교착상태란?  (0) 2020.11.16
프로세스와 스레드의 차이  (0) 2020.11.16

댓글