본 글은 https://jeong-pro.tistory.com/93을 참고하여 작성헀습니다.
Context Switching이란?
멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때, 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)이라고 합니다.
Context는 무엇인가?
사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등의 현재 상황(상태)을 규정하는 정보들을 말합니다.
android나 serlet등에서도 context가 있지만 OS에서 Context는 CPU가 해당 프로세스를 실행하기 위한 프로세스의 정보들입니다.
이 Context는 프로세스의 PCB(Process Control Block)에 저장됩니다.
그래서 Context Switching 때 PCB의 정보를 읽어(적재) CPU가 전에 프로세스가 일을 하던거에 이어서 수행이 가능한 것입니다.
*참고로 Context Switching 때 해당 CPU는 아무런 일을 하지 못합니다. 따라서 Context Switching이 잦아지면 오히려 오버헤드가 발생하여 효율(성능)이 떨어지게 됩니다.
Context가 뭔지 알았고 멀티 프로세싱하기 위해 CPU를 나눠서 사용하기 위해 Context를 교체하는 것이 Context Switching임을 알았습니다. 그리고 PCB에 Context가 저장됨도 알았습니다.
이제 인터럽트 요청이 무엇이고 어떤 종류가 있는지를 알아봅시다.
Context Switching - 인터럽트(Interrupt)
인터럽트는 CPU가 프로그램을 실행하고 있을 때 실행중인 프로그램 밖에서 예외 상황이 발생하여 처리가 필요한 경우 CPU에게 알려 예외 상황을 처리할 수 있도록 하는 것을 말합니다.
어떤 인터럽트 요청이 와야 Context Switching이 일어날까요?
- I/O request(입출력 요청할 때)
- time slice expired(CPU 사용시간이 만료 되었을 때)
- fork a child(자식 프로세스를 만들 때)
- wait for an interrupt(인터럽트 처리를 기다릴 때)
- 그 외 등등..
우선 순위는 해당 OS의 스케줄러가 우선 순위 알고리즘에 의해 정해지고 수행하게 되어있습니다.
* Context Switch를 하는 주체 = OS 스케줄러
라운드로빈 스케줄링(Round Robin Scheduling)은 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나입니다.
쉽게 설명하면 순서대로 시간단위(Time Quantum)을 CPU에 할당하는 방식입니다.
꽤 효율적이지만 이 시간단위가 작아지면 CPU가 조금 일하게 되고 Context Switching을 반복하게 되므로 효율이 떨어지게 됩니다.
이상 Context Switch란? 였습니다. ^_^
'Machine, Deep Learning > Machine, Deep Learning 실습' 카테고리의 다른 글
Numpy 배열의 특정요소 추출하기 (0) | 2019.06.24 |
---|---|
Numpy 배열 생성하기 (0) | 2019.06.24 |
데이터 분석을 위한 삼위일체 (2) (0) | 2019.06.17 |
데이터 분석을 위한 삼위일체 (1) (0) | 2019.06.16 |
Kaggle - 남은 주차공간을 알려주는 AI (1) | 2019.06.15 |