logo

OS(운영 체제)의 컨텍스트 전환

컨텍스트 전환은 시스템의 CPU를 사용하여 해당 기능을 실행하기 위해 프로세스를 한 상태에서 다른 상태로 전환하기 위해 운영 체제에서 사용하는 기술 또는 방법입니다. 시스템에서 수행을 전환할 때 이전에 실행 중인 프로세스의 상태를 레지스터 형태로 저장하고 CPU를 새 프로세스에 할당하여 해당 작업을 실행합니다. 새로운 프로세스가 시스템에서 실행되는 동안 이전 프로세스는 준비 대기열에서 기다려야 합니다. 이전 프로세스의 실행은 다른 프로세스가 이를 중지한 지점에서 시작됩니다. 이는 시스템에 추가 프로세서가 필요 없이 여러 프로세스가 동일한 CPU를 공유하여 여러 작업을 수행하는 멀티태스킹 운영 체제의 특성을 정의합니다.

컨텍스트 전환의 필요성

컨텍스트 전환은 모든 프로세스에서 단일 CPU를 공유하여 실행을 완료하고 시스템 작업 상태를 저장하는 데 도움이 됩니다. 프로세스가 시스템에 다시 로드되면 충돌이 발생한 동일한 지점에서 프로세스 실행이 시작됩니다.

다음은 운영 체제에서 컨텍스트 전환의 필요성을 설명하는 이유입니다.

  1. 한 프로세스를 다른 프로세스로 전환하는 것은 시스템에서 직접 이루어지지 않습니다. 컨텍스트 전환은 여러 프로세스 간을 전환하여 CPU 리소스를 사용하여 작업을 수행하고 컨텍스트를 저장하는 운영 체제를 돕습니다. 나중에 같은 시점에 해당 프로세스의 서비스를 재개할 수 있습니다. 현재 실행 중인 프로세스의 데이터나 컨텍스트를 저장하지 않으면 프로세스 간 전환 시 저장된 데이터가 손실될 수 있습니다.
  2. 우선순위가 높은 프로세스가 준비 대기열에 들어가면 현재 실행 중인 프로세스는 시스템에서 작업을 완료하기 위해 우선순위가 높은 프로세스에 의해 종료되거나 중지됩니다.
  3. 실행 중인 프로세스에 시스템의 I/O 리소스가 필요한 경우 현재 프로세스는 CPU를 사용하도록 다른 프로세스에 의해 전환됩니다. 그리고 I/O 요구 사항이 충족되면 이전 프로세스는 CPU에서 실행을 기다리기 위해 준비 상태로 전환됩니다. 컨텍스트 전환은 운영 체제에서 작업을 재개하기 위해 프로세스 상태를 저장합니다. 그렇지 않으면 프로세스는 초기 수준에서 실행을 다시 시작해야 합니다.
  4. 운영 체제에서 프로세스를 실행하는 동안 인터럽트가 발생하면 컨텍스트 전환을 사용하여 프로세스 상태가 레지스터로 저장됩니다. 인터럽트를 해결한 후 프로세스는 대기 상태에서 준비 상태로 전환되어 나중에 운영 체제가 중단된 동일한 지점에서 실행을 재개합니다.
  5. 컨텍스트 전환을 사용하면 추가 프로세서 없이 단일 CPU가 여러 프로세스 요청을 동시에 처리할 수 있습니다.

컨텍스트 전환의 예

여러 프로세스가 프로세스 제어 블록(PCB)에 저장되어 있다고 가정합니다. 하나의 프로세스는 CPU를 사용하여 작업을 실행하는 실행 상태입니다. 프로세스가 실행 중일 때 CPU를 사용하여 작업을 완료하는 우선 순위가 높은 다른 프로세스가 준비 대기열에 도착합니다. 여기서는 CPU가 작업을 완료해야 하는 새로운 프로세스로 현재 프로세스를 전환하는 컨텍스트 전환을 사용했습니다. 프로세스를 전환하는 동안 컨텍스트 전환은 이전 프로세스의 상태를 레지스터에 저장합니다. 프로세스가 CPU에 다시 로드되면 새 프로세스가 이전 프로세스를 중지할 때 프로세스 실행이 시작됩니다. 프로세스 상태를 저장하지 않으면 초기 수준에서 실행을 시작해야 합니다. 이러한 방식으로 컨텍스트 전환은 운영 체제가 작업 실행이 필요할 때 프로세스 간 전환, 프로세스 저장 또는 다시 로드를 돕습니다.

