-
+
REAL TIME PROGRAMMING
- central issue: something has to keep up with the flow of
data to/from the audio interface.
- failure leads to audible clicks and/or lost data.
ALTERNATIVES
- kernel (driver) buffers data to/from user space,
reads/writes during IRQ handling.
- user space (app) buffers data, does I/O periodically.
- user space (app) reads/writes whenever I/O is possible.
KERNEL BUFFERING
- increases latency
- installs policy in kernel space (bad!)
USER-SPACE BUFFERING
- increases latency
- tricky to get 100% correct
USER-SPACE I/O-on-demand
- requires real-time programming
- less resilient to scheduling-induced audible artifacts.