[mod.computers.vax] Buffered vs. Direct I/O requests

GKN@SDSC.ARPA.UUCP (01/30/87)

A buffered I/O request is one where a system buffer, allocated from non-paged
pool, is involved.  The amount of pool required for the system buffer is
charged against your BYTLM quota at the descretion of the device driver.

A direct I/O request is one where the I/O transfer takes place out of the
buffer space you specified in your program.

In order for I/O to take place, the contents of the physical page frames
which contain the I/O buffer must not change while the I/O is going on.
For buffered I/Os this feat is accomplished because the I/O buffer is
allocated from non-paged pool, which doesn't page.  For direct I/O requests
this feat is accomplished by temporarily locking the pages involved in
the I/O transfer into memory and doing the I/O from there.

Direct I/O requests are usually for devices which do I/O quickly, since
locking pages in memory tends to destroy paging dynamics.

The type of request (buffered vs. direct) is at the descretion of the
driver writer when s/he codes the FDT.

gkn
--------------------------------------
Arpa:	GKN@SDSC-SDS.ARPA
Bitnet:	GKN@SDSC
Span:	SDSC::GKN (5.600)
USPS:	Gerard K. Newman
	San Diego Supercomputer Center
	P.O. Box 85608
	San Diego, CA  92138
AT&T:	619.534.5076
-------