在 linux 上,当写入管道时,如果数据等于或小于内存页面大小(在 64 位 rhel 上至少为 4k),操作系统会保证整个写入成功或失败,但不会损坏数据,当多个进程同时进行写入时。这也适用于写入常规文件。
我的问题是这种原子性是linux虚拟内存的一个特性吗?如果是,请考虑两个进程之间的共享内存场景,其中一个进程在调度程序的写入过程中被换出。虚拟内存子系统是否确保进程正在写入的内存页面也被锁定,以便第二个进程无法写入同一页面?
页面级别的这种原子性是否仅适用于跨进程,或者也适用于同一进程的线程之间?