sched_mfq.h 701 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef __SCHED_MFQ__
  2. #define __SCHED_MFQ__
  3. #define uint unsigned int
  4. #include <vector>
  5. #include <queue>
  6. #include "basesched.h"
  7. using namespace std;
  8. class SchedMFQ : public SchedBase {
  9. public:
  10. SchedMFQ(std::vector<int> argn);
  11. ~SchedMFQ();
  12. virtual void initialize() {};
  13. virtual void load(int pid);
  14. virtual void unblock(int pid);
  15. virtual int tick(int n, const enum Motivo m);
  16. private:
  17. enum state { READY, BLOCKED, RUNNING };
  18. struct process {
  19. enum state state;
  20. uint quantum_count;
  21. uint queue;
  22. };
  23. uint next_pid();
  24. int switch_task();
  25. uint n_colas;
  26. map<uint, process> v_process;
  27. vector<queue<uint>> v_queues;
  28. vector<uint> v_queues_quantum;
  29. };
  30. #endif