这跟操作系统和文件系统有关,以linux为例,每个进程使用文件描述符来表示每个进程打开的文件,每个文件描述符表可以对应相同的file实例,file实例指向inode,inode与address space一一对应,其中address space跟我们平时的读写操作息息相关,他维护了磁盘的文件内容在内存里的页缓存,为了提高效率,读写一般发生在页缓存一层,直到需要flush(可能是用户发起的sync操作,也可能是内存紧张需要换出页)。回到楼主的问题, 是否会将各自的操作记录留在属于自己的操作记录里面,  一般而言不会,只要你使用了sys_read,文件系统一般会把他写到页缓存里,这是遵循一般文件系统的规则的,但也不排除某些文件系统为每个进程创建了一个类似“address space”的数据结构,但这个结构不是在vfs层的,实际上linux vfs层也存在一个inode 层次的锁,可以保证每次调用sys_read的互斥。要想在进程层次保持互斥,可以使用flock
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务