@TechReport{krieger:asf-tr,
  author = {Orran Krieger and Michael Stumm and Ronald Unrau},
  title = {The {Alloc Stream Facility}: A Redesign of Application-level Stream
  {I/O}},
  year = {1992},
  month = {October},
  number = {CSRI-275},
  institution = {Computer Systems Research Institute, University of Toronto},
  address = {Toronto, Canada, M5S 1A1},
  later = {krieger:asf},
  keywords = {memory-mapped file, file system, parallel I/O, pario-bib},
  abstract = {This paper describes the design and implementation of a new
  application level I/O facility, called the Alloc Stream Facility. The Alloc
  Stream Facility has several key advantages. First, performance is
  substantially improved as a result of a) the structure of the facility that
  allows it to take advantage of system specific features like mapped files,
  and b) a reduction in data copying and the number of I/O system calls.
  Second, the facility is designed for multi-threaded applications running on
  multiprocessors and allows for a high degree of concurrency. Finally, the
  facility can support a variety of I/O interfaces, including stdio, emulated
  Unix I/O, ASI, and C++ streams, in a way that allows applications to freely
  intermix calls to the different interfaces, resulting in improved code
  reusability. \par We show that on several Unix workstation platforms the
  performance of Unix applications using the Alloc Stream Facility can be
  substantially better that when the applications use the original I/O
  facilities.},
  comment = {See also krieger:mapped. ``This is an extended version of the
  paper with the same title in the March, 1994 edition of IEEE Computer.'' A
  3-level interface structure: interface, backplane, and stream-specific
  modules. Different interfaces available: unix, stdio, ASI (theirs), C++.
  Common backplane. Stream-specific implementations that export operations like
  salloc and sfree, which return pointers to data buffers. ASI exports that
  interface to the user, for maximum efficiency. Performance is best when using
  mapped files as underlying implementation. Many stdio or unix apps are faster
  only after relinking. ASI is even faster. In addition to better performance,
  also get multithreading support, multiple interfaces, and extensibility.}
}

