선점형 커널

Preemptive (선점형 커널) CPU Scheduler가 우선순위가 더 높은 프로세스의 처리를 위해 현재 진행하고 있던 프로세스를 내쫓는 즉, 다른 프로세스가 CPU를 선점하는 방식이다.

CPU Scheduling 과정에서 판단이 일어나는 종류

  1. Running -> Waiting : I/O 요청이나 자식 프로세스 종료를 기다리기 위해 wait() 호출 시 실행된다. 프로세스가 I/O 요청이나 자식 프로세스 종료를 기다리기 위해 대기 상태로 전환되는 경우이기에 CPU를 사용하지 않는 과정으로 넘어가기에 자연스럽게 CPU는 다른 프로세스를 사용한다. 그렇기에 Scheduling Decision이 필요없는 Non-preemptive 과정이다.
  2. Running -> Ready : 인터럽트가 발생하여 실행 중인 프로세스를 중단하고 준비 상태로 전환될 때는 CPU 스케줄러가 다른 프로세스를 선택해야 한다. 이는 Preemptive 또는 Non-preemptive 방식으로 처리할 수 있다.
  3. Waiting -> Ready : I/O 작업이 완료되어 프로세스가 다시 실행 준비가 되었을 경우로 Waiting 상태에서 Reday 상태로 전환된 프로세스는 Ready 큐에 추가됩니다. 여기서 CPU 스케줄러는 우선순위를 평가하여 Preemptive 또는 Non-preemptive 방식으로 처리할 수 있다.
  4. Running -> Terminate : 실행 중인 프로세스가 작업을 완료하고 종료될 경우이다. 이 때, CPU는 준비 큐에서 다음 프로세스를 선택하기에 Scheduling Decision이 필요 없는 Non-preemptive 과정이다.

results matching ""

    No results matching ""