| 12345678910111213141516171819202122232425262728293031323334353637 |
- #ifndef __SCHED_SJF__
- #define __SCHED_SJF__
- #include <map>
- #include <vector>
- #include <queue>
- #include <algorithm>
- #include "basesched.h"
- using namespace std;
- class SchedSJF : public SchedBase {
- public:
- SchedSJF(std::vector<int> argn);
- ~SchedSJF();
- virtual void initialize() {};
- virtual void load(int pid);
- virtual void unblock(int pid);
- virtual int tick(int cpu, const enum Motivo m);
- private:
- uint nucleos;
- struct Process {
- int pid;
- uint duration;
- // Esto permite ordenar por la duración mínima
- int operator()(const Process& me, const Process& other) {
- return me.duration > other.duration;
- }
- };
- std::map<int, Process> p_map; // Mapeo de los procesos
- std::priority_queue<Process, std::vector<Process>, Process> pq; // Procesos en estado READY o RUNNING
- };
- #endif
|