cooperative preemptive schedule

agnusdei·2024년 11월 8일
0

Hardware & Software

목록 보기
108/136

협력적(Cooperative) 스케줄링과 선점형(Preemptive) 스케줄링은 CPU를 여러 프로세스나 스레드가 사용하는 방식을 결정하는 스케줄링 유형입니다. 이 둘은 CPU 사용을 중단하고 다른 프로세스에 CPU를 넘기는 조건에 따라 구분됩니다.

  1. 협력적(Cooperative) 스케줄링

    • 정의: 협력적 스케줄링은 프로세스가 스스로 CPU 사용을 포기하는 방식입니다. 즉, 프로세스가 CPU를 자발적으로 반납하기 전까지는 다른 프로세스가 CPU를 사용할 수 없습니다.
    • 작동 방식: 프로세스가 CPU를 사용 중일 때, 시스템은 이 프로세스가 완료되거나, 입출력 작업 등으로 대기 상태로 전환되기를 기다립니다. 이 경우에만 다른 프로세스가 CPU를 사용할 수 있습니다.
    • 장점: 문맥 전환(Context Switching) 횟수가 줄어들기 때문에 오버헤드가 적고, 시스템 자원 사용 효율이 높습니다.
    • 단점: CPU를 오래 사용하는 작업이 CPU를 반납하지 않으면, 다른 프로세스는 CPU를 사용할 수 없어 시스템이 멈추는 스타베이션(Starvation) 또는 응답 지연 문제가 발생할 수 있습니다.

예시

프로세스 A가 CPU를 사용 중인 상황에서, 다른 프로세스 B가 CPU를 사용하려 해도 A가 스스로 CPU를 반납할 때까지 기다려야 합니다.

  1. 선점형(Preemptive) 스케줄링

    • 정의: 선점형 스케줄링은 시스템이 강제로 CPU를 특정 프로세스에서 빼앗아 다른 프로세스에 할당하는 방식입니다. 여기서는 운영체제가 우선순위나 시간 제한 등 다양한 기준으로 현재 프로세스를 중단하고, 새로운 프로세스에 CPU를 할당할 수 있습니다.
    • 작동 방식: 프로세스가 CPU를 사용 중일 때도, 운영체제가 일정 시간마다 우선순위를 확인하고 더 중요한 작업이 있으면 CPU를 강제로 넘깁니다. 이때 현재 작업은 나중에 다시 실행됩니다.
    • 장점: 특정 프로세스가 CPU를 독점할 수 없으므로, 긴급 작업이나 우선순위가 높은 작업이 빠르게 처리됩니다. 시스템 응답성이 높아지며 실시간 시스템에도 적합합니다.
    • 단점: CPU를 강제로 빼앗고 다른 프로세스에 할당할 때마다 문맥 전환 오버헤드가 발생하여 시스템 성능에 영향을 줄 수 있습니다.

예시

프로세스 A가 CPU를 사용 중일 때, 더 높은 우선순위의 프로세스 B가 도착하면 운영체제는 프로세스 A를 멈추고 CPU를 B에 할당합니다.

요약 비교

1.	협력적 스케줄링
•	프로세스가 스스로 CPU를 반납할 때까지 기다림.
•	오버헤드가 적고, 효율적인 자원 사용 가능.
•	CPU 독점 시 시스템 응답 지연 문제 발생 가능.
2.	선점형 스케줄링
•	운영체제가 강제로 CPU를 다른 프로세스에 할당할 수 있음.
•	시스템 응답성이 높고, 긴급 작업 처리에 유리.
•	잦은 문맥 전환으로 오버헤드 증가 가능.

결론

협력적 스케줄링은 자발적인 CPU 반납이 필요한 환경에 적합하고, 선점형 스케줄링은 시스템의 응답성을 우선으로 할 때 유리합니다.

0개의 댓글