왜 공동 일정을 선택하지 않습니까?

왜 공동 일정을 선택하지 않습니까?

운영 체제 개념

CPU 스케줄링 결정은 다음 네 가지 상황에서 발생할 수 있습니다.

  1. 프로세스가 실행 상태에서 대기 상태로 전환되는 경우(예: I/O 요청 또는 자식 프로세스를 종료하기 위한 wait() 호출로 인해)

  2. 프로세스가 실행 중 상태에서 준비 상태로 전환되는 경우(예: 인터럽트가 발생하는 경우)

  3. 프로세스가 대기에서 준비로 전환되는 경우(예: I/O가 완료되는 경우)

  4. 프로세스가 종료될 때

사례 1과 사례 4의 경우일정 선택 불가. 실행을 위해 새 프로세스(준비 큐에 존재하는 경우)를 선택해야 합니다. 하나 있다 선택하다다만, 2번과 3번의 경우.

스케줄링이 사례 1과 4에서만 발생하는 경우 스케줄링 방식은 비선점적 또는 협력적이라고 ​​말합니다. 그렇지 않으면 선제공격이 될 것이다.

"일정 선택"은(는) 무슨 뜻인가요?

협력적 스케줄링을 선택하지 않았는데 선점적 스케줄링이 가능한 이유는 무엇입니까?

제 생각엔 스케줄링이 선제적이든 아니든 상관없이,

  • 실행 중인 프로세스는 항상 CPU를 포기하고(따라서 선택의 여지가 없음)

  • 실행할 준비가 된 대기열에서 프로세스를 선택하는 선택은 항상 가능합니다.

감사해요.

답변1

기사에는 다른 선택의 여지가 없을 때,

실행을 위해 새 프로세스(준비 큐에 존재하는 경우)를 선택해야 합니다.

나는 이것이 논의 중인 선택이 다음에 어떤 프로세스가 예정되어 있는지 직접적으로 포함하는 것이 아니라 오히려 검토 중인 프로세스가 예정될 수 있는지 여부를 의미한다는 의미로 받아들입니다. 1번과 4번의 경우에는 불가능합니다. 2번과 3번의 경우에는 그렇습니다.

여기서 사용된 협동적 대 선점형이라는 용어는 나에게 이상하게 보입니다. 공동 일정은 일반적으로 프로세스가 자발적으로 제어를 포기한다는 것을 의미하지만 "차단된" 및 "종료된"을 공동 일정으로 해석하는 것은 나에게는 무리한 것 같습니다.

답변2

사례 1과 4의 경우 프로세스에 수행할 작업이 없으므로(사례 1에서는 아직, 사례 4에서는 아직 아님) 스케줄러가 실행될 수 없습니다. 즉, 선택의 여지가 없습니다: 실행하거나 실행하지 않음...항상 실행되지 않습니다. 2번과 3번의 경우 스케줄러가 "이 프로세스를 실행할지 아니면 다른 프로세스를 실행할지"를 결정해야 하기 때문에 선택이 가능합니다. 그러나 선점형 스케줄러만이 그러한 선택을 할 수 있으며 협력 스케줄러는 실행 중인 프로세스가 상태 1이 될 때까지 기다립니다. (즉, i/o 또는 항복을 기다리는 중) 또는 4(성공적으로 종료되었거나 오류로 종료됨)

관련 정보