round robin algorithm - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

round robin algorithm

ioriiori Posts: 59Member
round robin is a cpu scheduling algorithm. here is what i am trying to do. say example there are 2 processes p1 and p2 in the readyQueue contending for CPU. each process has an array of cpu bursts and io bursts for example:

process cpu burst io burst cpu burst
------- --------- -------- ---------
p1 5 1 4
p2 12 10 3

and a timequantum/timeslice of 4.

please check this link http://www.daniweb.com/techtalkforums/showthread.php?t=7832 to see what i am talking about.

here is what i have now for the alogrithm, plz check and let me know if its correct or not:

struct PCB
{
int cpuBurst[20];
int ioBurst[20];
int totalCPUBursts;
int totalIOBursts;

int waitTime;
int completionTime;
int arrivalTime;
int startTime;

};


[code]
ioTime=0;
cpuTime=0
put all processes on readyQueue as they come in
currentCPUBurst=1;
currentIOBurst=1;
while not done
if readyQ is not empty
dequeue the process from readyQueue
read totalCPUBursts
if cpuBurst[currentCPUBurst]>=timeslice
cpuTime=ioTime+cpuTime+timeslice
cpuBurst[currentCPUBurst]=cpuBurst[currentCPUBurst]-timeslice
enqueue this process to readyQueue
else if cpuBurst[currentCPUBurst]=timeslice
ioTime=cpuTime+ioTime+timeslice
ioBurst[currentIOBurst]=ioBurst[currentIOBurst]-timeslice
enqueue this process to readyQueue
else if ioBurst[currentIOBurst]<timeslice
ioTime=cpuTime+ioTime+ioBurst[currentIOBurst]
ioBurst[currentIOBurst]=0
currentIOBurst++;
enqueue this process to ready Queue

if readyQ and blockedQ are empty
all process done so exit while
loop

[/code]
Sign In or Register to comment.