Windows核心编程:内存体系结构

Windows核心编程(十三)Windows内存体系结构 一、进程虚拟地址空间 1、每个进程都有自己的虚拟地址空间。对于32位操作系统来说,它的地址空间是4GB。这是因为32位指针可以表示从0x00000000到0xFFFFFFFF之间的任一值。对于64位的操作系统来说有0到2的64次方之间的任一值。 2、由于每个就进程都有自己的地址空间,因此每个进程都只能访问属于自己的地址空间而不能访问其他进程的空间。这保护了进程,也是之所以我 阅读详情

1. 进程的虚拟地址空间

       每个进程都有自己的虚拟进程空间,对32位进程来说,这个地址空间的大小为4GB。因为32位指针可以表示从0x00000000到0xFFFFFFFF之间的任一值。每个进程都有字节专有的地址空间,当进程中的各线程运行时,它们只能访问属于该进程的内存。线程既看不到其他进程的内存,也无法访问它们。


        虚拟地址的分区:

空指针赋值分区,用户模式分区,64KB禁入分区,内核模式分区。


空指针分区是进程地址空间中从0x00000000到0x0000FFFF的闭区间,帮助程序员捕获对空指针的赋值,如果进程中的线程试图读取或写入位于这一分区内的内存地址,就会引发访问违规。


用户模式分区:进程无法通过指针来读取,写入或以任何方式,访问驻留在这一分区中其他进程的数据。对所有的应用程序来说,进程的大部分数据都保存在这一分区。(在Windows中,所有.exe和动态链接库都载入到这一区域。每个进程都有可能将这些DLL载入到这一分区的不同地址,系统同时把该进程可以访问的所有内存映射文件映射到这一分区。)


内核模式分区:是操作系统代码的驻地。与线程调度,内存管理,文件系统支持,网络支持以及设备驱动程序相关的代码都载入到该分区。



《Windows核心编程》之”内存体系结构“ 本文是我在学习完《Windows核心编程》一书”内存管理“相关的几个章节后,结合网络资料(主要是微软的文档),经过思考提炼后,阐述我对”Windows内存体系结构“的认识,并与大家分享。可能有不正确的地方,我会不断学习理解,并更正错误。 一、参考资料(除《Windows核心编程》外): 1,RAM,virtual memory, pagefile, and memory management 阅读详情

相关推荐

《Windows核心编程》读书笔记十三 内存体系结构

第十三章  内存体系结构 本章内容 13.1 进程的虚拟地址空间 13.2 虚拟地址空间的分区 13.3 地址空间中的区域 13.4 给区域调拨物理存储器 13.5 物理存储器和页交换文件 13.6 页面保护属性 13.7 实例分析 13.8 数据对齐的重要性 操作系统所使用的内存体系结构是理解操作系统如何运作的关键。当我们使用一个新的操作系统时,脑海中会涌现出

sesiria的博客 691

Windows核心编程笔记(十三)Windwos内存体系结构

Windows内存管理机制,底层最核心的东西是分页机制。分页机制使每个进程有自己的4G虚拟空间,使我们可以用虚拟线性地址来跑程序。每个进程有自己的工作集,工作集中的数据可以指明虚拟线性地址对应到怎样的物理地址。进程切换的过程也就是工作集切换的过程,如Matt Pietrek所说如果只给出虚拟地址而不给出工作集,那这个地址是无意义的。(见图一)            在分页机制所形成的线性地址空

春暖花开 3143

《Windows核心编程》若干知识点实战应用分享

《Windows核心编程》若干知识点应用实践分享,希望大家能够仔细研读,在提升理论知识水平的同时,也能有效地提高分析解决问题的技能。

dvlinker的技术专栏 3万+

windows内存体系结构

转载自:http://blog.youkuaiyun.com/mwj_88/article/details/8651850 试试渲染,最合适自己的讲解方式:流程中穿插概念。程序运行需经由内存执行。所以讲讲windows内存体系结构。windows内存体系结构由虚拟地址空间和内存两部分组成。内存:如果每个程序运行都直接占用内存,那你开一个冰封王座岂不是要占1G的内存?还能不能干别的了。虚拟地址空间的设计简直是神

stay_focused的博客 618

《Windows核心编程(第五版)》源码深入解析

本文还有配套的精品资源,点击获取 简介:《Windows核心编程(第五版)》是一本深入讲解Windows系统编程的权威书籍,通过源码展示了Windows API、系统服务、线程管理等核心概念。本书旨在帮助开发者理解Windows内部工作原理,并通过实际代码示例学习如何进行高效的应用程序开发。源码覆盖了API调用、线程管理、内存管理、文件系统等关键主题,提供了理论与实践相结合...

weixin_29867767的博客 1667

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1106

Windows API(四)Win32 内存结构

