Context switch

Hyemimi·2023년 4월 1일
0

운영체제

목록 보기
1/3

Context Switching은 언제 일어날까?

들어가기에 앞서, context switching이 일어나는 배경에 대해서 알아보겠습니다!🏃‍♀️

  1. I/O interrupt

<I/O operation 과정>

1. CPU가 I/O controller에게 명령을 내림
2. controller가 instruction 수행 (느림)
3. cpu는 기존의 작업을 저장 후 다른 일을 처리. *비동기*
4. 디스크가 수행을 완료함 ! cpu에게 알려줘야 함 => *Interrupt*
5. cpu는 멈추고 저장하고, interrupt handler 또는 isr 로 점핑
6. 끝나면 다시 자기가 하던 일로 복귀
7. cpu가 할 수 없는 일은 운영체제가 할 것임 (interrupt)

위의 과정에서 I/O 요청이 필요해서 잠깐 멈추었던 프로세스와, 요청이 수행되길 기다리는 동안 잠깐 수행했던 프로세스가 있는데 이 두 프로세스는 스위칭 되고 있습니다. 이를 context switching이 일어났다고 하는데요, 더 자세한 내용은 밑에서 다루어보겠습니다~

  1. CPU 사용시간 만료

  2. 자식 프로세스 Fork

  3. 인터럽트 처리를 기다릴 때

Context Switching이란?

우선 context란,
CPU가 해당 프로세스를 실행하기 위해 필요한 해당 프로세스의 정보들을 뜻합니다.

CPU는 context를 가지고 프로세스들을 실행시킵니다. 그렇다면 이러한 프로세스의 정보는 어디서 얻을 수 있을까요?

바로 PCB 입니다.

PCB(Process Control Block)는 프로세스가 생성될 때, 프로세스와 함께 메모리에 생성됩니다. (종료 시 삭제)
따라서 각 프로세스는 고유의 PCB가 있고, 아래와 같은 정보들을 저장합니다.

(핵심요소)
- 상태
- pc (program counter)
- register
- 프로세스 번호

프로세스 P0에서 P1로 context를 switch한다면, 수행되고 있었던 P0의 프로세서 정보들(register)을 저장하고(PCB-0에) 다시 새로운 프로세서 P1의 정보들을 읽어와야겠죠?(PCB-1로부터)

이러한 작업을 Context Switching이라고 합니다!

Overhead

그러나 Context Switching 과정 동안 CPU는 아무런 일도 하지 못하므로, 오버헤드가 발생합니다.
그러나 하드웨어 자원에 따라 효율이 달라져 오버헤드를 줄일 수는 있습니다

참고 자료

경희대학교 운영체제 강의, 강의자료 (조진성 교수님)
개발블로그 https://applefarm.tistory.com/105

profile
암냠냠

0개의 댓글