Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Longest Remaining Time First (LRTF) or Preemptive Longest Job First CPU Scheduling Algorithm

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Longest Remaining Time First (LRTF) is a preemptive version of Longest Job First (LJF) scheduling algorithm. In this scheduling algorithm, we find the process with the maximum remaining time and then process it, i.e. check for the maximum remaining time after some interval of time(say 1 unit each) to check if another process having more Burst Time arrived up to that time. 

Characteristics of Longest Remaining Time First (LRTF) 

  • Among all the processes waiting in a waiting queue, CPU is always assigned to the process having largest burst time.
  • If two processes have the same burst time then the tie is broken using FCFS i.e. the process that arrived first is processed first. 
  • LJF CPU Scheduling can be of both preemptive and non-preemptive type.

Advantages of Longest Remaining Time First (LRTF) 

  • No other process can execute until the longest job or process executes completely.
  • All the jobs or processes finishes at the same time approximately.

Disadvantages of Longest Remaining Time First (LRTF) 

  • This algorithm gives very high average waiting time and average turn-around time for a given set of processes.
  • This may lead to convoy effect.
  • It may happen that a short process may never get executed and the system keeps on executing the longer processes.
  • It reduces the processing speed and thus reduces the efficiency and utilization of the system.

Longest Remaining Time First (LRTF) CPU Scheduling Algorithm

  • Step-1: First, sort the processes in increasing order of their Arrival Time. 
  • Step-2: Choose the process having least arrival time but with most Burst Time. 
  • Step-3: Then process it for 1 unit. Check if any other process arrives upto that time of execution or not. 
  • Step-4: Repeat the above both steps until execute all the processes. 
     

Examples to show working of Preemptive Longest Job First CPU Scheduling Algorithm:

Example-1: Consider the following table of arrival time and burst time for four processes P1, P2, P3 and P4. 

         

ProcessesArrival time Burst Time
P1  

    1 ms   

  2 ms

P2            

2 ms

 4 ms

P3 

3 ms

6 ms

P4     

  4 ms  

  8 ms  

          
The Longest Remaining Time First CPU Scheduling Algorithm will work on the basis of steps as mentioned below:
 

At time = 1, 

  • Available Process : P1. So, select P1 and execute 1 ms. 
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
1-2msP11ms 1ms2ms1ms

At time = 2, 

  • Available Process : P1, P2. 
  • So, select P2 and execute 1 ms (since B.T(P1) = 1 which is less than B.T(P2) = 4) 
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
2-3msP11msP10ms1ms1ms
P22ms1ms4ms3ms

At time = 3, 

  • Available Process : P1, P2, P3. 
  • So, select P3 and execute 1 ms (since, B.T(P1) = 1 , B.T(P2) = 3 , B.T(P3) = 6). 
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
3-4msP11msP1, P20ms1ms1ms
P22ms0ms3ms3ms
P33ms1ms6ms5ms

At time = 4,

  • Available processes: P1, P2, P3, P4. 
  • So, select P4 (as burst time of P4 is largest) and execute 1 ms (since, B.T(P1) = 1 , B.T(P2) = 3 , B.T(P3) = 6, B.T(P4) = 8). 
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
4-5msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms5ms5ms
P44ms1ms8ms7ms

At time = 5,

  • Available processes: P1, P2, P3, P4, 
  • Process P4 will continue its execution as no other process has burst time larger than the Process P4
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
5-7msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms5ms5ms
P44ms2ms7ms5ms

At time = 7,

  • The processes P3 and P4 have same remaining burst time, 
  • hence If two processes have the same burst time then the tie is broken using FCFS i.e. the process that arrived first is processed first. 
  • Therefore P3 will get executed for 1ms
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
7-8msP11msP1, P2, P40ms1ms1ms
P22ms0ms3ms3ms
P33ms1ms5ms4ms
P44ms0ms5ms5ms

At time = 8,

  • Available processes: P1, P2, P3, P4, 
  • Process P4 will again continue its execution as no other process has burst time larger than the Process P4
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
8-9msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms4ms4ms
P44ms1ms5ms4ms

At time = 9,

  • Available processes: P1, P2, P3, P4, 
  • Process P3 continue its execution on the basis of FCFS rule.
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
9-10msP11msP1, P2, P40ms1ms1ms
P22ms0ms3ms3ms
P33ms1ms4ms3ms
P44ms0ms4ms4ms

At time = 10,

  • Available processes: P1, P2, P3, P4, 
  • Now again the burst time of P4 is largest, thus it will execute further.
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
10-11msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms3ms3ms
P44ms1ms4ms3ms

At time = 11,

  • Available processes: P1, P2, P3, P4, 
  • Process P2 will continue its execution as the burst time of P2, P3, P4 is same 
  • Thus, in this case the further execution will be decided on the basis of FCFS i.e. the process that arrived first is processed first. 
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
11-12msP11msP1, P3, P40ms1ms1ms
P22ms1ms3ms2ms
P33ms0ms3ms3ms
P44ms0ms3ms3ms

At time = 12, 

  • Available processes: P1, P2, P3, P4, 
  • Process P3 continue its execution on the basis of above explanation.
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
12-13msP11msP1, P2, P40ms1ms1ms
P22ms0ms2ms2ms
P33ms1ms3ms2ms
P44ms0ms3ms3ms

At time = 13,

  • Available processes: P1, P2, P3, P4, 
  • Now again the burst time of P4 is largest, thus it will execute further.
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
13-14msP11msP1, P2, P30ms1ms1ms
P22ms0ms2ms2ms
P33ms0ms2ms2ms
P44ms1ms3ms2ms

