| 2022-06-1
内存映射文件是由操作系统支持的一种文件处理方式,通过文件映射,让用户处理磁盘文件时就如同操作内存一样。再处理大文件时,效率比传统IO高很多。虚拟内存和内存映射文件都是将一部分文件加载到内存,另一部分文件保存在磁盘上的一种机制。
架构不同,虚拟内存是构建在物理内存之上的,引入原因是实际物理内存无法满足程序所需的内存空间;内存映射文件架构在进程地址空间之上,引入原因是无法将整个大文件全部加载到内存空间。虚拟内存管理的是页面文件,内存映射文件可以是任意磁盘文件。
映射其实就是在虚拟地址空间和磁盘地址空间建立了一个一一对应关系,在逻辑地址空间为文件复配一个大小相等的逻辑空间。在文件映射过程中并没有数据拷贝,文件并没有放入内存,只是逻辑上放入了内存中,具体到代码就是建立了初始化数据结构,这个过程由mmap()系统调用实现的,所以映射效率非常高。
映射过程如下:
调用mmap()函数,相当于给磁盘文件分配虚拟内存空间,它返回一个指针ptr,这个指针指向的是一个逻辑地址,操作系统要操作其中的数据必须通过MMU翻译才能获取对应的内存物理地址。
建立内存映射并没有数据拷贝,这时通过MMU翻译ptr是无法找到与之对应的内存物理地址的,也就是MMU失败,产生一个缺页中断,缺页中断响应函数会在磁盘的交换区查找相应页面,如果找不到证明文件还未读入磁盘,则通过mmp()建立的映射关系将文件加载到物理内存中,如果在交换区找到对应文件则换入。
如果在数据拷贝过程中发现内存不够用,则通过虚拟内存管理将部分页面数据换出到交换区。
首先在内网下载登录花生壳客户端,点击域名列表进入web管理页面;
点击【内网映射】—【添加映射】,跳出端口映射设置窗口;
填写端口映射信息。域名为注册花生壳时赠送的免费域名,也可添加其他域名。应用名称自定义,主机即为内网主机IP地址,选择好对外开放的端口,点击确定即可完成信息填写;
端口映射添加完毕后,即生成一个可供外网访问的地址,端口映射完成;
在外网浏览器内输入该地址,即可访问到内网主机所搭建的服务应用,NAT穿透成功。
二、在路由器上端口映射
我们这里以TP-Link的端口映射举例,其他品牌路由器请自行研究。
首先确认一下你本机的IP地址以及网关IP地址(一般情况下,网关的默认地址为:192.168.1.1):
点开始-运行(或按徽标键+R),然后输入“cmd”,会打开CMD窗口。再输入"ipconfig",你会在窗口中看到你的本机IP地址。(你使用其他方式查看也行)。
看本机及网关IP地址,本机的IP地址为:192.168.1.100,网关IP地址为192.168.1.1。
然后打开浏览器,输入192.168.1.1,进入路由器的控制面板(如果不知道用户名和密码,一般默认的是admin,admin)。
点击转发规则,虚拟服务器。
在右边窗口,会看到端口映射的列表。
单击添加新条目,服务端口号填写9120-9122(根据你在TwingHotLink中设置的端口填写),IP地址填写你本机的局域网IP地址,例如:192.168.1.100。
单击保存。
返回列表后,你能看到刚刚添加的端口。
确保状态为生效,此时,端口映射完成。
端口映射其实就是虚拟服务器,也可以叫做端口转发,不同品牌路由器的叫法都不一样,但是讲的都是端口映射,操作也都是一样的。代替路由映射的端口映射应用使用最广泛的就是花生壳。搞定端口映射之后,内网用户也能同公网用户一样随心所欲使用强大的互联网服务了。
相信大家看完都能懂内存映射原理,知道为什么要映射了。花生壳端口映射软件自带端口映射功能,可以帮助用户解决各种网络需求,同时还能帮助用户实现内网穿透,即便用户处于复杂的网络环境中,花生壳也能正常解析域名。