Skip to content

Commit 6dca5d8

Browse files
authored
Update ch9 1io-interface.rst
1 parent 00b7877 commit 6dca5d8

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

source/chapter9/1io-interface.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ I/O接口的交互协议
216216
i2c-0 gpiochip0 nvme0 tty0 rtc0 ...
217217
218218
219-
这些设备按照文件的访问接口(即 ``open/close/read/write`` )来进行处理。但由于各种设备的功能繁多,仅仅靠 ``read/write`` 这样的方式很难有效地与设备交互。于是UNIX的后续设计者提出了一个非常特别的系统调用 ``ioctl`` ,即 ``input/output control`` 的含义。它是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于设备驱动程序对请求码的解读和处理。比如,CD-ROM驱动程序可以弹出光驱,于是操作系统就可以设定一个ioctl的请求码来对应这种操作。当应用程序发出带有CD-ROM设备文件描述符和 **弹出光驱** 请求码这两个参数的 ``ioctl`` 系统调用请求后,操作系统中的CD-ROM驱动程序会识别出这个请求码,并进行弹出光驱的I/O操作。
219+
这些设备按照文件的访问接口(即 ``open/close/read/write`` )来进行处理。但由于各种设备的功能繁多,仅仅靠 ``read/write`` 这样的方式很难有效地与设备交互。于是UNIX的后续设计者提出了一个非常特别的系统调用 ``ioctl`` ,即 ``input/output control`` 的含义。它是一个专用于设备输入输出操作的系统调用该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于设备驱动程序对请求码的解读和处理。比如,CD-ROM驱动程序可以弹出光驱,于是操作系统就可以设定一个ioctl的请求码来对应这种操作。当应用程序发出带有CD-ROM设备文件描述符和 **弹出光驱** 请求码这两个参数的 ``ioctl`` 系统调用请求后,操作系统中的CD-ROM驱动程序会识别出这个请求码,并进行弹出光驱的I/O操作。
220220

221221
``ioctl`` 这名字第一次出现在Unix第七版中,他在很多类unix系统(比如Linux、Mac OSX等)都有提供,不过不同系统的请求码对应的设备有所不同。Microsoft Windows在Win32 API里提供了相似的函数,叫做DeviceIoControl。
222222

@@ -410,4 +410,4 @@ IO multiplexing对应的I/O系统调用是 ``select`` 和 ``epoll`` 等,也称
410410
而异步IO则不一样,当用户进程发起IO操作之后,就直接返回做其它事情去了,直到内核发送一个通知,告诉用户进程说IO完成。在这整个过程中,用户进程完全没有被阻塞。
411411

412412

413-
.. [#mr96] Jeffrey Mogul and K. K. Ramakrishnan, Eliminating Receive Livelock in an Interrupt-driven Kernel, USENIX ATC 1996, San Diego, CA, January 1996
413+
.. [#mr96] Jeffrey Mogul and K. K. Ramakrishnan, Eliminating Receive Livelock in an Interrupt-driven Kernel, USENIX ATC 1996, San Diego, CA, January 1996

0 commit comments

Comments
 (0)