At time = 14,

  • Available processes: P1, P2, P3, P4 
  • Now, the process P2 will again begin to execute first among all
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
14-15msP11msP1, P3, P40ms1ms1ms
P22ms1ms2ms1ms
P33ms0ms2ms2ms
P44ms0ms2ms2ms

At time = 15,

  • Available processes: P1, P2, P3, P4, now P3 will execute
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
15-16msP11msP1, P2, P40ms1ms1ms
P22ms0ms1ms1ms
P33ms1ms2ms1ms
P44ms0ms2ms2ms

At time = 16,

  • Available processes: P1, P2, P3, P4, 
  • here, P4 will execute as it has the largest Burst time among all
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
16-17msP11msP1, P2, P30ms1ms1ms
P22ms0ms1ms1ms
P33ms0ms1ms1ms
P44ms1ms2ms1ms

At time = 17,

  • Available processes: P1, P2, P3, P4, 
  • Process P1 will execute here on the basis of above explanation
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
17-18msP11msP2, P3, P41ms1ms0ms
P22ms0ms1ms1ms
P33ms0ms1ms1ms
P44ms0ms1ms1ms

At time = 18,

  • Available processes: P2, P3, P4,  
  • Process P2 will execute.
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
18-19msP22msP3, P41ms1ms0ms
P33ms0ms1ms1ms
P44ms0ms1ms1ms

At time = 19,

  • Available processes: P3, P4,  
  • Process P3 will execute.
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
19-20msP33msP41ms1ms0ms
P44ms0ms1ms1ms

At time = 20,

  • Process P4 will execute at the end.
Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
20-21msP44ms 1ms1ms0ms

At time = 22,

  • Process P4 will finish its execution.

The overall execution of the processes will be as shown below

Time InstanceProcessArrival TimeWaiting TableExecution TimeInitial Burst TimeRemaining Burst 
Time
1-2msP11ms 1ms2ms1ms
2-3msP11msP10ms1ms1ms
P22ms1ms4ms3ms
3-4msP11msP1, P20ms1ms1ms
P22ms0ms3ms3ms
P33ms1ms6ms5ms
4-5msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms5ms5ms
P44ms1ms8ms7ms
5-7msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms5ms5ms
P44ms2ms7ms5ms
7-8msP11msP1, P2, P40ms1ms1ms
P22ms0ms3ms3ms
P33ms1ms5ms4ms
P44ms0ms7ms5ms
8-9msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms4ms4ms
P44ms1ms5ms4ms
9-10msP11msP1, P2, P40ms1ms1ms
P22ms0ms3ms3ms
P33ms1ms4ms3ms
P44ms0ms4ms4ms
10-11msP11msP1, P2, P30ms1ms1ms
P22ms0ms3ms3ms
P33ms0ms3ms3ms
P44ms1ms4ms3ms
11-12msP11msP1, P3, P40ms1ms1ms
P22ms1ms3ms2ms
P33ms0ms3ms3ms
P44ms0ms3ms3ms
12-13msP11msP1, P2, P40ms1ms1ms
P22ms0ms2ms2ms
P33ms1ms3ms2ms
P44ms0ms3ms3ms
13-14msP11msP1, P2, P30ms1ms1ms
P22ms0ms2ms2ms
P33ms0ms2ms2ms
P44ms1ms3ms2ms
14-15msP11msP1, P3, P40ms1ms1ms
P22ms1ms2ms1ms
P33ms0ms2ms2ms
P44ms0ms2ms2ms
15-16msP11msP1, P2, P40ms1ms1ms
P22ms0ms1ms1ms
P33ms1ms2ms1ms
P44ms0ms2ms2ms
16-17msP11msP1, P2, P30ms1ms1ms
P22ms0ms1ms1ms
P33ms0ms1ms1ms
P44ms1ms2ms1ms
17-18msP11msP2, P3, P41ms1ms0ms
P22ms0ms1ms1ms
P33ms0ms1ms1ms
P44ms0ms1ms1ms
18-19msP22msP3, P41ms1ms0ms
P33ms0ms1ms1ms
P44ms0ms1ms1ms
19-20msP33msP41ms1ms0ms
P44ms0ms1ms1ms
20-21msP44ms 1ms1ms0ms

Note: CPU will be idle for 0 to 1 unit time since there is no process available in the given interval. 

Gantt chart will be as following below: 
 

Since, completion time (C.T) can be directly determined by Gantt chart, and 
 

Turn Around Time (TAT)
= (Completion Time) – (Arrival Time)

Also, Waiting Time (WT)
= (Turn Around Time) – (Burst Time) 

Therefore, final table look like, 

 

Total Turn Around Time = 68 ms
So, Average Turn Around Time = 68/4 = 17.00 ms

And, Total Waiting Time = 48 ms
So Average Waiting Time = 48/4 = 12.00 ms 

Example-2: Consider the following table of arrival time and burst time for four processes P1, P2, P3,P4 and P5. 
 

Processes      Arrival Time    Burst Time   
P10ms2ms
P20ms3ms
P32ms2ms
P43ms5ms
P54ms4ms

Similarly example-1, Gantt chart for this example, 

Since, completion time (CT) can be directly determined by Gantt chart, and 

Turn Around Time (TAT)
= (Completion Time) – (Arrival Time)

Also, Waiting Time (WT)
= (Turn Around Time) – (Burst Time) 

Therefore, final table look like, 

Total Turn Around Time = 61 ms
So, Average Turn Around Time = 61/5 = 12.20 ms

And, Total Waiting Time = 45 ms
So, Average Waiting Time = 45/5 = 9.00 ms 


My Personal Notes arrow_drop_up
Last Updated : 29 Nov, 2022
Like Article
Save Article
Similar Reads