Advertisement
Robert_JR

Round Robin

Dec 14th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.10 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. echo "Enter number of process"
  4. read n
  5.  
  6. echo "Enter process, arrival time and burst time"
  7. for (( i = 1; i <= n; i++ ))
  8. do
  9.     read p[$i]
  10.     read at[$i]
  11.     read bt[$i]
  12. done
  13.  
  14. echo "Enter time quantam value:"
  15. read TQ
  16.  
  17. for (( i = 1; i < n; i++))
  18. do
  19.     for (( j = 1; j <= n - i; j++ ))
  20.     do
  21.         if (( at[j] > at[j+1] ))
  22.         then
  23.             temp=${at[$j]}
  24.             at[j]=${at[$j+1]}
  25.             at[$j+1]=$temp
  26.            
  27.             temp=${p[$j]}
  28.             p[j]=${p[$j+1]}
  29.             p[$j+1]=$temp
  30.            
  31.             temp=${bt[$j]}
  32.             bt[j]=${bt[$j+1]}
  33.             bt[$j+1]=$temp
  34.         fi
  35.     done
  36. done
  37.  
  38. for (( i = 1; i <= n; i++ ))
  39. do
  40.     echo "${p[$i]} ${at[$i]} ${bt[$i]}"
  41.     echo
  42. done
  43.  
  44. point=1
  45. pos=1
  46. Q[1]=1
  47. gantt=0
  48.  
  49. for (( i = 1; i <= n; i++ ))
  50. do
  51.     mark[$i]=0
  52. done
  53.  
  54. mark[1]=1
  55.  
  56.  
  57. for (( i = 1; ; i++ ))
  58. do
  59.     if (( bt[Q[point]] >= TQ ))
  60.     then
  61.         gantt=`expr $gantt + $TQ`
  62.         bt[${Q[$point]}]=`expr ${bt[${Q[$point]}]} - $TQ`
  63.        
  64.         for (( j = 1; j <= n; j++ ))
  65.         do
  66.             if (( at[p[j]] <= gantt && mark[j] == 0 ))
  67.             then
  68.                 pos=`expr $pos + 1`
  69.                 Q[$pos]=$j
  70.                 mark[${Q[$pos]}]=1
  71.             fi
  72.         done
  73.        
  74.         if (( bt[Q[point]] > 0 ))
  75.         then
  76.             pos=`expr $pos + 1`  
  77.             Q[$pos]=${Q[$point]}
  78.         fi
  79.         point=`expr $point + 1`
  80.     else
  81.         gantt=`expr $gantt + ${bt[${Q[$point]}]}`
  82.         bt[${Q[$point]}]=0
  83.        
  84.         for (( j = 1; j <= n; j++ ))
  85.         do
  86.             if (( at[p[j]] <= gantt && mark[j] != 0 ))
  87.             then
  88.                 pos=`expr $pos + 1`
  89.                 Q[$pos]=$j
  90.                 mark[${Q[$pos]}]=1
  91.             fi
  92.         done
  93.         point=`expr $point + 1`
  94.     fi
  95.    
  96.     flag=0
  97.    
  98.     for (( k = 1; k <= n; k++ ))
  99.     do
  100.         if (( bt[k] != 0 ))
  101.         then
  102.             flag=1
  103.         fi
  104.     done
  105.    
  106.     if (( flag == 0 ))
  107.     then
  108.         break
  109.     fi
  110.    
  111. done
  112.  
  113. echo "Final Gantt char value: $gantt"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement