Class Device

java.lang.Object
   |
   +----Device

class Device
extends Object
A Device can be running or stopped. Once started, it will "interrupt" at some time in the future. Since this is a simulation, interrupts are a bit funny: Each device indicates the simulation time when the interrupt will occur and Sim.mainLoop() polls the devices, see which one is next to interrupt. It then advances its current time to the time of the interrupt, stops the device, and does what the "interrupt handler" for the device would do. In the current version of the simulation, the disk, clock, and cpu devices are all instances of Device. Job arrivals are represented by a pseudo-device JobArrival, which extends Device.

See Also:
JobArrival, mainLoop

Variable Index

 o currentJob
The current job, if running.
 o name
The name of the device (for diagnostic output)
 o nextInterruptTime
When will it next interrupt? (MAX_VALUE if not running)
 o running
Is the device currently running?
 o startedAt
When did it last start running? (meaningless if not running)
 o totalTime
What is the total amount of time it has been running?
 o trace
Trace of significant events in this device's lifetime (only if Sim.traceFlag)

Constructor Index

 o Device(String)
Initialize the Device.

Method Index

 o current()
Get the current job.
 o isBusy()
Is the device currently runing?
 o nextInterrupt()
Retrieve the time when the next interrupt will occur.
 o printStats()
Print information about this device
 o start(Job, int)
Start a device running, servicing a job.
 o stop()
Stop the device.
 o toString()
For debugging, information about this device.

Variables

 o name
 private String name
The name of the device (for diagnostic output)

 o trace
 private Vector trace
Trace of significant events in this device's lifetime (only if Sim.traceFlag)

 o running
 private boolean running
Is the device currently running?

 o currentJob
 private Job currentJob
The current job, if running.

 o nextInterruptTime
 private int nextInterruptTime
When will it next interrupt? (MAX_VALUE if not running)

 o startedAt
 private int startedAt
When did it last start running? (meaningless if not running)

 o totalTime
 private int totalTime
What is the total amount of time it has been running?

Constructors

 o Device
 Device(String name)
Initialize the Device.

Parameters:
name - the name of the device.

Methods

 o current
 public Job current()
Get the current job.

Returns:
the current job (null if device is idle)
 o toString
 public String toString()
For debugging, information about this device.

Returns:
the name of this device.
Overrides:
toString in class Object
 o start
 public void start(Job j,
                   int amt)
Start a device running, servicing a job.

Parameters:
j - the job to run
amt - for generic devices, the amount of time to run the job, in milliseconds. Specific devices may interpret the argument differently.
 o stop
 public Job stop()
Stop the device.

Returns:
the job that was being serviced by the device.
 o nextInterrupt
 public final int nextInterrupt()
Retrieve the time when the next interrupt will occur.

Returns:
the time of the completion interrupt (-1 if not running).
 o isBusy
 public boolean isBusy()
Is the device currently runing?

Returns:
true if the device is running .
 o printStats
 public void printStats()
Print information about this device