gpt4 book ai didi

unix - 编写系统调用并阻塞进程

转载 作者:行者123 更新时间:2023-12-04 23:50:23 25 4
gpt4 key购买 nike

在 UNIX 中:阅读 系统调用会阻塞进程,直到它完成。

怎么样系统调用行为?它在磁盘上写入时是否会阻止该进程?

对于 write 系统调用,我的意思是 write(fd, bf, nbyte) 过程调用。

最佳答案

不,它只会阻塞进程,直到缓冲区的内容被复制到内核空间。这通常是很短的时间,但在某些情况下它可能会等待一些磁盘操作:

  • 如果没有空闲页面,则必须释放一些页面。如果有干净的页面,它们的内容可以被丢弃(因为它只是从磁盘复制),但如果没有,则必须清洗一些页面,这涉及写入。由于页面会在几秒钟后自动清洗,因此如果您有足够的内存,这几乎不会发生。
  • 如果写入到文件中间,可能需要读取周围的内容,因为页面缓存具有页面粒度(在大多数平台上对齐 4 KiB 块)。这种情况很少发生,因为很少会在不读取文件的情况下更新文件,如果您先读取它,则内容已经缓存。

  • 如果你想等到数据真正上板,你需要跟进 fsync(2) .

    关于unix - 编写系统调用并阻塞进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23877763/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com