https://pmpaul.com/learn-computing-machine-scheduling/