编写设备驱动程序

同步 I/O 与异步 I/O 之间的差别

数据传输可以是同步的,也可以是异步的。决定因素取决于调度传输的入口点是立即返回还是等到 I/O 操作完成之后。

read(9E)write(9E) 入口点都是同步入口点。传输在 I/O 操作完成之前不得返回。待例程返回值时,进程就会知道传输是否成功。

aread(9E)awrite(9E) 入口点都是异步入口点。异步入口点调度 I/O 并立即返回。返回时,发出请求的进程即知道 I/O 被调度,并且随后必须确定 I/O 的状态。同时,该进程还可以执行其他操作。

对于发送到内核的异步 I/O 请求,不要求进程在 I/O 处理过程中等待。一个进程可以执行多个 I/O 请求,并允许内核处理数据传输细节。通过异步 I/O 请求,事务处理等应用程序可以使用并发编程方法来提高性能或缩短响应时间。但是,因使用异步 I/O 的应用程序而改善的任何性能,必须以增加编程复杂性为代价。