[英]Use cases of mmap
我目前正在研究OS决赛。 在某些论文中,老师简短地提到了mmap
函数(内存图)。
据我了解( 如果我错了 ,请纠正我 ),mmap用于将某些文件从物理内存加载到RAM(在默认页面之后)。 问题在于,除了使访问该文件的时间更快之外,我看不到任何实际的原因。
我对么? mmap仅用于此吗?
“ mmap”有很多用途:
映射文件以实现更快的读/写访问肯定是一种用途
共享内存(例如,用于进程间通信)是另一个
mmap还用于映射I / O端口地址以进行低级设备通信
mmap用于将某些文件从物理内存加载到RAM(在默认页面后)
加载缺少的页面 。 也可以用相同的方式将修改内容写入磁盘!
mmap在很大程度上将内存管理从程序员的手中解放了出来,并将其交给操作系统。
这是关于使用虚拟内存子系统从磁盘到物理内存的需求分页。
因此,要查看文件的第11111个字节,可以查找并使用数组索引,而不是查找和读取。 操作系统会将周围的数据保留在其“缓冲区高速缓存”(实际上是页面高速缓存)中。
这是一个示例: http : //stromberg.dnsalias.org/~strombrg/pbmonherc.html
该示例有点混乱,因为它是在Linux内核中支持mmap的时候编写的,但是C库尚未有调用它的存根。 但是您几乎可以忽略mmap.c。 该示例使用mmap通过单色显示适配器设置像素的开和关。
另一个合理的用途是使用布隆过滤器: http : //stromberg.dnsalias.org/~strombrg/drs-bloom-filter/
...但是在32位OS上,mmap的内存区域的最大大小有点麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.