sched_rr.h 744 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef __SCHED_RR__
  2. #define __SCHED_RR__
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include "basesched.h"
  7. using namespace std;
  8. class SchedRR : public SchedBase {
  9. public:
  10. SchedRR(std::vector<int> argn);
  11. ~SchedRR();
  12. virtual void initialize() {};
  13. virtual void load(int pid);
  14. virtual void unblock(int pid);
  15. virtual int tick(int cpu, const enum Motivo m);
  16. virtual int next_pid();
  17. virtual int next_free_cpu();
  18. private:
  19. uint nucleos;
  20. uint* quantums;
  21. int cur_pid;
  22. enum state { READY, BLOCKED, RUNNING };
  23. struct process{
  24. int pid;
  25. enum state state;
  26. uint quantum_count;
  27. };
  28. std::map<int, process> p_map;
  29. typedef std::map<int,process>::iterator it_type;
  30. /* llenar */
  31. };
  32. #endif