Class Scheduler

java.lang.Object
   |
   +----Scheduler

abstract class Scheduler
extends Object
A Scheduler schedules jobs seeking service from a Device. The class Scheduler itself is "abstract", meaning that there are no instance of Scheduler, only of its subclasses. This simulation has two Schedulers: DiskScheduler for scheduling the disk and RRScheduler for scheduling the CPU. The base class takes care of maintaining statistics on queue lengths. The subclasses do all the actual work.

See Also:
DiskScheduler, RRScheduler

Variable Index

 o lastChanged
The last time the queue length changed
 o lenSum
The time integral of queue length
 o maxLen
The maximum queue length
 o MAXQUEUE
The max queue length we tally in the histogram
 o qlen
The current queue length
 o queueHist
The amount of time the queue had a given length

Constructor Index

 o Scheduler()

Method Index

 o add(Job)
Add a new job wanting service.
 o printQueue()
For debugging: print the queue of waiting jobs
 o printStats()
Print statistics about the history of this queue.
 o queueChanged(int)
This method should be called by a subclass whenever the queue length changes.
 o remove()
Retrieve (and remove) the next job to be served.
 o reschedule(Job)
This method is called when there is a clock interrupt, and just after a job changes state.

Variables

 o MAXQUEUE
 private static final int MAXQUEUE
The max queue length we tally in the histogram

 o qlen
 private int qlen
The current queue length

 o lastChanged
 private int lastChanged
The last time the queue length changed

 o maxLen
 private int maxLen
The maximum queue length

 o lenSum
 private int lenSum
The time integral of queue length

 o queueHist
 private int queueHist[]
The amount of time the queue had a given length

Constructors

 o Scheduler
 Scheduler()

Methods

 o add
 public abstract boolean add(Job j)
Add a new job wanting service.

Parameters:
j - the job to serve
Returns:
true if this scheduler would like to preempt the current job.
 o remove
 public abstract Job remove()
Retrieve (and remove) the next job to be served.

Returns:
the next job (null if there is no such job).
 o reschedule
 public abstract boolean reschedule(Job j)
This method is called when there is a clock interrupt, and just after a job changes state.

Parameters:
j - the job currently being serviced by the corresponding device.
Returns:
true if the scheduler wants to preempt the current job.
 o printQueue
 public abstract void printQueue()
For debugging: print the queue of waiting jobs

 o queueChanged
 protected void queueChanged(int amount)
This method should be called by a subclass whenever the queue length changes.

 o printStats
 public void printStats()
Print statistics about the history of this queue.