Advertisement
Guest User

CPU.cpp

a guest
Nov 13th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.68 KB | None | 0 0
  1. #include "fila.cpp"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. class CPU {
  6.  
  7. private:
  8.     int contador;
  9. public:
  10.     CPU();
  11.     Fila iniciaCPU(Fila fila, Fila fila2, Fila fila3, Fila fila4);
  12. };
  13.  
  14. CPU::CPU() {
  15.     contador = 0;
  16. }
  17.  
  18.  
  19. Fila CPU::iniciaCPU(Fila fila, Fila fila2, Fila fila3, Fila fila4){
  20.  
  21.     Processo processo = Processo("0", "0", "0", "0");
  22.  
  23.     int inicio = 0;
  24.     int quantum = 0;
  25.     Fila fila_exec = Fila(0,fila.quantum);
  26.     Fila *fila_aux = &fila;
  27.     char continuar;
  28.  
  29.     std::list<Processo>::iterator it;
  30.  
  31.     while(((((((fila_exec.lista_processos.size()>0) || (processo.tempo_exec>0))
  32.               || (fila_aux->lista_processos.size()>0)) || (fila2.lista_processos.size()>0))
  33.             || (fila3.lista_processos.size()>0)) || (fila4.lista_processos.size()>0))){
  34.  
  35.         if(contador>0){
  36.             cout<<"\n\nContinuar? [S] [N]: ";
  37.             cin>>continuar;
  38.         }
  39.  
  40.         if((continuar == 's' or continuar=='S') or contador==0){
  41.  
  42.             if(fila_aux->lista_processos.size()>0){
  43.                 if(fila_aux->primeiro().chegada <= contador){
  44.                     if(!fila_exec.has(fila_aux->primeiro())){
  45.                         fila_exec.insereProcesso(fila_aux->primeiro());
  46.                     }
  47.                     it = fila_aux->lista_processos.begin();
  48.                     fila_aux->lista_processos.erase(it);
  49.                 }
  50.             }
  51.  
  52.             if(processo.nome==0){
  53.                 if(fila_exec.lista_processos.size()>0){
  54.                     processo = fila_exec.primeiro();
  55.                     it = fila_exec.lista_processos.begin();
  56.                     fila_exec.lista_processos.erase(it);
  57.                     inicio = contador;
  58.                 }
  59.             }
  60.             else{
  61.                 if(contador-inicio >= quantum){
  62.                     if(processo.tempo_exec>0){
  63.                         if(fila_exec.lista_processos.size()>0){
  64.                             if(processo.fila==1) {
  65.                                 processo.fila=2;
  66.                                 fila2.insereProcesso(processo);
  67.                             }
  68.                             else{
  69.                                 if(processo.fila==2) {
  70.                                     processo.fila=3;
  71.                                     fila3.insereProcesso(processo);
  72.                                 }
  73.                                 else{
  74.                                     if(processo.fila==3){
  75.                                         processo.fila=4;
  76.                                         fila4.insereProcesso(processo);
  77.                                     }
  78.                                 }
  79.                             }
  80.                             processo = fila_exec.primeiro();
  81.                             it = fila_exec.lista_processos.begin();
  82.                             fila_exec.lista_processos.erase(it);
  83.                         }
  84.                     }
  85.                     inicio=contador;
  86.                 }
  87.             }
  88.  
  89.             if(processo.tempo_exec>0){
  90.                 processo.tempo_exec--;
  91.             } else {
  92.                 if (fila_exec.lista_processos.size() > 0) {
  93.                     processo = fila_exec.primeiro();
  94.                     it = fila_exec.lista_processos.begin();
  95.                     fila_exec.lista_processos.erase(it);
  96.                 }
  97.             }
  98.  
  99.             if(processo.fila==1){
  100.                 quantum = fila.quantum;
  101.                 it = fila.lista_processos.begin();
  102.                 if((*it).nome == processo.nome){
  103.                     fila.lista_processos.erase(it);
  104.                 }
  105.             }else{
  106.                 if(processo.fila==2){
  107.                     quantum = fila2.quantum;
  108.                     it = fila2.lista_processos.begin();
  109.                     if((*it).nome == processo.nome){
  110.                         fila2.lista_processos.erase(it);
  111.                     }
  112.                 }else{
  113.                     if(processo.fila==3){
  114.                         quantum = fila3.quantum;
  115.                         it = fila3.lista_processos.begin();
  116.                         if((*it).nome == processo.nome){
  117.                             fila3.lista_processos.erase(it);
  118.                         }
  119.                     }else{
  120.                         if(processo.fila==4){
  121.                             quantum=fila4.quantum;
  122.                             it = fila4.lista_processos.begin();
  123.                             if((*it).nome == processo.nome){
  124.                                 fila4.lista_processos.erase(it);
  125.                             }
  126.                         }else{
  127.                             quantum=1;
  128.                         }
  129.                     }
  130.                 }
  131.             }
  132.  
  133.             if(fila_aux->lista_processos.size()==0) {
  134.                 if (fila2.lista_processos.size() > 0) {
  135.                     fila_aux = &fila2;
  136.                 }else {
  137.                     if (fila3.lista_processos.size() > 0) {
  138.                         fila_aux = &fila3;
  139.                     }else{
  140.                         if (fila4.lista_processos.size() > 0) {
  141.                             fila_aux = &fila4;
  142.                         }
  143.                     }
  144.                 }
  145.             }
  146.  
  147.             cout<<"\nContador: "<<contador;
  148.             cout<<"     Quantum: "<<quantum;
  149.             cout<<"     Processo: "<<processo.nome;
  150.             cout<<"\n------------------------------------------";
  151.             cout<<"\nFila1: "<<fila.toString();
  152.             cout<<"\nFila2: "<<fila2.toString();
  153.             cout<<"\nFila3: "<<fila3.toString();
  154.             cout<<"\nFila4: "<<fila4.toString();
  155.  
  156.             contador++;
  157.         }
  158.     }
  159.  
  160.     cout<<"Encerrado";
  161.     return fila_exec;
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement