협력 멀티태스킹

Cooperative multitasking

비선호적 멀티태스킹이라고도 하는 협동 멀티태스킹운영체제가 실행 인 프로세스에서 다른 프로세스로 컨텍스트 스위치를 시작하지 않는 컴퓨터 멀티태스킹의 한 스타일이다.대신, 여러 응용프로그램을 동시에 실행하기 위해, 프로세스는 주기적으로 또는 유휴 상태나 논리적으로 차단되었을 때 자발적으로 제어권을 부여한다.스케줄링 체계가 작동하려면 모든 프로그램이 협력해야 하기 때문에 이러한 유형의 멀티태스킹을 협력이라고 한다.

이 체계에서 운영체제의 프로세스 스케줄러프로세스를 시작하고 그들이 자발적으로 제어권을 되돌릴 수 있도록 하는 역할로 한정되는 협력 스케줄러로 알려져 있다.[1][2]

사용법

현대의 대형 시스템에서는 거의 사용되지 않지만, 메모리 제약 임베디드 시스템에서는 널리 사용되고 있으며, CICSJES2 서브시스템과 같은 특정 애플리케이션에서도 널리 사용되고 있다.협동 멀티태스킹은 윈도우 95윈도우 NT 이전과 클래식한 맥 OS에 의해 마이크로소프트 윈도우가 채택한 16비트 응용 프로그램의 일차적인 스케줄링 방식이었다.Windows 9x에서는 16비트 레거시 애플리케이션에 대해 사전 예방적 멀티태스킹과 Power를 사용Leopard 이전의 PC 버전 Mac OS X는 클래식한 어플리케이션에 사용되었다.[1]네트워크 지향 운영 체제인 NetWare는 NetWare 6.5까지 협력 멀티태스킹을 사용했다.RISC OS 시스템에서는 여전히 공동 멀티태스킹이 사용되고 있다.[3]

공동 멀티태스킹은 JavaScript나 Python과 같은 언어로 사용되며, 이 언어는 런타임에 단일 스레드 이벤트 루프를 특징으로 한다.

문제

협력적으로 여러 작업을 수행하는 시스템은 시스템의 다른 프로세스에 대한 시간을 정기적으로 포기하는 각 프로세스에 의존하기 때문에, 설계가 미흡한 프로그램 하나가 광범위한 계산을 수행하거나 대기 시간을 낭비하여 CPU 자체의 모든 시간을 소비할 수 있다. 둘 다 전체 시스템을 중단시킬 수 있다.서버 환경에서 이는 전체 환경을 허용할 수 없을 정도로 취약하게 만드는 위험이다.[1]

이와는 대조적으로, 선제적인 멀티태스킹은 응용프로그램을 방해하고 응용 프로그램의 통제권 밖의 다른 프로세스에 대한 통제권을 준다.

시스템 중단 가능성은 종종 하드웨어에서 구현되는 감시 타이머를 사용함으로써 완화될 수 있다. 이는 일반적으로 하드웨어 재설정을 유발한다.

협동 멀티태스킹은 애플리케이션 실행이 프로세스 스케줄러에 의해 예기치 않게 중단되지 않기 때문에 훨씬 더 간단한 애플리케이션 구현을 가능하게 한다. 예를 들어, 애플리케이션 내부의 다양한 기능들재입력될 필요가 없다.[2]

참고 항목

참조

  1. ^ a b c "Definition of non-preemptive multitasking". pcmag.com. Retrieved August 15, 2015.
  2. ^ a b Joe Bartel (November 5, 2011). "Non-Preemptive Multitasking" (PDF). classiccmp.org. Retrieved August 15, 2015.
  3. ^ "Preemptive multitasking". riscos.info. November 2, 2009. Retrieved August 15, 2015.