1. 进程的地址空间 进程创建时系统分配4G的地址空间。 1.1 Windows如何划分进程的地址空间 范围 大小 作用 说明 0x00000000 - 0x0000FFFF 64KB 用于NULL指针分配,不可访问 NULL指针区域,师徒读写这一分区中内存地址将会引起访问冲突 0x00010000 - 0x7FFEFFFF 2GB - 64K - 64KB 属于Win 32进...

David 1900

ArcGIS基础:CAD数据转换为GIS数据(符号化显示、数据转换、线转面、空间连接)

1、符号化显示: CAD数据加载进来有很多列表,包含了点【point】、线【polyline】、面【polygon】、标注数据【Annotation】等数据,本次实验我们需要用到的是面数据,也就是.dwgPolygong格式的数据。如下图所示: 把数据加载进来,然后在2处打开属性表,查看CAD数据的属性表,打开后可以发现【layer】图层表示就是地块的用地性质,它就是符号化显示的依据。 我们在数据上右键【属性】,打开图层属性,找到【符号系统】,选择类别中的【唯一值】,然后在【值字段】下拉选择【layer】,

yuanYW7556的博客 2万+

WINDOWS核心编程——Windows内存管理

想要了解Windows内存体系结构首先要对系统的内存的分段分页和进程隔离机制要有所了解。系统为了对进程进行隔离,使得每个进程只能访问自己申请的内存而不能访问其他进程的内存资源,对每个进程的内存使用线性地址编制,在通过内存的分页机制在进程需要访问物理内存时通过进程的页表找到世界的物理内存的地址通过系统读写内存中的数据。在早期总线(20位寻址1M)大于寄存器(16位寻址64k)的情况下为了表示更多的物

pokeyode的专栏 9388

拜耳阵列(Bayer Pattern)以及常见彩色滤波矩阵(CFA)

本文介绍了拜耳阵列的工作原理(Bayer Pattern)以及常用的彩色滤波矩阵(CFA)

风一样的男子(quinta)的博客 7121

CentOS8安装NVIDIA显卡驱动、CUDA和Anaconda

CentOS8安装NVIDIA显卡驱动和CUDA 参考:CentOS nvidia+cuda+cudnn 安装 安装英伟达显卡驱动 1、检查是否安装了NVIDIA的GPU(硬件层面): lspci | grep -i nvidia 2、安装GCC、kernal组件、dkms等 sudo yum install gcc sudo yum install gcc-c++ sudo yum -y install kernel-devel sudo yum -y install kernel-headers s

智慧的旋风的博客 1万+

windows核心编程——内存管理

