문제

멀티태스킹 운영 체제 환경에서는 라운드 로빈 스케줄링이라는 용어를 듣는 경우가 있습니다.그것은 무엇을 가리키는가?
또 어떤 종류의 일정이 있나요?

도움이 되었습니까?

해결책

라운드 로빈 스케줄링

귀하가 100명의 게스트로 구성된 파티의 호스트인 경우 라운드 로빈 예약은 게스트당 1분(고정 금액)을 소비한다는 것을 의미합니다.각 손님을 한 명씩 살펴보고 100분이 지나면 각 손님과 1분을 보내게 됩니다.자세한 내용 위키피디아.

우선순위 기반(예:가장 중요한 사람 먼저), 선착순, 가장 빠른 마감일 우선(예:가장 먼저 출발하는 사람) 등일정 알고리즘을 검색하여 시작하거나 확인할 수 있습니다. Wikipedia에서 예약하기

다른 팁

타임슬라이싱은 실제로 AFAIK의 모든 라운드 로빈 스케줄링 시스템에 내재되어 있습니다.

나는 다음과 같은 InSciTek Jeff의 암시에 동의하지 않습니다. ~이다 라운드 로빈 스케줄링:

즉, 라운드 로빈 순환에서 동일한 우선순위를 가진 각 작업은 순환의 다음 작업으로 넘어가기 전에 리소스 차단 조건에 도달할 때까지 실행되도록 허용될 수 있습니다.

이것이 어떻게 라운드 로빈으로 간주될 수 있는지 모르겠습니다.이는 실제로 선점형 스케줄링입니다.그러나 라운드 로빈 스케줄링과 선점 스케줄링이 모두 활성화된 경우(라운드 로빈은 기본적으로 비활성화되어 있음) VxWorks가 수행하는 라운드 로빈 및 선점 스케줄링 요소를 모두 포함하는 스케줄링 알고리즘을 갖는 것이 가능합니다.라운드 로빈 스케줄링을 활성화하는 방법은 0이 아닌 값을 제공하는 것입니다. 커널타임슬라이스.

나는 다음 진술에 동의합니다.

따라서 타임슬라이싱 기반 스케줄링은 라운드 로빈 스케줄링을 의미하지만 라운드 로빈 스케줄링에는 동일한 시간 기반 타임슬라이싱이 필요하지 않습니다.

동일한 시간이 필요하지 않다는 말이 맞습니다.선점은 그것을 망칠 수 있습니다.그리고 실제로 VxWorks에서는 라운드 로빈 스케줄링 중에 작업이 선점되면 작업이 다시 제어권을 얻게 되면 할당된 나머지 시간 동안 실행됩니다.

INSCITEK JEFF (의견 권한이 없음)에 대한 편집 예, 나는 분명히 그것을 잘 표현하지는 않았지만 작업 잠금/인터럽트 비활성화를 언급하고있었습니다.당신은 두 번째 댓글로 나를 선점했습니다(하!).나는 라운드 로빈 스케줄링이 시간 분할 없이 존재할 수 있다고 믿는 보다 중요한 점에 대해 토론하고 싶습니다.아니면 동일한 시간 기반 시간 분할을 의미했습니까?나는 전자에 동의하지 않지만 후자에는 동의합니다.나는 배우고 싶어합니다.감사해요.

Jeff를 대상으로 한 Edit2:

라운드 로빈은 타임슬라이싱 없이 존재할 수 있습니다.kernelTimeSlice가 비활성화(0)되면 VxWorks에서 정확히 이런 일이 발생합니다.

나는 이 말에 동의하지 않습니다.보다 이 문서 Round-Robin Scheduling이라는 제목의 섹션 2.2.3.

라운드 로빈 스케줄링은 시간 슬라이싱을 사용하여 동일한 우선 순위를 가진 모든 작업에 CPU의 공정한 할당을 달성합니다.우선 순위가 동일한 작업 그룹에서 각 작업은 정의 된 간격 또는 시간 슬라이스를 실행합니다.라운드 로빈 스케줄링은 kerneltimeslice ()를 호출하여 타임 슬라이스 또는 간격의 매개 변수를 사용하여 활성화됩니다....] 라운드 로빈 스케줄링이 활성화되고 실행 작업에 대한 선점이 활성화되면 시스템 진드기 핸들러는 작업의 시간 슬라이스 수를 증가시킵니다.

