【问题标题】:What means "atomic" system call?什么是“原子”系统调用?
【发布时间】:2015-05-24 23:17:38
【问题描述】:

我知道 atomic 通常用在 race condition 的上下文中,意思是 consistencydeterminism of the result根据多线程/多处理环境。没关系。但是最近我读到了 Linux 中的原子系统调用,不明白 atomic 在这里的实际含义是什么,即 如何 这个 atomicity实施。这是否意味着这个系统调用只是在资源上使用锁(例如目标文件 inode 上的 open() )或者还有更多,可能是一些内核保证?我考虑禁用中断,但并非所有中断都可以禁用。可能这就足够了,因为内核使用的所有中断都可以被禁用,而其他中断太重要了,可以中断我们的 atomic 系统调用?

【问题讨论】:

    标签: linux multithreading operating-system system-calls atomic


    【解决方案1】:

    这真的取决于系统调用。引用man 3 read,其中引用了posix编程手册:

    I/O 旨在对普通文件和管道和 先进先出。原子意味着来自单个操作的所有字节 一起开始 一起结束,没有交错 其他 I/O 操作。这是终端的一个已知属性,这是 不兑现,终端是明确的(和隐含的 永久)例外,使行为未指定。这 其他设备类型的行为也未指定,但 措辞旨在暗示未来的标准可能会选择 指定原子性(或不指定)。

    显然,这只适用于 IO 操作。

    【讨论】:

    • 我知道 FIFO 以及我对这个 atomicity 如何在内部工作的问题。
    猜你喜欢
    • 2020-05-24
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2013-01-03
    • 1970-01-01
    • 2017-06-03
    • 2013-10-19
    相关资源
    最近更新 更多