草庐IT

虚拟环境

全部标签

c - 虚拟地址如何转换为其在后备存储上的物理地址?

我们有地址转换表来将进程的虚拟地址(VA)转换为其在RAM中的相应物理地址,但如果该表没有任何VA条目,则会导致页面错误,内核会转到后备存储(通常是硬盘驱动器)并获取相应的数据并更新RAM和地址转换表。所以我的问题是操作系统如何知道后备存储中VA对应的地址是什么?它有单独的翻译表吗? 最佳答案 进程从分配虚拟内存开始。当程序开始实际寻址虚拟内存地址时,最终将导致页面错误。操作系统知道内存访问是有效的。因为它是显式分配的。所以没有造成任何伤害,操作系统只是将VM地址映射到物理地址。如果页面错误是针对一个地址,而该地址之前不是被请求为有

c++ - 是否可以强制Linux在释放后使虚拟内存失效

在Windows上,我注意到尝试取消引用指向最近释放的内存的指针会导致崩溃,并被VisualStudio困住,指出内存无效。这符合预期。但是,执行相同的应用程序和代码路径导致取消引用指向最近释放的内存的指针不会立即导致Linux崩溃。这向我表明Linux内核(或GNUC++运行时)不会很快使释放的内存失效,即使在调试版本上也是如此。该应用程序需要更长的时间才能崩溃。是这样吗?如果是这样,我可以强制更快地取消映射内存吗?如果不是,那是怎么回事? 最佳答案 你试过了吗http://valgrind.org/?它的目的是帮助追踪问题,例如

regex - 在 PowerShell 中,如果环境变量(如 $SystemRoot$)是字符串的一部分,我该如何转换它们?

我正在尝试编写一个脚本,该脚本从一组注册表项中读取文件路径,但这些路径具有%SystemRoot%之类的环境变量。我知道您通常可以使用以下方法查找这些路径的值:$env:SystemRoot例如。但是,如果PS收到一个字符串,如“%SystemRoot%\System32\Winevt\Logs\DebugChannel.etl”,如何将其转换为我需要的完整路径,即“C:\Windows\System32\Winevt\Logs\DebugChannel.etl"?我试过使用regex-replace将%%格式转换为$env:格式:$_.FileName-replace"%(\w*)%

c - OSX/iOS 上的虚拟内存与 Windows 提交/保留行为

将OSX/iOS中的虚拟内存系统行为与Windows中的虚拟内存系统行为进行比较时,我有点困惑。WindowsVirtualAlloc()相关函数及其在保留和实际内存提交和取消提交方面的行为相当简单。对于没有很好讨论的OSX,我一直在研究mach_vm_allocate()、mach_vm_map()等。例如,如果我想创建一组跨平台函数来公开Windows和OSX/iOS之间的公共(public)虚拟内存功能,我将如何管理与Windows相比,OSX上的提交/取消提交之间的区别?因为我不确定我是否理解您是否可以保留虚拟地址范围并将其作为像在Windows上一样的单独操作提交?根据我的理

windows - 删除环境变量不起作用

为什么在Windows7Professional中使用regdeleteHKCU\Environment/F/VTestVar删除环境变量会将其从注册表中删除,但变量仍然存在?详细信息如下:我创建了以下3个.cmd文件:检查变量.cmdechoTestVar=%TestVar%pause设置变量.cmdsetxTestVar123pause删除变量.cmdregdeleteHKCU\Environment/F/VTestVarpause然后我按照以下步骤操作(双击以确保我每次都开始一个新session):双击Checkvariable.cmd,我发现TestVar不存在双击Setvar

windows - GetComputerName WinApi 调用和 %COMPUTERNAME% 环境变量

WinAPI调用GetComputerName和读取%COMPUTERNAME%环境变量是否总是在Windows上返回相同的结果? 最佳答案 不能保证这两个东西是一样的。例如,程序可以更改甚至删除环境变量。程序这样做有点不正常,但在技术上是可行的。 关于windows-GetComputerNameWinApi调用和%COMPUTERNAME%环境变量,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

windows - Windows x64 的 44 位虚拟内存地址限制的背后

http://www.alex-ionescu.com/?p=50.我看了上面的帖子。作者用单链表的例子解释了为什么Windowsx64只支持44位的虚拟内存地址。struct{//8-byteheaderULONGLONGDepth:16;ULONGLONGSequence:9;ULONGLONGNextEntry:39;}Header8;Thefirstsacrificetomakewastoreducethespaceforthesequencenumberto9bitsinsteadof16bits,reducingthemaximumsequencenumberthelist

根本无法使用 Windows Driver Kit 构建环境声明变量

我有一个简单的驱动程序,像这样:#includeNTSTATUSDriverEntry(__inDRIVER_OBJECT*a,__inUNICODE_STRING*b){UNREFERENCED_PARAMETER(a);UNREFERENCED_PARAMETER(b);intc;//thisfailsthebuildreturn0;}一个简单的makefileTARGETNAME=mainTARGETTYPE=DRIVERMSC_WARNING_LEVEL=/W4/WXSOURCES=main.c具有非平凡的构建输出C:\Test>pushd%cd%C:\Test>C:\WinD

windows - 如何在批处理脚本中将所有环境变量恢复为默认值

我有一个.bat脚本。它运行一些命令并更改/添加一些环境变量。然后,在某些时候我需要将它们全部恢复为默认值,就好像我要退出这个脚本并从头开始一个新脚本一样。所以,我需要两者之一:1.清除变量(恢复新cmdsession获取的默认值);2.或在我启动脚本时push所有变量,稍后pop以恢复这些值。我该怎么做? 最佳答案 您尝试过使用SETLOCAL吗?这里有一些关于它的信息:http://ss64.com/nt/setlocal.html 关于windows-如何在批处理脚本中将所有环境变

node.js - 为 Bamboo build设置环境变量

我有一个Bamboo构建,我需要做的其中一件事是执行npminstall命令。这一切都很好,除非它遇到一个依赖项,该依赖项会生成另一个Node实例以在子子进程中运行npminstall。发生这种情况时,我收到以下错误:12-Oct-201512:54:1212-Oct-201512:54:1212-Oct-201512:54:12D:\bamboo-home\xml-data\build-dir\EC-ECB-BUIL\server\node_modules\oracledb>ifnotdefinednpm_config_node_gyp(node"c:\ProgramFiles\no