pid, arrival_time, burst_time의 쌍이 주어집니다.

프로세스 id가 pid인 프로그램들은 각각 arrival_time(단위는 초) 시간에 실행이 준비됩니다.

이 프로그램은 burst_time 시간만큼 실행이 되어야 실행이 완료됩니다.


이 많은 프로그램들을 실행하는데에 쓸 수 있는 유명한 알고리즘들이 있습니다.

싱글코어 cpu에서 동작하는 round robin 알고리즘을 쓸겁니다.

코드를 작성하는데 다른 알고리즘까지 쉽게 작성할 수 있도록 확장성, 다형성 등을 이용하여 효율적으로 코딩해야합니다.

round robin 알고리즘이란? time quantum(여기에서는 2초)만큼 실행하고 다음 프로그램을 실행시킬 준비를 한 뒤(0.1초 소요) 준비 큐에 있는 다른 프로그램을 실행합니다.

실행할 프로그램을 준비 큐에 넣고 실행할때마다 큐에서 디큐해서 실행합니다.

큐에는 중복되는 프로그램이 없어야 합니다.


작성 언어 : c언어


입력 예시:

task_events = [{"pid" : 1, "arrival_time" : 0., "burst_time" : 10.},

               {"pid" : 2, "arrival_time" : 0., "burst_time" : 9.},

               {"pid" : 3, "arrival_time" : 3., "burst_time" : 5.},

               {"pid" : 4, "arrival_time" : 7., "burst_time" : 4.},

               {"pid" : 5, "arrival_time" : 10., "burst_time" : 6.},

               {"pid" : 6, "arrival_time" : 10., "burst_time" : 7.}]


round robin 스케줄러의 출력 예시:

| 1 | 1 | 2 | 2 | 1 | 1 | 3 | 3 | 2 | 2 | 1 | 1 | 4 | 4 | 3 | 3 | 5 | 5 | 6 | 6 | 2 | 2 | 1 | 1 | 4 | 4 | 3 | 5 | 5 | 6 | 6 | 2 | 2 | 1 | 1 | 5 | 5 | 6 | 6 | 2 | 6 |

Average Waiting Time = 0

Average Turnaround Time = 0

Average Response Time = 0

CPU Utilization = 94.91%


구현사항의 매우 일부분임.

과제 내용이고 나도 아직 미완성인데 지금 6시간 했나?
o1-preview 버전에서도 코드 제대로 구현 못해줘서 똥줄타는중

이런거 구현하려면 보통 몇 시간 걸려???