C 프로그래밍의 라운드 로빈 스케줄링



이 기사는 C 프로그래밍에서 라운드 로빈 스케줄링을 구현하는 방법에 대한 상세하고 포괄적 인 지식을 제공합니다.

이 기사에서는 라운드 로빈 스케줄링 알고리즘이라는 스케줄링 알고리즘에 대해 알아 봅니다. 라운드 로빈이란 무엇입니까? 프로그램 작성 방법? Etc. 시작합시다.

라운드 로빈 스케줄링이란 무엇입니까?

라운드 로빈 스케줄링은 시스템에서 CPU 사용률을 스케줄링하는 데 사용하는 스케줄링 알고리즘입니다. 이것은 선점 알고리즘입니다. 퀀텀이라고하는 각 요청과 관련된 고정 시간 조각이 있습니다. 작업 스케줄러는 현재 실행중인 작업의 진행 상황을 저장하고 특정 프로세스가 주어진 시간 동안 실행될 때 대기열에있는 다음 작업으로 이동합니다.





라운드 로빈 스케줄링

자바에서 객체를 복제하는 방법

오랫동안 CPU를 유지하는 프로세스는 없습니다. 전환을 컨텍스트 전환이라고합니다. 아마도 최고의 스케줄링 알고리즘 중 하나 일 것입니다. 이 알고리즘의 효율성은 양자 값에 따라 다릅니다.



라운드 로빈 스케줄링 알고리즘

  • 먼저 프로세스가 선착순으로 정렬되는 대기열이 있습니다.
  • 각 프로세스를 실행하기 위해 양자 값이 할당됩니다.
  • 첫 번째 프로세스는 양자 값이 끝날 때까지 실행됩니다. 그 후 인터럽트가 생성되고 상태가 저장됩니다.
  • 그런 다음 CPU는 다음 프로세스로 이동하고 동일한 방법을 따릅니다.
  • 모든 프로세스가 끝날 때까지 동일한 단계가 반복됩니다.

예제 코드 고려

#include int main () {int i, limit, total = 0, x, counter = 0, time_quantum int wait_time = 0, turnaround_time = 0, arrival_time [10], burst_time [10], temp [10] float average_wait_time, average_turnaround_time printf ( 'nEnter Total Number of Processes : t') scanf ( '% d', & limit) x = limit for (i = 0 i0) {temp [i] = temp [i]-time_quantum total = total + time_quantum} if (temp [i] == 0 && counter == 1) {x-- printf ( 'nProcess [% d] tt % dtt % dttt % d ', i + 1, burst_time [i], total-arrival_time [i], total-arrival_time [i]-burst_time [i]) wait_time = wait_time + total-arrival_time [i]-burst_time [i] turnaround_time = 처리 시간 + 총-도착 _ 시간 [i] 카운터 = 0} if (i == 제한-1) {i = 0} else if (도착 _ 시간 [i + 1]<= total) { i++ } else { i = 0 } } average_wait_time = wait_time * 1.0 / limit average_turnaround_time = turnaround_time * 1.0 / limit printf('nnAverage Waiting Time:t%f', average_wait_time) printf('nAvg Turnaround Time:t%fn', average_turnaround_time) return 0 }

산출:

설명:

위의 코드에서는 사용자에게 각 프로세스에 대한 프로세스 수와 도착 시간 및 버스트 시간을 입력하도록 요청합니다. 그런 다음 라운드 로빈 알고리즘을 사용하여 대기 시간과 처리 시간을 계산합니다.

여기서 주요 부분은 소요 시간과 대기 시간을 계산하는 것입니다. 소요 시간은 총 소요 시간을 더하고 도착 시간을 빼서 계산됩니다.

총계에서 도착 시간과 버스트 시간을 빼고 t0에 대기 시간을 더하여 대기 시간을 계산합니다. 이것이 라운드 로빈 스케줄링이 이루어지는 방식입니다.



장점 :

  • 의사 결정을위한 낮은 오버 헤드.
  • 다른 알고리즘과 달리 모든 프로세스에 동일한 우선 순위를 부여합니다.
  • 이 과정에서 기아는 거의 발생하지 않습니다.

단점 :

  • 잦은 스위칭이 발생하여 양자 값이 낮 으면 시스템의 효율성이 저하됩니다.
  • 양자 값이 높으면 시스템이 응답하지 않을 수 있습니다.

이것으로 우리는이 기사의 끝으로 왔습니다.

애자일과 데브 옵스의 차이점

이 정보가 유익하고 도움이 되었기를 바랍니다. 유사한 주제에 대한 더 많은 자습서를 기대해주세요. 우리의 교육 프로그램을 확인할 수도 있습니다.o 다양한 응용 프로그램과 함께 jQuery에 대한 심층적 인 지식을 얻으면 연중 무휴 지원 및 평생 액세스가 가능한 라이브 온라인 교육.다른 문자열과 수정으로 위의 코드를 구현하십시오. 이제 포인터와 관련된 모든 주요 개념을 잘 이해했습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에서이를 언급하시면 다시 연락 드리겠습니다.