tasks.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "tasks.h"
  2. #include "stdlib.h"
  3. using namespace std;
  4. void TaskCPU(int pid, vector<int> params) { // params: n
  5. uso_CPU(pid, params[0] - 1); // Uso el CPU n milisegundos.
  6. }
  7. void TaskIO(int pid, vector<int> params) { // params: ms_pid, ms_io,
  8. uso_CPU(pid, params[0]); // Uso el CPU ms_pid milisegundos.
  9. uso_IO(pid, params[1]); // Uso IO ms_io milisegundos.
  10. }
  11. void TaskAlterno(int pid, vector<int> params) { // params: ms_pid, ms_io, ms_pid, ...
  12. for(int i = 0; i < (int)params.size(); i++) {
  13. if (i % 2 == 0) uso_CPU(pid, params[i] - 1);
  14. else uso_IO(pid, params[i]);
  15. }
  16. }
  17. void TaskConsola(int pid, vector<int> params) {
  18. int calls = params[0];
  19. int bmin = params[1];
  20. int bmax = params[2];
  21. for (int i = 0; i < calls; i++) {
  22. uso_CPU(pid, 1);
  23. uso_IO(pid, rand() %(bmax-bmin) + bmin);
  24. }
  25. }
  26. void TaskBatch(int total_cpu, int cant_bloqueos) {
  27. while(cant_bloqueos>0){
  28. //uso_IO(pid, rand() %(bmax-bmin) + bmin);
  29. cant_bloqueos--;
  30. }
  31. }
  32. void tasks_init(void) {
  33. /* Todos los tipos de tareas se deben registrar acá para poder ser usadas.
  34. * El segundo parámetro indica la cantidad de parámetros que recibe la tarea
  35. * como un vector de enteros, o -1 para una cantidad de parámetros variable. */
  36. register_task(TaskCPU, 1);
  37. register_task(TaskIO, 2);
  38. register_task(TaskConsola, 3);
  39. register_task(TaskAlterno, -1);
  40. }