반응형

운영체제에서는 실행중인 프로세스를 Ready 상태나 WaitBlock 상태 등 다른 상태로 되돌릴 필요가 있는 경우가 있습니다. 실행 중인 프로세스가 어떤 입출력조작을 실행할 필요가 있는 경우는 프로세스를 실행 상태에서 삭제한 후 프로세스를 입출력 큐에 넣을 필요가 있습니다. 경우에 따라서는 프로세스가 라운드 로빈 스케줄링 알고리즘을 사용하고 있는 경우가 있습니다.라운드 로빈 스케줄링 알고리즘에서는 일정 시간마다 프로세스가 실행 상태에서 준비 상태로 돌아가야 하는데, 이 때문에 이들 프로세스 스위칭은 컨텍스트 스위칭을 사용해 이루어집니다. 이 블로그에서는 운영 체제의 컨텍스트 스위칭 개념에 대해 설명하고 컨텍스트 스위칭의 이점과 결점에 대해서도 설명합니다. 그럼 시작합시다

 

컨텍스트 스위칭이란 무엇입니까?

컨텍스트 스위칭은 CPU를 한 프로세스 또는 태스크에서 다른 프로세스로 전환하는 프로세스입니다. 이 현상에서는 실행 중인 상태에 있는 프로세스의 실행이 커널에 의해 일시 정지되고 준비 완료 상태에 있는 다른 프로세스가 CPU에 의해 실행됩니다. 이것은, 멀티태스킹 운영 시스템의 필수 기능의 하나입니다. 프로세스가 매우 빠르게 전환되기 때문에 모든 프로세스가 동시에 실행되는 것 같은 착각이 듭니다. 다만, 컨텍스트 스위칭 프로세스에는 따를 필요가 있는 몇 가지 순서가 포함되어 있었습니다. 프로세스를 실행 상태에서 준비 상태로 직접 전환할 수 없습니다. 그 프로세스의 콘텍스트를 저장해야 합니다. 프로세스 P의 콘텍스트를 저장하지 않은 경우에는 잠시 후 프로세스 P가 CPU에 다시 들어가서 실행되면 프로세스는 시작할 때부터 실행을 시작합니다. 다만, 실제로는 이전 실행에서 CPU를 남긴 시점부터 계속 진행을 해야 합니다. 따라서 다른 프로세스를 실행 상태로 만들기 전에 프로세스의 콘텍스트를 저장해야 합니다. 콘텍스트란 임의의 시점에서의 CPU 레지스터 및 프로그램 카운터의 내용입니다. 컨텍스트 스위칭은 다음과 같은 이유로 발생합니다. priority 높은 프로세스가 ready 상태가 된 경우입니다. 이 경우 실행 중인 프로세스의 실행을 중단하고 보다 높은 priority의 프로세스에 실행용 CPU를 할당해야 합니다. 인터럽트가 발생한 경우 실행 상태의 프로세스를 정지시키고 CPU가 인터럽트를 처리한 후 다른 처리를 해야 합니다. 사용자 모드에서 커널 모드로 이행할 필요가 있는 경우에는 컨텍스트 스위칭을 실행해야 합니다. 컨텍스트 스위칭 프로세스에는 몇 가지 단계가 있습니다. 다음 그림은 2가지 프로세스 P1과 P2 사이의 컨텍스트 스위칭 프로세스를 나타내고 있습니다. 위의 그림에서는 처음에 프로세스 P1이 실행상태이고 프로세스 P2가 준비완료 상태임을 알 수 있습니다. 여기에서 어떤 중단이 발생한 경우 컨텍스트를 저장한 후에 프로세스 P1을 실행상태에서 준비상태로, 프로세스 P2를 실행상태에서 준비상태로 전환해야 합니다. 다음의 순서를 실행합니다. 우선 프로세스 P1의 컨텍스트, 즉 실행상태에 있는 프로세스는 프로세스 P1 즉 PCB1의 프로세스 제어 블록에 저장됩니다. 다음으로 PCB1에 해당하는 큐, 즉 Ready 큐, I 큐, Waiting 큐 등으로 이동해야 합니다. [Ready] 상태에서 수행할 새 프로세스 P2)를 선택합니다. 다음으로 프로세스 상태를 실행 중에 설정하여 프로세스 P2, 즉 PCB2의 프로세스 제어 블록을 갱신합니다. 프로세스 P2가 CPU에 의해 이전에 실행된 경우 마지막으로 실행된 명령 위치를 가져와 P2의 실행을 재개할 수 있습니다. 마찬가지로 프로세스 P1을 다시 실행할 경우에는 상기와 같은 순서를 실행할 필요가 있습니다. 컨텍스트 스위칭을 실행하려면 일반적으로 적어도 2개의 프로세스가 필요합니다. 라운드 로빈 알고리즘의 경우, 컨텍스트 스위칭을 실행할 수 있는 것은 1개의 프로세스뿐입니다.

 

컨텍스트 스위칭의 장점이 있습니다.

컨텍스트 스위칭은 멀티태스킹, 즉 타임 쉐어링에 의한 멀티 프로그래밍을 실현하기 위해서 사용됩니다(멀티태스킹의 자세한 것에 대하여는 여기를 참조해 주세요). 멀티태스킹은 여러 프로세스가 동시에 실행되고 있는 듯한 착각을 사용자에게 줍니다. 그러나 실제로는 프로세서에 의해 실행되는 작업은 한 가지 뿐입니다. 여기서는 컨텍스트 스위칭이 매우 빠르기 때문에 사용자는 CPU가 여러 태스크를 동시에 수행하고 있다고 느끼는데요.

 

컨텍스트 스위칭의 단점입니다.

콘텍스트 스위칭의 결점은 콘텍스트 스위칭에 시간이 걸리는 것입니다. 수행 중인 프로세스의 콘텍스트를 저장하고 실행 중인 프로세스의 콘텍스트를 얻으려면 시간이 필요합니다. 그 동안 CPU에 의한 사용자 관점에서의 유용한 작업은 없습니다. 이 상태에서는, 콘텍스트 스위칭은 오버헤드에 지나지 않습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">