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