Implementamos este ejercicio utilizando:
Map<pid, process>vector<queue<pid>>Donde quantum y pid son unsigned int.
Esto nos permite:
En dicho Map se almacena un struct con datos del proceso actual como: pid, state y quantum_count, a los que se accede utilizando el pid como clave.
En el constructor se leen los parámetros que recibe la cantidad de ticks a asignar por quantum a cada cola (esto le da la 'prioridad' a cada cola).
Cada vez que se carga un nuevo proceso, el mismo se aloja en la cola de mayor prioridad. Al haber un tick se controla que no se haya cumplido el quantum establecido para dicho nucleo, si se cumplió se lo intenta mover a una cola de menor prioridad y se marca como READY. Al haber un unblock se intenta "premiar" a la tarea (que no utilizó completamente su quantum antes de ser desalojada), moviéndola a una cola de mayor prioridad.