dmswn1004 / RoundRobin-Scheduling-RR

Round Robin Scheduling code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RR (Round Robin Scheduling)

개요

사용자로부터 스케줄링 할 프로세스의 정보를 input.txt 파일로 입력 받아, Round-Robin 알고리즘에 따른 프로세스의 스케줄링 결과를 프로세스 ID, 도착 시간, 서비스 시간, 종료 시간, 반환 시간, 정규화 된 반환 시간으로 출력하기 위함입니다.

Round-Robin

개념: 선점형 스케줄링 알고리즘으로, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위로 CPU를 할당하는 방식입니다. 보통 시간 단위는 10ms ~ 100ms 정도이고 시간 단위동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 됩니다. 문맥 전환의 오버헤드가 큰 반면, 응답시간이 짧아지는 장점이 있어 실시간 시스템에 유리하고, 할당되는 시간이 클 경우 비선점 FIFO기법과 같아지게 됩니다.

코드 설명

① 각각의 프로세스에 대한 정보를 구조체 프로세스에 저장 image

② 각각의 프로세스가 큐에 삽입된 후 종료되어 제거하는 알고리즘 image

③ 가장 오래 대기하고 있던 프로세스의 값 저장 ⅰ) 현재 시간과 도착 시간이 같을 때, g_process[i].put(프로세스 실행 판단)변수에 1값을 저장 ⅱ) 프로세스가 생성되고 클럭 인터럽트가 발생할 때, 아래 if문 실행 ⅲ) 수행 시간이 0이 아닌, 가장 오래 기다린 프로세스의 대기 시간보다 큰 대기 시간을 갖게 될 때, max_wait_index의 인덱스 값을 저장 image

④ 실행 후, 대기 시간을 0으로 초기화

image

⑤ 프로세스가 수행된 후 시간 할당량은 1이므로, 수행 시간에 -1값을 주어 할당된 시간이 지난 후의 종료를 위해 +1함 image

⑥ 프로세스의 상태가 대기 중이거나 실행되지 않았을 때 대기 시간을 +1함 image

⑦ 프로세스가 수행이 완료되어 종료되는 알고리즘 image

⑧ input.txt 파일을 읽어 각각의 숫자에 의미를 부여한 뒤, 파일의 마지막 줄이 0일 때 반복문이 끝나므로 파일을 닫음 image

⑨ 결과값 출력 image

실행 결과

image

About

Round Robin Scheduling code


Languages

Language:C 100.0%