【问题标题】:Does read() causes the kernel device driver code to be executed?read() 是否会导致内核设备驱动程序代码被执行?
【发布时间】:2020-05-24 20:22:35
【问题描述】:

read() 系统调用是否会导致内核设备驱动程序代码被执行? 我的意思是,当我想从磁盘或任何驱动程序中读取文件时,我使用 read() 系统调用。那个系统调用是不是必须使用驱动代码才能完成这个任务?

谢谢。

【问题讨论】:

  • 驱动代码是什么意思?您是指内核中的设备驱动程序代码吗?
  • @sks-15。确实。我想知道设备驱动程序代码是否应该在这种情况下运行。
  • 好吧,将请求排队到驱动程序的代码将运行,并且驱动程序可能会实际启动读取。调用者通常会被挂起,等待来自驱动程序的 I/O 完成中断和信号。
  • 视情况而定。对大多数设备的访问是完全缓冲的。如果系统缓冲区有足够的数据来满足用户的 read() 请求,则不必执行实际的 I/O,并且驱动程序代码不参与这些情况。

标签: operating-system linux-device-driver system-calls


【解决方案1】:

是的,read() 使用standard file descriptors 从文件中的固定偏移量和固定字节读取文件。 standard file descriptors 不是光盘上的文件,而是与不同的设备相关联,即终端设备。因此,必须使用驱动程序才能访问文件。

请参阅man read 了解其用法和C 原型。

有关文件处理的更多信息,请使用this 链接,尤其是针对特定查询的“查看打开的文件”部分。

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 2017-12-13
    • 2023-03-24
    • 2017-03-02
    • 2018-05-23
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多