惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
The Register - Security
The Register - Security
Stack Overflow Blog
Stack Overflow Blog
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
S
SegmentFault 最新的问题
V2EX - 技术
V2EX - 技术
Hacker News: Ask HN
Hacker News: Ask HN
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Proofpoint News Feed
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
AI
AI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
C
Cybersecurity and Infrastructure Security Agency CISA
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
U
Unit 42
腾讯CDC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
H
Help Net Security
Recent Announcements
Recent Announcements
P
Privacy & Cybersecurity Law Blog
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 热门话题
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Heimdal Security Blog
博客园 - 聂微东
S
Securelist
大猫的无限游戏
大猫的无限游戏
Cloudbric
Cloudbric
Cisco Talos Blog
Cisco Talos Blog

博客园 - 悠然小调

nothing.... Ogre中在SceneNode节点旁显示二维字的代码 博文阅读密码验证 - 博客园 最简单的智能指针原理 模板的特化 计算基类虚表指针在派生类中的偏移量 写一个内存拷贝函数 [转]来自 COM 经验的八个教训 COM本质论学习笔记(一)IDL winsock中select的作用 windows核心编程学习笔记(三)线程池(Thread Pooling) windows核心编程学习笔记(八)结构化异常处理(Structured Exception Handling) [转]亲密接触VC6.0编译器 windows核心编程学习笔记(七)DLL Injection and API Hooking windows核心编程学习笔记(五.续)堆 windows核心编程学习笔记(五)内存映射文件 windows核心编程学习笔记(二)Wait For Kernel Object(s) windows核心编程学习笔记(一)使用Critical Section [转]筛选法求素数
windows核心编程学习笔记(四)windows内存结构/虚拟内存/线程的堆栈
悠然小调 · 2008-03-02 · via 博客园 - 悠然小调

1.虚拟地址空间的大小
•32位系统每个进程的虚拟地址空间是0x00000000 - 0xFFFFFFFF, 4GB,其中 从 0X80000000 - 0xFFFFFFFF为系统为内核占用;
•64位系统每个进程的虚拟地址空间是0x0000000000000000 - 0xFFFFFFFFFFFFFFFF, 16EB,其中 从 0X0000040000000000 - 0xFFFFFFFFFFFFFFFF为系统为内核占用;

2.只说32位系统的虚拟地址空间分配情况
•0x00000000 - 0x0000FFFF: 这段内存是空指针区,同时肯定是不可访问的;
•0x00010000 - 0x7FFEFFFF: 这段是给进程用的,包括有的数据、exe和dll模块,以及内存映射文件;
•0x7FFF0000  - 0x7FFFFFFF: 这64K的区域是禁止访问的,因为紧挨着它就是内核地址,如果中间没有这个阻拦的话,你可以用一个很长的数据覆盖到内核区域,以破坏内核的完整性和正确性——这是不允许的,试图改写该区域,会产生异常,以阻拦进一步读写内核区域;
•0x80000000 - 0xFFFFFFFF: 内核区域。用于线程调度、内存管理、文件系统支持、网络支持和所有设备驱动程序的代码全部在这个分区加载。驻留在这个分区中的一切均可被所有进程共享。也就是说实际上进程可用的地址空间大小为2G - 128K.

3.页面和页面文件
•页面是物理内存中内存单位,方便管理,在x86上是4K(4096字节);
•页面文件是位于物理磁盘上的一个文件,用于暂存物理内存中许久不用的内存的一个缓冲区,用来解决物理内存通常比较小的问题.它也按照4K一个页面的规则划分,目的是可以让物理内存页面和文件中的页面可以方便的互换.

如果要分配一块内存使用,用VirtualAlloc,这将把物理内存上的一块区域映射到虚拟地址空间的同等大小的区域中,如果你Alloc了128K,那么你的可用物理内存将减少128K(前提是MEM_COMMIT)。如果不再使用这段内存,调用VirtualFree,其结果是断开和虚拟地址空间的映射,导致可用物理内存增大128K.

4.保护属性
没啥好说的,需要留意的是PAGE_WRITECOPY、PAGE_EXECUTE_WRITECOPY和PAGE_GUARD.

5.数据对齐
数据对齐是CPU的特性,如果访问一个WORD类型,那么它的起始地址最好能被sizeof(WORD)也就是2整除,此时CPU才获得最好的执行效率,同理DWORD的起始地址就要被4整除,那char数组呢?应该是任意

6.虚拟内存
查询内存使用状态用GlobalMemoryStatus(Ex)
查询某个进程虚拟地址空间的信息用VirtualQuery(Ex)

1).VirtualAlloc(Ex)和VirtualFree(Ex)

注意:当使用这2个函数时,被操作区域的地址总是被自动对齐到64K的边界上,同时操作的大小(dwSize)也总是被对齐到4k的页边界上。

2).Address Windowing Extensions (Windows 2000 only)

需要对这些函数的用法了如指掌,尤其是各种参数的意义(MEM_RESERVE\MEM_COMMIT\MEM_DECOMMIT\MEM_RESET\MEM_RELEASE等等).