코스케딩

Coscheduling

코스체결은 관련 프로세스스케줄링하는 동시 시스템이 여러 프로세서에서 동시에(병렬로) 실행되는 것을 원칙으로 한다.이를 실현하기 위한 다양한 구체적인 구현이 있다.

애플리케이션이 긴밀하게 협력하는 프로세스 모음으로 구성되어 있고, 일부 프로세스만 실행 예정이 되어 있는 경우, 실행 프로세스는 실행되지 않는 프로세스와 통신을 시도하여 차단할 수 있다.결국 다른 프로세스들은 실행을 위해 일정이 잡히겠지만, 이 때쯤에는 상황이 역전되어 이러한 프로세스들이 다른 프로세스들과의 상호작용을 기다리는 것 또한 차단될 수 있다.결과적으로, 애플리케이션은 시간 슬라이스당 한 개의 프로세스상호 작용 속도로 진행되며, 처리량이 낮고 대기 시간이 길어질 것이다.

실행

코스케일링은 두 가지 아이디어로 구성된다.

  • 관련 그룹의 프로세스를 스케줄링할 때는 효율적으로 통신할 수 있도록 모든 프로세스를 실행하도록 스케줄링하십시오.
  • 그룹의 다른 프로세스와 통신하는 동안 그룹의 프로세스가 차단되면 해당 프로세서에서 프로세스를 제거하지 마십시오.대신, 그것의 상태를 곧 응답을 받을 것이라는 가정 하에 잠시 동안 프로세서에 적재된 상태로 두십시오.이 시간이 경과해도 프로세스를 실행할 수 없으면 장시간 절전 모드로 전환하고 프로세서를 다시 예약하십시오.

일부 공동 스케줄링 기법에서는 코즈 스케줄링된 나머지 세트와 동시에 실행되지 않는 프로세스의 단편적인 부분을 보여준다.이러한 단편들의 발생은 대개 이러한 알고리즘에 의해 최소화된다.갱 스케줄링은 단편적인 것을 완전히 허용하지 않는 더 엄격한 협찬 일정의 변형이다.

공동 스케줄링 유형

연구자들은 세 가지 유형의 코스케일링을 분류했다: 명시적 코스케일링, 로컬 스케줄링, 암묵적 또는 동적 코스케일링.[1]

명시적 코스케일링은 모든 처리가 실제로 동시에 이루어져야 하며, 일반적으로 모든 프로세서에 걸친 글로벌 스케줄링에 의해 구현된다.특정 알고리즘은 갱 스케줄링이라고 알려져 있다.

로컬 코스케일링은 개별 프로세서가 독립적으로 처리를 예약할 수 있도록 한다.

동적(또는 암묵적) 코스체결은 개별 프로세서가 독립적으로 처리를 예약할 수 있지만 다른 프로세서와 협력하여 일정을 결정하는 코스체결 방식의 일종이다.

역사

코스케일링(coscheduling)이라는 용어는 오스터후트(1982년)에 의해 도입되었다.원래 정의는 병렬 프로그램이 진행되려면 프로세스 작업 세트를 코스케일링(동시 실행 예정)해야 한다는 것이다.

참고 항목

메모들

  1. ^ 파브리치오 페트리니, 우춘펑.병렬 알고리즘 및 애플리케이션 저널, 버퍼링된 코스케일링을 통한 리소스 활용도 향상, 2000
  • Ousterhout, J. K. (1982). "Scheduling Techniques for Concurrent Systems" (PDF). Proceedings of Third International Conference on Distributed Computing Systems: 22–30.