컨텍스트 전환 트리거

다음은 세 가지 유형의 컨텍스트 전환 트리거입니다.

파이썬은 UUID를 생성
  1. 인터럽트
  2. 멀티태스킹
  3. 커널/사용자 스위치

인터럽트 : CPU는 디스크에서 읽을 데이터를 요청하며, 인터럽트가 있는 경우 컨텍스트 전환은 인터럽트를 처리하는 데 시간이 덜 필요한 하드웨어의 일부를 자동으로 전환합니다.

멀티태스킹 : 컨텍스트 전환은 프로세스가 CPU에서 전환되어 다른 프로세스가 실행될 수 있도록 하는 멀티태스킹의 특성입니다. 프로세스를 전환하면 이전 상태가 저장되어 시스템의 동일한 지점에서 프로세스 실행을 재개합니다.

커널/사용자 스위치 : 운영체제에서 사용자 모드 전환 시 사용되며, 커널/사용자 모드를 수행한다.

PCB 란 무엇입니까?

PCB(Process Control Block)는 운영 체제에서 프로세스에 관련된 모든 데이터를 저장하는 데 사용되는 데이터 구조입니다. 예를 들어, 운영 체제에서 프로세스가 생성되면 프로세스의 정보가 업데이트되고, 프로세스의 정보가 전환되고, PCB에서 프로세스가 종료됩니다.

컨텍스트 전환 단계

프로세스의 컨텍스트 전환에는 여러 단계가 포함됩니다. 다음 다이어그램은 PCB의 준비 대기열에서 인터럽트, I/O 필요 또는 우선 순위 기반 프로세스가 발생할 때 두 프로세스 P1에서 P2로의 컨텍스트 전환을 나타냅니다.

운영 체제의 컨텍스트 전환이란 무엇입니까?

다이어그램에서 볼 수 있듯이 처음에는 P1 프로세스가 CPU에서 실행되어 작업을 실행하고 동시에 다른 프로세스 P2가 준비 상태에 있습니다. 오류나 중단이 발생했거나 프로세스에 입력/출력이 필요한 경우 P1 프로세스는 상태를 실행 중에서 대기 상태로 전환합니다. 프로세스 P1의 상태를 변경하기 전에 컨텍스트 전환은 프로세스 P1의 컨텍스트를 레지스터 형태로 저장하고 프로그램 카운터를 PCB1 . 그 후, 준비 상태에서 P2 프로세스의 상태를 로드합니다. PCB2 실행 상태로.

Powershell의 Runas

프로세스 P1을 프로세스 2로 전환할 때 다음 단계가 수행됩니다.

  1. 먼저, 컨텍스트 스위칭은 프로세스 P1의 상태를 프로그램 카운터와 레지스터 형태로 실행 중인 PCB(Program Counter Block)에 저장해야 합니다.
  2. 이제 P1을 처리하도록 PCB1을 업데이트하고 프로세스를 준비 대기열, I/O 대기열 및 대기 대기열과 같은 적절한 대기열로 이동합니다.
  3. 그 후, 다른 프로세스가 실행 중 상태로 들어가거나, 실행될 준비 상태에서 새 프로세스를 선택하거나, 프로세스가 작업을 실행하는 데 높은 우선순위를 갖습니다.
  4. 이제 선택한 프로세스 P2에 대한 PCB(Process Control Block)를 업데이트해야 합니다. 여기에는 프로세스 상태를 준비 상태에서 실행 상태로 전환하거나 차단, 종료 또는 일시 중지와 같은 다른 상태로 전환하는 것이 포함됩니다.
  5. CPU가 이미 프로세스 P2를 실행하고 있는 경우 시스템 인터럽트가 발생하는 동시에 프로세스 P2의 실행을 재개하려면 프로세스 P2의 상태를 가져와야 합니다.

마찬가지로 프로세스 P2가 CPU에서 꺼지므로 프로세스 P1이 실행을 재개할 수 있습니다. P1 프로세스는 PCB1에서 실행 상태로 다시 로드되어 동일한 지점에서 작업을 재개합니다. 그렇지 않으면 정보가 손실되며 프로세스가 다시 실행되면 초기 수준에서 실행이 시작됩니다.