Class BusContentionApplet
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- java.awt.Panel
-
- java.applet.Applet
-
- javax.swing.JApplet
-
- ptolemy.gui.BasicJApplet
-
- ptolemy.actor.gui.PtolemyApplet
-
- ptolemy.domains.csp.demo.BusContention.BusContentionApplet
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.RootPaneContainer
,ExecutionListener
public class BusContentionApplet extends PtolemyApplet
A model of hardware subsystems accessing a shared resource using rendezvous. The model shows the use of timed CSP to deterministically handle nondeterministic events.The applet consists of a controller, three processors and a memory block. At randomly selected points in time, each processor can request permission from the controller to access the memory. The processors each have priorities associated with them, and in cases where there is a simultaneous memory access request, the controller grants permission to the processor with the highest priority.
All communication between actors in a CSP model of computation occurs via rendezvous. Rendezvous is an atomic form of communication. This model uses a timed extension to CSP, so each rendezvous logically occurs at a specific point in time.
Because of the atomic nature of rendezvous, when the controller receives a request for access, it cannot know whether there is another, higher priority request pending at the same time. To overcome this difficulty, an alarm is employed. The alarm is started by the controller immediately following the first request for memory access. It is awakened when time is ready to advance (the model blocks on delays). This indicates to the controller that no more memory requests will occur at the given point in time. Hence, the alarm uses centralized time to make deterministic an inherently non-deterministic activity.
In the applet, each of the initially blue processors (the circular nodes) can be in one of three states. The color yellow indicates that a processor is in state 1 and is waiting for the controller to give it permission to access memory. The color green indicates that a processor has been granted permission to access memory. The color red indicates that the processor has been denied memory access.
- Since:
- Ptolemy II 0.3
- Version:
- $Id$
- Author:
- John S. Davis II, Michael Shilman
- See Also:
- Serialized Form
- Pt.AcceptedRating:
- Red (cxh)
- Pt.ProposedRating:
- Red (eal)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BusContentionApplet.BusContentionGraphController
static class
BusContentionApplet.LocalEdgeRenderer
LocalEdgeRenderer draws arrowheads on both ends of the connectorclass
BusContentionApplet.StateListener
StateListener is an inner class that listens to state events on the Ptolemy kernel and changes the color of the nodes appropriately.static class
BusContentionApplet.ThreadRenderer
ThreadRenderer draws the nodes to represent running threads.-
Nested classes/interfaces inherited from class javax.swing.JApplet
javax.swing.JApplet.AccessibleJApplet
-
Nested classes/interfaces inherited from class java.applet.Applet
java.applet.Applet.AccessibleApplet
-
-
Field Summary
-
Fields inherited from class ptolemy.actor.gui.PtolemyApplet
_manager, _setupOK, _toplevel, _workspace
-
Fields inherited from class ptolemy.gui.BasicJApplet
_background
-
Fields inherited from class javax.swing.JApplet
accessibleContext, rootPane, rootPaneCheckingEnabled
-
-
Constructor Summary
Constructors Constructor Description BusContentionApplet()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected NamedObj
_createModel(Workspace workspace)
Create a model.protected void
_createView()
Create an animation pane.void
start()
Override the baseclass start method so that the model does not immediately begin executing as soon as the the applet page is displayed.-
Methods inherited from class ptolemy.actor.gui.PtolemyApplet
_createRunControls, _go, _stop, destroy, executionError, executionFinished, getAppletInfo, getParameterInfo, init, managerStateChanged, stop
-
Methods inherited from class ptolemy.gui.BasicJApplet
_concatStringArrays, _getBackground, _stackTraceToString, report, report, report
-
Methods inherited from class javax.swing.JApplet
addImpl, createRootPane, getAccessibleContext, getContentPane, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isRootPaneCheckingEnabled, paramString, remove, repaint, setContentPane, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
-
Methods inherited from class java.applet.Applet
getAppletContext, getAudioClip, getAudioClip, getCodeBase, getDocumentBase, getImage, getImage, getLocale, getParameter, isActive, isValidateRoot, newAudioClip, play, play, resize, resize, setStub, showStatus
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, reshape, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setMixingCutoutShape, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Method Detail
-
_createModel
protected NamedObj _createModel(Workspace workspace) throws java.lang.Exception
Create a model.- Overrides:
_createModel
in classPtolemyApplet
- Parameters:
workspace
- The workspace in which to create the model.- Returns:
- A model.
- Throws:
java.lang.Exception
- If something goes wrong. This is a broad exception to allow derived classes wide lattitude as to which exception to throw.
-
_createView
protected void _createView()
Create an animation pane.- Overrides:
_createView
in classPtolemyApplet
-
start
public void start()
Override the baseclass start method so that the model does not immediately begin executing as soon as the the applet page is displayed. Execution begins once the "Go" button is depressed. Layout the graph visualization, since this can't be done in the init method, because the graph hasn't yet been displayed.- Overrides:
start
in classPtolemyApplet
-
-