1. A computer implemented method of interfacing between a plurality of application programs and a physical device, said computer implemented method comprising the steps of: (a) providing a library of routines to control and implement different functions specific to said physical device; (b) dynamically linking said library of routines to said plurality of application programs; (c) providing a memory for storing private data which influences the behavior of said library of routines; (d) providing a means for updating said private data in order to record state information during periods in which said library of routines are inactive, whereby said application programs utilize said library of routines to control and communicate with said physical device, and whereby said application programs utilize said library of routines to perform tasks that require utilization of said physical device; and (e) updating said private data in response to interrupts generated by said physical device.