On 6/2/20, Rich Morin <rdm(a)cfcl.com> wrote:
IIRC, we had five tape drives; my challenge was to keep them all as busy as
possible, so as
to dump the data set expeditiously. Because I had asynchronous I/O (mostly
in the form of
BUFFER IN and BUFFER OUT commands), I was able to implement a simple but
quite effective
polling loop. The machine room was a bit of a madhouse, but the tapes were
written about
as quickly as the hardware allowed. Asynchronous I/O FTW...
With 9-track magnetic tape devices, reading and writing can't start
until the tape is up to speed. Once up to speed the drive can read
and write records while keeping the tape moving at speed. This is
called streaming. If there's a pause in the read/write requests from
the CPU, time is lost as the drive stops and starts moving the tape.
It was essential that applications doing large amounts of tape I/O
keep up the I/O requests at a rate that allows streaming.
Asynchronous I/O with multi-buffering is a straightforward way to
accomplish this. The IBM S/360 channel commands for tape devices
provided a mechanism for the tape control unit to send an interrupt to
the CPU when a read or write channel command completed. This notified
the sequential access method (the user program I/O interface) when I/O
to each buffer had completed and the buffer was available for reuse.
OS/360's Sequential Access Method could read or write an entire tape
using a single SIO (start I/O) instruction, as long as no read or
write errors were encountered.
-Paul W.