운영체제(OS)

문맥 교환 (Context switch) 알아보기

yoongrammer 2021. 1. 24. 08:30
728x90

문맥 교환 (Context switch) 알아보기


문맥(context)은 프로세스의 상태 정보를 의미합니다.

문맥 교환(context switch)은 프로세스의 상태 정보를 교환하는 작업입니다.

자세히 설명하자면 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해 이전의 프로세스의 상태를 PCB에 보관하고 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정입니다.

Context switch

문맥 교환은 멀티태스킹(=멀티프로세싱)이 가능하도록 해줍니다.

  • 멀티태스킹 : 다수의 프로세스가 하나의 CPU 자원을 나누어 사용하는 것

하나의 CPU에서 여러 개의 프로세스가 동시에 수행되는 것처럼 보이는 이유는 문맥 교환이 빠르게 일어나고 있기 때문입니다.

 

문맥 교환 중에는 다른 작업을 할 수 없기 때문에 이 시간을 오버헤드라고 할 수 있습니다.

 

오버헤드 해결 방안은 다음과 같습니다.

  • 문맥 교환이 자주 발생하지 않도록 다중 프로그래밍의 정도를 낮춥니다.
  • 스택 중심의 장비에서는 Stack 포인터 레지스터를 변경하여 프로세스 간 문맥 교환을 수행합니다.
  • 스레드(Thread)를 이용하여 문맥 교환 부하를 최소화시킵니다.

문맥 교환이 일어나는 시점은 다음과 같습니다.

  • 멀티 태스킹
    멀티 태스킹 환경에서 프로세스 전환 과정에서 문맥 교환이 일어납니다.
    선점 형 시스템에서는 스케줄러가 프로세스를 전환할 수 있습니다.
  • 인터럽트 처리
    인터럽트가 발생할 때 문맥 교환이 일어납니다.
  • 사용자 및 커널 모드 전환
    운영 체제에서 사용자 모드와 커널 모드 사이의 전환이 필요할 때 문맥 교환이 발생할 수 있습니다.

 

728x90