Advertisement
jovanovski

ОС Лаб7

May 7th, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.99 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Collections;
  3. import java.util.LinkedList;
  4.  
  5. class process implements Comparable<process>{
  6.     String ime;
  7.     int vreme;
  8.     int doagja;
  9.     boolean gotov = false;
  10.     boolean staven = false;
  11.    
  12.     process(String ime, int vreme, int doagja){
  13.         this.ime = ime;
  14.         this.vreme = vreme;
  15.         this.doagja = doagja;
  16.     }
  17.  
  18.  
  19.     @Override
  20.     public int compareTo(process o) {
  21.         if(this.vreme > o.vreme) return 1;
  22.         else if(this.vreme < o.vreme) return -1;
  23.         else
  24.         return 0;
  25.     }
  26.    
  27.    
  28.    
  29. }
  30.  
  31. public class os {
  32.  
  33.     public static void main(String[] args) {
  34.        
  35.         LinkedList<process> lista = new LinkedList<process>();
  36.        
  37.         lista.add(new process("proc 1", 3, 0));
  38.        
  39.         lista.add(new process("proc 2", 4, 0));
  40.        
  41.         lista.add(new process("proc 3", 5, 0));
  42.        
  43.         lista.add(new process("proc 4", 1, 1));
  44.  
  45.         srtn(lista);
  46.        
  47.         lista = new LinkedList<process>();
  48.        
  49.         lista.add(new process("proc 1", 3, 0));
  50.        
  51.         lista.add(new process("proc 2", 4, 0));
  52.        
  53.         lista.add(new process("proc 3", 5, 0));
  54.        
  55.         lista.add(new process("proc 4", 1, 1));
  56.        
  57.         rr(lista);
  58.  
  59.     }
  60.    
  61.     public static void srtn(LinkedList<process> lista){
  62.         System.out.println("SRTN");
  63.         LinkedList<process> tmp = new LinkedList<process>();
  64.         int gotovi = 0;
  65.         int sega = 0;
  66.         int cel = lista.size();
  67.        
  68.         while(gotovi < cel){
  69.         tmp = new LinkedList<process>();
  70.         for(int i=0;i<lista.size();i++){
  71.             if(!lista.get(i).gotov && sega>=lista.get(i).doagja){
  72.                 tmp.add(lista.get(i));
  73.                
  74.             }
  75.         }
  76.  
  77.        
  78.         if(!tmp.isEmpty()){
  79.  
  80.         Collections.sort(tmp);
  81.         String najm = tmp.get(0).ime;
  82.         System.out.println(najm);
  83.        
  84.         for(int i=0;i<lista.size();i++){
  85.             if(lista.get(i).ime.equals(najm)){
  86.                 lista.get(i).vreme--;
  87.                 if (lista.get(i).vreme==0)
  88.                     {
  89.                     lista.get(i).gotov=true;
  90.                     gotovi++;
  91.                    
  92.                     }
  93.             }
  94.         }
  95.         }
  96.        
  97.         sega++;
  98.  
  99.         }
  100.     }
  101.    
  102.     public static void rr(LinkedList<process> lista){
  103.         int kvantum = 1;
  104.         System.out.println();
  105.         System.out.println();
  106.         System.out.println("RR so kvantum " + kvantum);
  107.  
  108.         int gotovi = 0;
  109.         int sega = 0;
  110.         int cel = lista.size();
  111.         LinkedList<process> tmp;
  112.        
  113.         tmp = new LinkedList<process>();
  114.         for(int i=0;i<lista.size();i++){
  115.             if(!lista.get(i).gotov && !lista.get(i).staven && sega>=lista.get(i).doagja){
  116.                 lista.get(i).staven = true;
  117.                 tmp.add(lista.get(i));
  118.                 System.out.println("dodadov " + lista.get(i).ime);
  119.             }
  120.         }
  121.        
  122.  
  123.         while(gotovi<cel){
  124.            
  125.             for(int i=0;i<lista.size();i++){
  126.                 if(!lista.get(i).gotov && !lista.get(i).staven && sega>=lista.get(i).doagja){
  127.                     lista.get(i).staven = true;
  128.                     tmp.add(lista.get(i));
  129.                     System.out.println("dodadov " + lista.get(i).ime);
  130.                 }
  131.             }
  132.            
  133.                 if(!tmp.isEmpty()){
  134.                 System.out.println(tmp.get(0).ime);
  135.                 tmp.get(0).vreme-=kvantum;
  136.                 if(tmp.get(0).vreme<=0)
  137.                     {tmp.remove(tmp.get(0));
  138.                     gotovi++;
  139.                     }
  140.                 else{
  141.                     process temp = tmp.get(0);
  142.                     tmp.remove(tmp.get(0));
  143.                     tmp.add(temp);
  144.                 }
  145.                 }
  146.            
  147.            
  148.             sega++;
  149.         }
  150.     }
  151.    
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement