Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CPU 스케쥴링의 종류 #6

Open
yeonjaee opened this issue Jun 23, 2023 · 1 comment
Open

CPU 스케쥴링의 종류 #6

yeonjaee opened this issue Jun 23, 2023 · 1 comment

Comments

@yeonjaee
Copy link
Owner

No description provided.

@yeonjaee
Copy link
Owner Author

CPU 스케줄링은 컴퓨터 시스템에서 여러 프로세스가 CPU를 사용할 수 있는 순서를 정하는 방법을 의미함.

  1. First-Come, First-Served (FCFS) 스케줄링: 이 방법은 가장 간단하며, 처음 도착한 프로세스부터 순서대로 CPU를 할당합니다. FCFS는 먼저 도착한 프로세스가 CPU를 많이 사용하면 다른 프로세스가 오랫동안 기다려야하는 'convoy effect'를 발생시킬 수 있습니다.

  2. Shortest-Job-Next (SJN) 또는 Shortest Job First (SJF) 스케줄링: 이 방법은 다음에 실행할 프로세스를 선택할 때 가장 짧은 실행 시간을 가진 프로세스를 선택합니다. SJN 스케줄링은 평균 대기 시간을 최소화하지만, 실행 시간을 미리 알 수 없는 경우에는 사용할 수 없습니다.

  3. Priority Scheduling: 이 방법은 각 프로세스에 우선순위를 할당하고, 가장 높은 우선순위를 가진 프로세스부터 CPU를 할당합니다. 하지만 낮은 우선순위의 프로세스가 계속해서 대기하게 되는 'starvation' 문제가 발생할 수 있습니다.

  4. Round Robin (RR) 스케줄링: RR 스케줄링은 각 프로세스에 일정한 시간 (time quantum 또는 time slice)을 할당하고, 이 시간이 끝나면 다음 프로세스에게 CPU를 넘겨줍니다. 이 방법은 모든 프로세스가 공정하게 CPU를 사용할 수 있지만, time quantum의 크기를 어떻게 설정하느냐에 따라 성능이 크게 달라질 수 있습니다.

  5. Multilevel Queue Scheduling: 이 방법은 프로세스를 여러 개의 큐에 나누고, 각 큐에 다른 스케줄링 알고리즘을 적용합니다. 예를 들어, 시스템 프로세스를 위한 큐는 높은 우선순위를 가지고 RR 스케줄링을 적용하고, 사용자 프로세스를 위한 큐는 낮은 우선순위를 가지고 FCFS 스케줄링을 적용하는 식입니다.

6.Multilevel Feedback Queue Scheduling: 이 방법은 Multilevel Queue Scheduling을 확장한 것으로, 프로세스가 다른 큐로 이동할 수 있도록 합니다. 예를 들어, 프로세스가 할당된 시간 (time quantum) 동안 실행을 완료하지 못하면 더 낮은 우선순위의 큐로 이동하게 됩니다. 이 방법은 프로세스의 행동에 따라 동적으로 우선순위를 변경할 수 있어 매우 유연하지만, 구현이 복잡합니다.

  1. Fair Share Scheduling: 이 방법은 사용자나 그룹별로 CPU의 사용 비율을 분배하여 시스템 자원을 공정하게 나누려는 목표를 가지고 있습니다. 각 사용자 또는 그룹에 대해 CPU 사용 시간의 제한을 두어, 특정 사용자나 그룹이 자원을 독점하는 것을 방지합니다.

각 CPU 스케줄링 알고리즘은 장단점과 적합한 사용 경우가 있으며, 실제 시스템에서는 여러 알고리즘을 혼합하여 사용하기도 합니다. 예를 들어, 실시간 시스템에서는 데드라인이 있는 프로세스를 먼저 스케줄링하는 실시간 스케줄링 알고리즘을 사용할 수 있습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant