# I/O Software ## Official Documentation - **Linux Kernel Documentation on I/O** - [Link](https://www.kernel.org/doc/html/latest/driver-api/index.html) - **Microsoft Docs on I/O Processing** - [Link](https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/i-o-processing) - **FreeBSD Handbook: Writing FreeBSD Device Drivers** - [Link](https://docs.freebsd.org/en/books/developers-handbook/driverbasics/) ## Research Papers - **"Persistent Memory I/O Primitives" by Jian Xu and Steven Swanson (2016)** - [Link](https://dl.acm.org/doi/10.1145/2954679.2872365) - **"Understanding Modern Storage APIs: A systematic study of libaio, SPDK, DAOS, and Intel DCL" by Manuel Sadowski et al. (2021)** - [Link](https://dl.acm.org/doi/10.1145/3458336.3465285) ## Additional Online Resources - **IBM Knowledge Center on I/O Concepts and Programming** - [Link](https://www.ibm.com/docs/en/zos/2.4.0?topic=programming-io-concepts) - **Oracle Documentation on Device Driver Interfaces** - [Link](https://docs.oracle.com/cd/E19253-01/816-4854/6mb1gq3vh/index.html) - **SNIA Technical White Paper on NVMe Technology** - [Link](https://www.snia.org/education/what-is-nvme) ## Books - **"Linux Device Drivers" by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman** - ISBN: 9780596005900 - Provides a comprehensive guide to writing device drivers for the Linux kernel. - **"Windows Internals, Part 1" by Pavel Yosifovich et al.** - ISBN: 9780735684188 - Offers detailed information about Windows I/O system and driver model. - **"Operating Systems: Three Easy Pieces" by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau** - ISBN: 9781985086593 - Includes chapters on I/O devices and I/O management in operating systems. ## For Deep Dive into Implementation - **"Systems Programming in Unix/Linux" by K.C. Wang** - ISBN: 9783319924281 - Covers system programming in Unix/Linux, including detailed discussions on I/O programming. - **"The Linux Programming Interface" by Michael Kerrisk** - ISBN: 9781593272203 - Provides a comprehensive guide to Linux and UNIX system programming, including I/O operations. ## Standards - **POSIX.1-2017 (IEEE Std 1003.1-2017)** - This standard defines the interface between operating systems and applications, including I/O operations. - Not freely available, but it's an authoritative source on standardized I/O interfaces. - **ISO/IEC 9945:2009 - Information technology -- Portable Operating System Interface (POSIX®)** - This international standard is based on POSIX and includes specifications for I/O operations. - Not freely available, but useful for understanding standardized I/O interfaces.