@Override
    public void run() {
        synchronized (this) {
            while (true) {
                try {
                    wait();
                } catch (InterruptedException ex) {
                    System.out.println("ERROR DURMIENDO DISPOSITIVO");
                    return;
                }
                /*Paso un tick, aumentamos el tiempo dormidos de los que esperan*/
                this.aumentarTiempo();

                /*Cuando hay un proceso en el dispositivo */
                if (procesoActual != null) {

                    /*Decrementamos el tiempo I/O del proceso*/
                    int tmpActual = procesoActual.getTiemposIO() - 1;
                    procesoActual.setTiemposIO(tmpActual);
                  
                    /* Termino IO, lo despertamos para que vuelva al CPU */
                    if (tmpActual == 0) {
                        System.out.println("Proceso " + (planificador.despiertaProceso(procesoActual) ? "" : "NO ")
                                + "Despertado " + procesoActual.toString());
                        procesoActual = popProceso();
                    }
                } else {
                    procesoActual = popProceso();
                }
            }
        }
    }