Procházet zdrojové kódy

Actualizada descripcion con funcionamiento del ejercicio9

Fabian před 10 roky
rodič
revize
9c011ed55e
1 změnil soubory, kde provedl 12 přidání a 13 odebrání
  1. 12 13
      informe/9-informe.md

+ 12 - 13
informe/9-informe.md

@@ -1,25 +1,24 @@
 \newpage
 # Ejercicio 9
 
-Implementamos este ejercicio utilizando:
+Para la implementación de este ejercicio utilizando:
 
- * `Map<pid, process>`
- * `vector<queue<pid>>`
+`Map<pid, process>`
+En dicho `Map` se almacena un descriptor `struct` con datos del proceso actual como: _pid_, _state_ y *quantum_count*, a los que se accede utilizando el _pid_ como clave.
 
-Donde pid es `unsigned int`.
+`vector<queue<pid>>`
+En este `vector` se almacenan las distintas colas de ejecución, en las mismas se almacena solo el `pid` para poder luego consultarlo en el mapa si es necesario accederlo.
 
-Esto nos permite:
+`vector<uint>`
+Este vector tiene el mismo tamaño que el vector utilizado anteriormente y se utiliza para almacenar el cuantum correspondiente al índice de cada cola. Por ejemplo la cola en la posición *0* del arreglo de colas tiene el quantum almacenado en la posición *0* de este arreglo.
 
- * Poder mantener cada cola de prioridad con los PIDs que tiene asignados.
- * Acceso fácil/rápido al estado de cada proceso por su PID.
+Esto nos permite poder mantener cada cola de prioridad con los PIDs que tiene asignados e ir pasandolos de cola en cola sin tener que migrar todos los datos del proceso, ya que al mismo se accede por su PID mientras se encuentre en ejecución.
 
-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 del scheduler se lee la cantidad de parámetros, con esto se inicializan los dos vectores (con las colas y los quantums) y se almacena el quantum correspondiente a cada cola segun el orden en el que se reciben. (Esto le da la 'prioridad' a cada cola).
 
-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 dicha cola, si se cumplió se lo intenta mover a una cola de menor prioridad (de existir) 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.
+Cada vez que se carga un nuevo proceso, el mismo se aloja en la cola de mayor prioridad (La cola en la posición *0*).
+Al haber un _tick_ se controla que no se haya cumplido el _quantum_ establecido para dicha cola, si se cumplió se lo intenta mover a una cola de menor prioridad *(número más alto)* 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.
 
 ![Ejercicio 9 - CPU](informe/imagenes/ejercicio9_gantt_casos_1.png)