- Forward


Buffers
An Introduction


Prof. David Bernstein
James Madison University

Computer Science Department
bernstdh@jmu.edu

Print

Motivation
Back SMYC Forward
  • Stream:
    • An infinitely long sequence of bytes that can be read from and/or written to
  • Buffer:
    • A fixed amount of data that can be sent to or received from an I/O component
Properties
Back SMYC Forward
  • Capacity:
    • The number of items that it can store
  • Limit:
    • The number of "live" items
  • Position:
    • The index of the next element that can be read from or written to
  • Mark:
    • What the position should be upon reset
Properties (cont.)
Back SMYC Forward
  • Invariants:
    • \(0 \leq \text{mark} \leq \text{position} \leq \text{limit} \leq \text{capacity}\)
  • Initial Values:
    • \(\text{capacity} = \text{limit}\): Determined at construction-time
    • position: 0
    • mark: undefined
Operations on these Properties
Back SMYC Forward
  • Clear:
    • Set the position to 0, the limit to the capacity, and discard the mark
  • Flip:
    • Set the limit to the position, set the position to 0, and discard the mark if it is defined
  • Mark:
    • Set the mark to the position
  • Reset:
    • Set the position to the mark (leaving the mark unchanged)
  • Rewind:
    • Set the position to 0, and discard the mark
Operations on the Contents
Back SMYC Forward
  • Filling:
    • Puts a value into the element with index position and increases position (if limit hasn't been exceeded)
  • Draining:
    • Gets the value from the element at index position and increases position (if limit hasn't been reached)
Operations on the Contents (cont.)
Back SMYC Forward
  • Modes:
    • The buffer is either in filling mode or draining mode
  • Switching Modes:
    • Flip the buffer
Putting It All Together
Back SMYC Forward

An Example

buffers_operations
There's Always More to Learn
Back -