sched_rr.h 726 B

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