In my Operating System lectures, we were taught various scheduling algorithms like FCFS, Shortest Job first, etc.
In Shortest Job First, the scheduler is supposed to execute the processes with the least amount of burst time first. My question is: How does the scheduler calculate/estimate the burst time/execution time of a process before it is dispatched to the CPU? So, how is it able to determine which jobs are short and which jobs are long?
Also, isn't calculating the burst time of a process an overhead? Are there any ways to reduce or eliminate this overhead?