타임슬라이싱은 라운드 로빈 스케줄링에 내재되어 있습니다.그렇지 않으면 라운드 로빈 스케줄링을 통해 해결하려는 CPU 제어를 포기하는 작업에 의존하게 됩니다.

여기에 대한 답변과 Wikipedia 기사에서도 주기적 타임슬라이싱을 본질적으로 포함하는 라운드 로빈 스케줄링에 대해 설명합니다.이는 매우 일반적이지만 Round-Robin 스케줄링 및 타임슬라이싱은 다음과 같습니다. ~ 아니다 똑같은 것입니다.확실히 타임슬라이싱이 이해되도록 하기 위해 각 작업을 순환할 때 라운드 로빈 스케줄링이 암시되지만 타임슬라이싱 없이 라운드 로빈 스케줄링을 수행할 수 있습니다.즉, 라운드 로빈 순환에서 동일한 우선순위를 갖는 각 작업은 리소스 블록 조건에 도달할 때까지 실행되도록 허용될 수 있으며 그 후에만 순환에서 다음 작업이 실행됩니다.즉, 우선순위가 동일한 작업이 존재할 경우 일정을 재조정하는 지점은 다음과 같습니다. ~ 아니다 시간 선점.

위의 아이디어는 Wind River의 VxWorks 커널의 경우 실제로 구현되었습니다.우선순위 체계 내에서 각 우선순위의 작업은 라운드 로빈을 실행하지만 커널에서 해당 기능을 특별히 활성화하지 않으면 타임슬라이싱되지 않습니다.이러한 유연성이 필요한 이유는 제한된 시간 내에 블록으로 실행되는 것으로 이미 알려진 작업을 타임슬라이싱하는 오버헤드를 피하기 위해서입니다.

따라서 타임슬라이싱 기반 스케줄링은 라운드 로빈 스케줄링을 의미하지만 라운드 로빈 스케줄링에는 동일한 시간 기반 타임슬라이싱이 필요하지 않습니다.

의견.우리는 두 가지 메커니즘을 하나로 얽어매고 있는 것 같습니다.OP의 원래 주장 "멀티태스킹 운영 체제 컨텍스트에서"만 가정하면

1 - 라운드 로빈 스케줄러는 항상 순환 대기열의 다음 항목을 예약합니다.

2 - 스케줄러가 스케줄링을 수행하기 위해 제어권을 다시 얻는 방법은 별개이며 관련이 없습니다.

나는 2에서 가장 널리 사용되는 방법이 리소스를 기다리는 시간 분할/수익률이라는 점에 동의하지 않지만 앞서 언급한 것처럼 다른 방법도 있습니다.내가 착각하지 않는다면 최초의 Mac은 시분할을 활용하지 않았고 자발적인 항복/자원을 기다리는 항복을 사용했습니다(20년 이상 된 뇌 세포는 때때로 틀릴 수 있습니다).

라운드 로빈은 우선순위 없이 작업 간에 시간을 균등하게 나누는 간단한 스케줄링 알고리즘입니다.

예를 들어 5개의 프로세스가 실행 중인 경우 각 프로세스는 다른 프로세스의 실행이 허용되기 전에 단위 시간의 1/5 동안 실행되도록 허용됩니다.라운드 로빈은 일반적으로 OS에서 구현하기 쉽습니다.

실제로 선점형 스케줄링 및 라운드 로빈과 혼동되고 있습니다.Infact RR은 선점형 스케줄링의 일부입니다.

라운드 로빈 스케줄링은 퀀텀(CPU가 한 번에 모든 프로세스에 제공하는 최대 시간)이라고도 알려진 시간 공유를 기반으로 합니다.대기열에는 여러 프로세스(완료하는 데 서로 다른 시간이 필요함, 일명 버스트 시간)가 있고 CPU는 이를 모두 처리해야 하므로 프로세스 간을 계속 전환하여 양자 값을 기반으로 모든 프로세스에 동일한 시간을 제공합니다.이러한 유형의 스케줄링을 라운드 로빈 스케줄링이라고 합니다.라운드 로빈 스케줄링을 쉽게 이해하려면 이 간단한 비디오를 확인하십시오. https://www.youtube.com/watch?v=9hw-_qJ55K4

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top