Os
27 Sep 2020

Context Switching

Context Switching

  • 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기위해, 사용중인 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.

  • 한 프로세스의 상태는 그 프로세스의 프로세스 제어 블록(PCB)에 기록되어 있다.

  • Context Switching동안에는 다른 작업을 수행할 수 없기 때문에,Context Switching는 오버헤드이다.


진행과정

1. CPU가 다른 프로세스로 전환하면 시스템은 프로세스의 상태를 PCB에 저장한다.

2. 대기열에서 다음 프로세스를 선택하고 PCB를 복원한다.

3. PCB의 프로그램 카운터가 로드되어 선택한 프로세스에서 실행을 계속한다.


발생 시점

1. 멀티태스킹

멀티 태스킹 환경에서 프로세스가 할당 받은 시간이 종료되어 프로세스가 사용하던 CPU를 다른 프로세스가 사용할 수 있도록 재배정할때 발생한다.


2. 인터럽트 핸들링

CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것을 말한다.

context switching을 발생시킬 수 있는 인터럽트

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

  • time slice expired(CPU 사용시간이 만료)

  • fork a child (자식 프로세스 생성)

  • wait for an interrupt(인터럽트 처리를 기다림)


유저모드 <-> 커널 모드 전환

  • 운영 체제에서 사용자 모드와 커널 모드간 전환이 필요한 경우 context switching이 필요하지 않다.

  • 모드 전환은 그 자체로 컨텍스트 스위치가 아니지만 운영체제에 따라 context switching이 발생할 수 있다.


Tags:
0 comments