Código
la interrupcion se da a los 3000 lo cual si funciona, se interrumpe pero como es alternancia estricta regresa hacia la seccion_critica porque no ha terminado, en teoria la siguiente seria en 6000, pero despues de la primera interrupcion se vuelve a llamar a la sección critica del proceso 1 pero el ciclo for ya no hace nada solo se inicia en 3000 pero ya no sigue contando, aunque p1.duracion sigue siendo 7000, agradecere sus aportes
struct PCB{ int id; //id del proceso char nombre[16];//nombre int tareas_iniciales; //duracion de las tareas iniciales int duracion; //cuanto durara el proceso int quantum; //contador de interrupciones int acumulador;//valor antes de la interrupcion }; PCB p1; PCB p2; void crear_procesos(){ /***********************************/ p1.id=1; // RELLENA DATOS A LAS strcpy(p1.nombre,"PWRDVD"); // ESTRUCTURAS p1.duracion=7000; // DE TIPO PCB p1.quantum=0; // p1.acumulador=0; // // p1.tareas_iniciales=2000; // P1 ES PARA PROCESO1 // p2.id=2; // strcpy(p2.nombre,"DVDRIPPER");// P2 ES PARA PROCESO2 p2.duracion=7000; // p2.quantum=0; // p2.acumulador=0; // // p2.tareas_iniciales=2000; /*****************************/ } int seccion_critica(int id){ cout<<"\nSeccion Critica: Proceso "<<id; if(id==1){ for(int i=p1.acumulador; i<=p1.duracion; i=i+1000){ p1.acumulador=i; if(i==3000||i==6000||i==9000){ return 1; /*** ENTRO AL BUCLE DEL QUANTUM ***/ Sleep(2000); break; } //if }//for }//if principal else{ for(int i=p2.acumulador; i<=p2.duracion; i=i+1000){ p2.acumulador=i; if(i==3000||i==6000||i==9000){ return 1; /*** ENTRO AL BUCLE DEL QUANTUM***/ Sleep(2000); break; } //if }//for }//else Sleep(2000); }