22 class RandomGenerator;
23 class BoundedRandomDistribution;
36 static std::shared_ptr<Process> createNextJob(
const Process& task);
43 static std::shared_ptr<Process> createProcess(
double cpuLambda,
double ioLambda);
52 static std::shared_ptr<Process> createRealTimeTask(
double wcet,
double T,
53 double dl,
int pid,
int priority = 0,
double bcet = 0.0);
56 static int getNewPid();
61 static unsigned long int getMaxNumber();
74 static const unsigned long int maxNumber = 4000000000;
75 static unsigned long int currentNumber;
79 Process(
int pid,
int nbBursts, std::vector<double> cpuBursts, std::vector<double> ioBursts,
int priority = 0);
83 void setDurationDistribution(std::shared_ptr<Utils::BoundedRandomDistribution> randomDist);
84 int getPid(
void)
const;
85 int getPriority()
const;
86 void setPriority(
int pri);
87 void updateCurrentAow(
double aow);
89 void decrementBurst();
90 double getCurrentCpuAow()
const;
91 double getCurrentIoTime()
const;
92 void setRtParams(
double dl,
double T,
double wcet,
double bcet);
93 void setDeadlineTimeFromStartTime(
double startTime);
94 bool isRealTime()
const;
95 double getPeriod()
const;
96 double getDeadline()
const;
97 double getDeadlineTime()
const;
98 void print(std::ostream& stream)
const;
99 void incrementJobNumber();
100 unsigned int getJobNumber()
const;
101 double getWcet()
const;
102 void setPowerCoeff(
double);
103 double powerCoeff{1.0};
109 std::vector<double> cpuBurst;
110 std::vector<double> ioBurst;
117 double deadline{0.0};
118 double deadlineTime{0.0};
119 double period{INFINITY};
120 unsigned int jobNumber{0};
123 std::shared_ptr<Utils::BoundedRandomDistribution> randomDist{
nullptr};