Some operating systems from nearly thirty years ago were already providing this feature, in a very simple way: decouple I/O from process scheduling. This way, there is no distinction between "synchronous" and "asynchronous" I/O in the kernel at all--as far as the kernel is concerned, all I/O operations are asynchronous.
Instead, the distinction is implemented entirely in userspace. The synchronous versions of the I/O calls actually make two kernel calls: "request I/O operation" followed by "wait for completion". No need for special paths through the kernel for handling synchronous versus asynchronous kinds of I/O operations.
Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds