Function Signature
Description
Implements the MLFQ (Multi-Level Feedback Queue) scheduling algorithm. Processes move between multiple queues with different priority levels. New processes start in the highest-priority queue. If a process doesn’t complete within its quantum, it moves to a lower-priority queue. Each queue has its own time quantum.Parameters
Array of arrival times for each process. Each element represents when a process arrives in the system.
Array of CPU burst times for each process. Each element represents total time a process needs to execute.
Array of time quantums for each queue level.
quantum[0] is for highest-priority queue (level 0), quantum[1] for level 1, etc. The array length determines the number of queue levels.Return Value
Returns an object containing scheduling metrics:Array of start times for each process (indexed by process ID). Records when process first began execution.
Array of completion times for each process (indexed by process ID).
Array of waiting times for each process. Calculated as:
turnaround_time - cpu_time.Array of turnaround times for each process. Calculated as:
completion_time - arrival_time. Represents total time from arrival to completion.Total time required to complete all processes (maximum completion time).
Example Usage
Sample Output
Output Explanation
With 3 queue levels and quantums [2, 4, 8]:- Process 0: Starts in Q0, gets 2 units, demoted to Q1, gets 4 units, demoted to Q2, continues there
- Process 1: Starts in Q0, interleaves with other processes based on queue priority
- Process 2: Starts in Q0, moves down queues as needed
Algorithm Details
How It Works
- Create multiple ready queues (number = length of quantum array)
- New processes always enter queue 0 (highest priority)
- At each scheduling point:
- Find the highest-priority non-empty queue
- Take first process from that queue
- Execute for quantum[level] time or until completion
- If process completes, remove from system
- If process doesn’t complete:
- Move to next lower queue (or stay at lowest)
- Process remains in lower priority queue
- Repeat until all processes complete
Queue Priority System
Complexity
- Time Complexity: O(n × t) where t is total execution time
- Space Complexity: O(n + q) where q is number of queues
Characteristics
- Adaptive: Automatically adjusts to process behavior
- Favors I/O-bound: Short processes complete quickly in high-priority queues
- Prevents starvation: All processes eventually execute (though low-priority ones wait longer)
- Dynamic priority: Processes move between queues based on execution history
- Configurable: Quantum array determines behavior
Queue Movement Rules
- Process uses full quantum → demoted to next lower queue
- Process reaches lowest queue → stays there for remaining execution
- Process completes → removed from all queues
Quantum Configuration Strategies
Increasing quantums (recommended):- Short processes complete quickly
- Long processes get efficient longer slices
- Simpler but less adaptive
- Fine-tune for specific workload characteristics