Library (aio_read, aio_write). This requires no kernel support. It just forks out a child process doing I/O. This is the "poor man's" version of asynchronous I/O
Kernel support. This is available in 2.6 kernel. It uses functions like io_setup, io_submit, io_getevents, etc..