<br />当进程被创建并被赋予它的地址空间时,该可用地址空间的主体是空闲的,即未分配的。若要使用该地址空间的各个部分,必须通过调用Vi r t u a l A l l o c函数(第1 5章介绍)来分配它里边的各个区域。对一个地址空间的区域进行分配的操作称为保留( r e s e r v i n g )。<br /> <br />每当你保留地址空间的一个区域时,系统要确保该区域从一个分配粒度的边界开始。对于不同的C P U平台来说,分配粒度是各不相同的。但是,截止到撰写本书时,所有的C P U平台(x 8

bonbonjaney的专栏 447

ZYNQ microblaze boot.bin固化步骤

一,ZYNQ移植软核的原理FPGA规模巨大而且功能复杂,因此设计的每一个部分都从头开始是不切实际的。一种解决的办法是:对于较为通用的部分可以重用现有的功能模块,而把主要的时间和资源用在设计中的那些全新的、独特的部分。这就像是你在开发应用程序的时候就不用直接去写驱动物理硬件的代码,而是直接调用Windows提供的API就行了。

wangjie36的博客 2782

[笔记]Windows核心编程《十三》windows内存体系结构

参考 文章目录13.1 进程的虚拟地址空间进程的虚拟地址空间32位进程64位进程13.2 虚拟地址空间的分区13.2.1 空指针赋值区地址范围目的13.2.2 用户模式分区1.在x86 Windows下得到更大的用户模式分区2.在64位windows下得到2GB用户模式分区13.2.3 64KB禁入分区13.2.4 内核模式分区13.3 地址空间中区域预定地址空间中的一块区域13.4 给区域调拨物理储存器13.5 物理存储器和页交换器13.6 页面保护属性13.7 实例分析13.8 数据对齐的重要性 13.

二次元怪兽的博客 1712

【图像分类】卷积神经网络之VGGNet网络模型实现花卉图像识别(附代码和数据集,PyTorch框架)

卷积神经网络之VGGNet网络模型实现花卉图像识别(附代码和数据集,PyTorch框架)

学无止境、积少成多、厚积薄发 2431

YOLO11实战优化:长尾分布解决 | 引入Seesaw Loss配合YOLO11分类头,完美应对类别极其不平衡的现实业务场景

摘要: YOLO11在工业缺陷检测等长尾分布场景中面临尾部类别检测失效的问题,根源在于头部类别样本的负样本梯度压制了尾部类别的学习。传统方法如重采样、Focal Loss等效果有限。Seesaw Loss通过动态调整缓解因子和补偿因子,平衡类别间的梯度分布,结合YOLO11的解耦分类头、Anchor-Free设计和C2PSA/C3K2模块,显著提升尾部类别识别能力。文章详细解析了Seesaw Loss的数学原理,并提供了可直接集成到YOLO11的PyTorch实现代码,为长尾分布下的目标检测提供了实用解决方

2601_95807009的博客 253

Windows核心编程:探索虚拟内存

作者:shenzi链接:http://blog.youkuaiyun.com/shenziWindows核心编程:探索虚拟内存1.系统信息     操作系统中有许多值是由系统所运行的主机决定的,如页面大小和分配粒度等。我们应该在进程初始化时取得这些值,然后在代码中使用它们。GetSystemInfo函数用来取得与主机相关的值:

shenzi的天空 5130

零基础入门simulink1000例--第112例:在 Simulink 中构建一个基本的相控阵雷达波束形成系统仿真模型

摘要:本文详细介绍了使用Simulink实现相控阵雷达波束形成技术的完整流程。从创建Simulink模型、设计天线阵列、信号生成,到波束形成算法实现和结果可视化,涵盖了关键步骤。文章重点讲解了均匀线性阵列的设计、线性调频信号生成、相位偏移计算等核心技术,并提供了MATLAB代码示例。通过Scope或ArrayPlot模块进行结果分析,最终可导出为嵌入式代码部署。该系统展现了电子扫描波束的技术优势,为雷达系统设计提供了有效的仿真方法。

amy_mhd的博客 211

剖析《Windows 核心编程(第 5 版)》:掌握 Windows 平台高效编程秘诀

Windows 核心编程(第 5 版)》凭借丰富的内容和深入的讲解,为开发者全面展现了 Windows 操作系统的核心编程技术。通过学习这本书,开发者不仅能够深入理解 Windows 操作系统的底层机制,还能掌握在 Windows 平台上进行高效编程的方法和技巧。无论是开发桌面应用程序、服务器端程序,还是进行系统级编程,这本书都能为开发者提供强大的支持和指导。对于渴望在 Windows 平台上提升编程能力的开发者而言,《Windows 核心编程(第 5 版)》无疑是一本不可或缺的技术佳作。

数字魔方操控师的博客 1038

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【亲测免费】 深入Windows核心:《Windows核心编程》第五版推荐

深入Windows核心:《Windows核心编程》第五版推荐 【下载地址】WINDOWS核心编程第五版 WINDOWS核心编程第五版 项目地址: https://gitcode.com/open-source-toolkit/70...

gitblog_09773的博客 1434

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Windows核心编程

Windows核心编程学习01.Winwods核心编程:字符和字符串处理02.Windows核心编程:内核对象03.Windows核心编程:进程04.Windows核心编程:线程基础05.Windows核心编程:作业06.Windows核心编程:线程调度07.

shenzi的天空 2567

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

《Windows核心编程》读书心得——内存(内存体系结构)(5)

虚拟内存: 每个进程有自己的虚拟内存,进程内的线程只能访问该进程的虚拟内存,而无法访问其他进程的虚拟内存,也无法访问系统的内存。进程地址空间的划分如下:

suhuaiqiang_janlay的专栏 2221

Windows核心编程-第五版中文版学习资源:深入掌握Windows系统底层编程

Windows核心编程-第五版中文版学习资源:深入掌握Windows系统底层编程 【下载地址】Windows核心编程-第五版中文版学习资源 《Windows核心编程-第五版(中文版)》是一本深入探讨Windows系统底层编程的经典书籍,涵盖进程、线程、内存管理、文件系统和网络编程等核心知识。无论您是开发者、研究者,还是对...

gitblog_06714的博客 1076

windows核心编程

主要用于记录windows核心编程这本书籍的学习。

weixin_45002961的博客 1341

[笔记]Windows核心编程《十七》内存映射文件

参考 文章目录前言一、映射到内存的可执行文件和DLLCreateProcess调用过程二、映射到内存的数据文件三、使用内存映射文件四、用内存映射文件来处理大文件五、内存映射文件和一致性六、给内存映射文件的指定基地址七、内存映射文件的实现细节八、用内存映射文件再进程间共享数据九、以页交换文件为后背存储器的内存映射文件十、 稀疏调拨的内存映射文件 前言 内存映射文件 与虚拟内存相似,内存映射文件允许开发人员预定一块地址空间区域并给区域调拨物理存储器。不同之处在于内存映射文件的物理存储器来自磁盘上已有的文件,而不

二次元怪兽的博客 2431
上一篇: Windows核心编程:(六)用内核对象进行线程同步
下一篇: 1.Android数据库的创建以及添加数据
Windows_and_Linux
博客等级 码龄12年 0粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值