时长:大小9.04M
作者回复: 理解的很正确!
作者回复: mmap与标准io的选择要看具体的场景。很多情况下内存拷贝不会是瓶颈,比如说只写几个或者几百字节的情况下,所以使用哪种都可以;只有在内存拷贝成为瓶颈,比如读写大量文件内容的情况下,比如一次要读写几十上百M,mmap的优势才会提现出来。
作者回复: 理解的很准确 赞!
作者回复: 可以这么理解,它是文件内容的零拷贝。
作者回复: “这个过程并不会触发page fault”,除了这句话之外,你的其他理解是对的。 inode mapping中如果没有的话,内核会分配一个page,然后将write调用中的buffe拷贝到这个page 中,这个过程叫做pagein,它属于page fault的一种: major fault。你可以通过sar之类的工具来观察这个指标。
作者回复: 赞!
作者回复: proc接口中提供给用户的只是具体的数据项,这些数据项对应到内核代码则是一些数据结构。对于inactive active这两项而言,他们对应内核代码里的lru list。
作者回复: gliffy。chrome有插件。
作者回复: 标准io相对而言更方便些,在数据量不大的情况下可以使用;如果数据量较大,此时使用存储映射io会更好些。另外一个考虑因为是对内存的精细管理,如果需要管理,比如说把某些数据锁定在内存中,这个时候使用存储映射io更好些。