#ifndef __SCHED_SJF__ #define __SCHED_SJF__ #include #include #include #include #include "basesched.h" using namespace std; class SchedSJF : public SchedBase { public: SchedSJF(std::vector 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; } }; bool firstTick; std::map p_map; // Mapeo de los procesos typedef std::map::iterator it_type; std::priority_queue, Process> pq; // Procesos en estado READY o RUNNING }; #endif