热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

windows-两个进程之间的普通共享内存(没有文件映射,没有管道,没有其他额外的)

如何解决《windows-两个进程之间的普通共享内存(没有文件映射,没有管道,没有其他额外的)》经验,为你挑选了1个好方法。

如何拥有一个孤立的内存部分,它根本不支持任何文件或额外的管理层,如管道,可以在同一台Windows机器上的两个专用进程之间共享?

大多数文章都指向了CreateFileMapping的方向.让我们从那里开始:

具有hFile = INVALID_HANDLE_VALUE的CreateFileMapping如何实际工作?根据

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx

它"...创建一个指定大小的文件映射对象,该对象由系统页面文件而不是文件系统中的文件支持..."

假设我在内存中写了一些东西,它由CreateFileMapping映射,并带有hFile = INVALID_HANDLE_VALUE.在什么条件下将此内容写入磁盘上的页面文件?

此外,我对共享内存使用的动机的理解是保持性能和优化.为什么文章"创建命名共享内存"(https://msdn.microsoft.com/de-de/library/windows/desktop/aa366551(v=vs.85).aspx)引用CreateFileMapping,如果没有一个属性组合,会阻止写入文件,例如页面文件?

回到最初的问题:我担心,CreateFileMapping不够好......那么什么会起作用?



1> zwol..:

你误解了系统分页文件"支持"内存意味着什么.(不要感觉不好; Raymond Chen将您从MSDN引用的文本描述为" Win32文档中最容易被误解的句子之一.")几乎所有计算机的内存都被磁盘上的某些内容"支持" ; 只有内核专用且尽量少使用的"非分页池"才是.如果页面没有普通命名文件支持,则它由系统页面文件支持.除非需要,否则操作系统不会将页面写入系统页面文件,但如果确实需要,则可以.

该体系结构旨在确保当进程无关时,可以将进程完全 "分页"到RAM中.这曾经比现在重要得多,但它仍然很有价值; 典型的Windows桌面将有许多进程"空闲"等待可能永远不会发生的事件(例如需要假脱机打印作业).这些进程可以被分页,内存可以更有建设性地使用.

CreateFileMappinghfile=INVALID_HANDLE_VALUE是,其实你想要什么.只要共享内存的进程正在积极地处理它,它就会保留在RAM中并且不存在性能问题.如果他们闲着,是的,它可能会被淘汰,但这很好,因为他们没有做任何事情.

可以指示系统不要将一大块内存分页; 这就是VirtualLock的用途.但它意味着用于包含秘密信息的小块内存,将其写入页面文件可能会泄露秘密.MSDN页面警告您"每个版本的Windows都有一个进程可以锁定的最大页数限制.这个限制是故意小的,以避免严重的性能下降."


推荐阅读
  • Git管理工具SourceTree安装与使用指南
    本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ... [详细]
  • 解决SVN图标显示异常问题的综合指南
    本文详细探讨了SVN图标无法正常显示的问题,并提供了多种有效的解决方案,涵盖不同环境下的具体操作步骤。通过本文,您将了解如何排查和修复这些常见的SVN图标显示故障。 ... [详细]
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • 磁盘健康检查与维护
    在计算机系统运行过程中,硬件或电源故障可能会导致文件系统出现异常。为确保数据完整性和系统稳定性,定期进行磁盘健康检查至关重要。本文将详细介绍如何使用fsck和badblocks工具来检测和修复文件系统及硬盘扇区的潜在问题。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本主题面向IT专业人士,介绍了Windows Server 2012 R2和Windows Server 2012中的组托管服务账户(gMSA),涵盖了其应用场景、功能改进、硬件和软件要求以及相关资源。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • 本文详细介绍了如何在WebStorm中配置File Watchers,以实现在编辑LESS文件时自动生成压缩后的CSS文件和对应的源映射(.map)文件。通过简单几步设置,可以大幅提升前端开发效率。 ... [详细]
  • 本文介绍如何将自定义项目设置为Tomcat的默认访问项目,使得通过IP地址访问时直接展示该自定义项目。提供了三种配置方法:修改项目路径、调整配置文件以及使用WAR包部署。 ... [详细]
  • 配置多VLAN环境下的透明SQUID代理
    本文介绍如何在包含多个VLAN的网络环境中配置SQUID作为透明网关。网络拓扑包括Cisco 3750交换机、PANABIT防火墙和SQUID服务器,所有设备均部署在ESXi虚拟化平台上。 ... [详细]
  • 本文将详细介绍如何在 Windows 10 中创建完整的系统映像备份,确保您的数据安全并提供详细的恢复指南。 ... [详细]
author-avatar
啊123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有