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 버전에서도 코드 제대로 구현 못해줘서 똥줄타는중
이런거 구현하려면 보통 몇 시간 걸려???
사실 출력 예시는 내가 만든 프로그램 돌려서 나온 출력 결과물이고 실제 정답은 아닌데 CPU Utilization값은 실제 정답과 일치함
GPT로 하루 - dc App
생각보다 빠르게 만드네
출력예시 맞는거같은데?
0으로 된거 빼곤 다 맞아요