关于windows中进程地址空间问题

共聚焦显微镜的光源、工作原理与选型 共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。 阅读详情

关于windows中进程地址空间问题

楼主csusuntao(孙涛) 2005-10-18 20:07:58 在 VC/MFC / 进程/线程/DLL 提问

就32位x86而言,进程的地址空间共有4g。      
  0X00000000-7FFFFFFF是用户地址空间:这个地址空间中的放的东西具体地址是什么(尽量详细点),比如代码段,数据段,堆段,栈段还有bss段?进程的默认堆有多大,地址是多少,如果再申请的话地址怎么分配?主线程的两个堆栈地址分别是什么,其他线程的堆栈地址怎么分配?线程的两个堆栈是用来给函用的还是什么作用,线程切换的时候寄存器的信息要保存,它保存在什么地址了?      
  0X80000000-FFFFFFFF是内核地址空间:这个地址空间中的放的东西具体地址是什么(尽量详细点),比如驱动放在什么地址,页表怎么放的,分页和不分页怎么放?      
  线程本地存储器的地址在什么地方?      
  另外关于c语言的:除各种运行时间库外一门编程语言到底是怎么出来的,它到底包括什么东西?(比如c语言),难道仅仅是规定语法,然后由其他人去写编译器把你的语法翻译成汇编语言(估计不会是这样的),这样一来不是说语言怎么样,而是谁的编译器做得好。      
  脑子有点大,请高手指教。提的问题本身肯定就有不少错误,望指教。请不要介绍去看书,头大的。 问题点数:100、回复次数:28Top

1 楼doway(john)回复于 2005-10-18 20:22:09 得分 0

不会看书,死路一条,楼主可以改行了。:)Top

2 楼csusuntao(孙涛)回复于 2005-10-18 20:27:37 得分 0

多谢,领教了!Top

3 楼K()回复于 2005-10-18 22:09:56 得分 0

去看windows程序设计和编译原理-   -;Top

4 楼csusuntao(孙涛)回复于 2005-10-18 22:24:47 得分 0

晕,不是说了不要介绍书的吗?Top

5 楼csusuntao(孙涛)回复于 2005-10-18 22:25:59 得分 0

看过书的来说一下吧,就当复习一下吧Top

6 楼power77()回复于 2005-10-18 23:17:48 得分 0

语言是给人用的,又不是给机器用的,呵呵Top

7 楼qhfu(改个名字)回复于 2005-10-18 23:25:02 得分 0

《windows   核心编程》内存管理部分,,Top

8 楼doway(john)回复于 2005-10-18 23:41:14 得分 1

哈,再详细点   :)  
   
  第三部分       内   存   管   理  
  第13章       Windows的内存结构 299  
  13.1       进程的虚拟地址空间 299  
  13.2       虚拟地址空间如何分区 300  
  13.2.1       NuLL   指针分配的分区—适用于  
                            Windows   2000和Windows   98 300  
  13.2.2       MS-DOS/16位Windows   应用程序兼容  
                            分区—仅适用于Windows   98 301  
  13.2.3       用户方式分区—适用于Windows   2000  
                            和Windows   98 301  
  13.2.4       64   KB禁止进入的分区—仅适用  
                            于Windows   2000 302  
  13.2.5       共享的MMF分区—仅适用于  
                            Windows   98 303  
  13.2.6       内核方式分区—适用于Windows    
                            2000和Windows   98 303  
  13.3       地址空间中的区域 303  
  13.4         提交地址空间区域中的物理存储器 304  
  13.5       物理存储器与页文件 304  
  13.6       保护属性 307  
  13.6.1       Copy-On-Write   访问 308  
  13.6.2       特殊的访问保护属性的标志 309  
  13.7       综合使用所有的元素 309  
  13.7.1       区域的内部情况 312  
  13.7.2       与Windows   98地址空间的差别 315  
  13.8       数据对齐的重要性 319  
  Top

9 楼qhfu(改个名字)回复于 2005-10-19 00:20:06 得分 0

这几天正在研读中,,这本书写得很好,,不过觉得翻译一般   ,,   不知道哪里有原版,看不懂可以对照一下。Top

10 楼conglingkaishi(请不要给我分)回复于 2005-10-19 08:00:23 得分 0

呵呵,楼主问的问题我也想知道,受益了。Top

11 楼csusuntao(孙涛)回复于 2005-10-19 10:57:22 得分 0

实话跟大家说吧,核心编程我看过了,我觉得他讲的不够详细,或者是我看得不懂所以才来这问的,就怕大家给我说让我看了,结果没一个真正帮我的,晕死!  
  它有讲代码段具体地址是什么吗?  
  它有讲线程的两个堆栈地址什么吗?他讲的线程堆栈那一章举的例子地址是“保留的起始地址是0   x   0   8   0   0   0   0   0   0   ”,我就是看不懂才来问的。  
  大家的回帖让我很兴奋,但是也请大家说点实际的,根据我的要求回帖,这样才能达到这个帖子的效果,才能让我觉得散分散的值得。  
  还是请热心的高手详细指教!多谢了!Top

12 楼qhfu(改个名字)回复于 2005-10-19 12:12:57 得分 10

0X00000000-7FFFFFFF是用户地址空间:这个地址空间中的放的东西具体地址是什么(尽量详细点),  
   
  ======================================================================================  
   
  这是一个逻辑地址空间,32位的windows程序都有4G的逻辑地址空间,在2000中,后面一半是用于操作系统的。进城申请空间是,操作系统首先分配的是64k的逻辑空间,然后再把物理空间映射到逻辑空间。具体的方法和内容,上面都有写吧!    
   
  一般从下到上,是放EXE文件,交换文件,用户DLL,运行库。  
   
  0X80000000-FFFFFFFF  
  这部分放的系统内核的部分,最上面一般放系统代码,接着是DLLs(内核),再是内存映射文件。  
   
  上面都是逻辑空间,   实际用到时才会系统才会装入物理内存。  
   
  主线程的两个堆栈地址分别是什么,其他线程的堆栈地址怎么分配?线程的两个堆栈是用来给函用的还是什么作用,线程切换的时候寄存器的信息要保存,它保存在什么地址了?      
  可参考6.6,结合16章看应该能看懂。。  
   
  比如驱动放在什么地址,页表怎么放的,分页和不分页怎么放?  
  这个应该是操作系统的问题,  
   
  另外关于c语言的:除各种运行时间库外一门编程语言到底是怎么出来的,它到底包括什么东西?(比如c语言),  
  应该是用汇编  
   
  ps:上面只是个人一些理解,不一定是对的,楼主可作参考。Top

13 楼csusuntao(孙涛)回复于 2005-10-19 19:40:54 得分 0

先说一下我以前知道的答案吧:  
  0X00000000-7FFFFFFF:应用程序代码,全局变量,线程堆栈,dll代码;我想知道他们的具体地址是什么?哪个占用多大?-----------个地址空间中的放的东西具体地址是什么(尽量详细点),比如代码段,数据段,堆段,栈段还有bss段?  
   
   
  0x80000000-0xc0000000:内核执行体,HAL,驱动程序  
  0xc0000000-0xc0800000:进程页表和超空间,超空间是什么?我不知道。  
  0xc0800000-0xffffffff:系统高速缓存,分页缓冲池,非分页缓冲池  
  楼上说的内存映射文件不知道在什么地址?  
   
  希望高手把这4g地址中的每个位都讲清楚(最好是这样了)--不好意思,谁让你是高手呢!  
   
  主线程的两个堆栈地址分别是什么,其他线程的堆栈地址怎么分配?线程的两个堆栈是用来给函用的还是什么作用,线程切换的时候寄存器的信息要保存,它保存在什么地址了?    
  看了也没找到具体的地址在哪?  
   
  楼上关于语言的回答没看懂得。  
  Top

14 楼csusuntao(孙涛)回复于 2005-10-19 19:44:10 得分 0

还有请不要再介绍看书了,还指明是哪本书的哪个章节,有的还把目录给粘过来了,看得出来真够费心的。在这多谢了。Top

15 楼conglingkaishi(请不要给我分)回复于 2005-10-21 08:54:11 得分 0

呵呵,兄弟,你要太多会看怕人的。Top

16 楼csusuntao(孙涛)回复于 2005-10-21 14:23:31 得分 0

再等一天就结帖,郁闷!Top

17 楼csusuntao(孙涛)回复于 2005-10-27 15:51:01 得分 0

是我的问题不值得回答还是给分太少?这些问题我真的想搞明白,跪求高手回答,或留下联系方式。Top

18 楼qhfu(改个名字)回复于 2005-10-27 16:48:38 得分 9

楼主到windows地方去问问吧!   那边高手比较多。Top

19 楼csusuntao(孙涛)回复于 2005-10-27 19:49:37 得分 0

多谢楼上的好意见Top

20 楼windcsn(向所有的朋友学习!)回复于 2005-10-28 13:32:33 得分 0

WINDOWS核心编程Top

21 楼teli_eurydice(哭泣的仙人掌。。。。)回复于 2005-10-28 13:50:54 得分 0

upTop

22 楼bownk(光光)回复于 2005-10-28 15:39:34 得分 80

0X00000000-7FFFFFFF是用户地址空间:这个地址空间中的放的东西具体地址是什么(尽量详细点),比如代码段,数据段,堆段,栈段还有bss段?进程的默认堆有多大,地址是多少,如果再申请的话地址怎么分配?主线程的两个堆栈地址分别是什么,其他线程的堆栈地址怎么分配?线程的两个堆栈是用来给函用的还是什么作用,线程切换的时候寄存器的信息要保存,它保存在什么地址了?      
  -------------------------  
  就我理解:  
  1、代码段、数据段这些都是因编器译而异的。没有固定的地址。  
  2、默认堆和栈的大小是可以自己设定的(在链接选项中),至于默认大小和位置还是由编译器说了算。  
  3、如果进程中再申请一个堆的话,按你申请的大小找到一块地址保留,至于在哪,运行时刻申请的地址,没有固定地址。  
  (总的来说,Windows是32位平坦式内存,其什么什么段不重要了!)  
  4,两个堆栈的作用:一个堆栈是用来存储局部变量的,一个是TLS  
  5、线程的堆栈也是任意的,tls也不例外,都在用户模式分区中,因为每个线程(同进程一样)都有一个环境块——TEB(进程的叫PEB),在TEB中记录有tls,当c函数要用到tls时,查一下teb就知道了!  
  6、程线切换是内核的功能,信息是保存到内核模式的堆栈中,不在用户模式中。  
  =================================  
  0X80000000-FFFFFFFF是内核地址空间:这个地址空间中的放的东西具体地址是什么(尽量详细点),比如驱动放在什么地址,页表怎么放的,分页和不分页怎么放?      
  -----------------  
  可以说这个地方放的是整个windows,因为windows不是微内核的,也就是说它的进程管理、I/0控制等等都是内核模式的,不是单独的进程,都放在这个共享映射的分区中!至于要有多具体,要看微软的大度了!  
  =================================  
  另外关于c语言的:除各种运行时间库外一门编程语言到底是怎么出来的,它到底包括什么东西?(比如c语言),难道仅仅是规定语法,然后由其他人去写编译器把你的语法翻译成汇编语言(估计不会是这样的),这样一来不是说语言怎么样,而是谁的编译器做得好。      
  --------------------------  
  不懂你问的什么意思!CRT是基于操作系统的,在不同的操作系统上有不同的实现。语言其实就是用来翻译算法的,至于哪种语言(语法,结构)好用就是各显神通了!以前觉得面向过程不错,所以有了C,现在面向对象,所以火了C++,然后有人觉得C++用起来困难,所以又有了Java、C#,也许以后面向问题了,又会有新的语言出来!  
  Top

23 楼csusuntao(孙涛)回复于 2005-10-29 18:37:21 得分 0

TO:光光  
  终于有肯解答问题的高手了!  
  -----------------------  
  1、代码段、数据段这些都是因编器译而异的。没有固定的地址。  
  2、默认堆和栈的大小是可以自己设定的(在链接选项中),至于默认大小和位置还是由编译器说了算。  
  3、如果进程中再申请一个堆的话,按你申请的大小找到一块地址保留,至于在哪,运行时刻申请的地址,没有固定地址。  
  (总的来说,Windows是32位平坦式内存,其什么什么段不重要了!)  
  -------------------------------------------------------  
  你说的这些结论是不是对其他操作系统平台的编译器也适用?是不是因为Windows是32位平坦式内存,所以这些都交给编译器了?与平坦式内存相对应的内存方式是什么?  
   
  =================================  
   
  4,两个堆栈的作用:一个堆栈是用来存储局部变量的,一个是TLS  
  5、线程的堆栈也是任意的,tls也不例外,都在用户模式分区中,因为每个线程(同进程一样)都有一个环境块——TEB(进程的叫PEB),在TEB中记录有tls,当c函数要用到tls时,查一下teb就知道了!  
  6、程线切换是内核的功能,信息是保存到内核模式的堆栈中,不在用户模式中。  
  -------------------------------------------  
  我记得两个堆栈是用户模式下的堆栈和核心模式下的堆栈。不知道对不对?核心模式下的堆栈的主要作用是用来保存进程切换时候的信息的吗?tls你确定是在用户模式下吗?  
   
  =================================  
   
  可以说这个地方放的是整个windows,因为windows不是微内核的,也就是说它的进程管理、I/0控制等等都是内核模式的,不是单独的进程,都放在这个共享映射的分区中!至于要有多具体,要看微软的大度了!  
  -------------------------------  
  windows是不是微内核不能乱下定论吧,至少有点“微内核”的意思。它的进程管理、I/0控制等等都是内核模式的,都放在这个共享映射的分区中,但这些都是以服务的方式提供的是不是单独的进程我不知道。我记得win2000是客户/服务器模式,头大了,我都不知道自己要问什么。  
  =================================  
   
  CRT是基于操作系统的,在不同的操作系统上有不同的实现。语言其实就是用来翻译算法的,至于哪种语言(语法,结构)好用就是各显神通了!  
  ------------------------------------------------  
  可能我没有说清楚,我想知道怎么从头开发一种语言?假设我现在想开发一门语言,我该怎么做?c语言是由bell实验室“发明”的,这个bell实验室是不是朗讯的贝尔实验室,不好意思,跑题了。c语言作为一门语言,它包括什么(到底需要发明什么),语法,关键字这些是规定不需要发明吧?  
   
   
  Top

24 楼csusuntao(孙涛)回复于 2005-10-29 18:38:49 得分 0

忘了,我问的问题太多,可是帖子最高加分是100,我也没办法,又不想开新帖,怎么办?Top

25 楼bownk(光光)回复于 2005-10-30 13:03:20 得分 0

1.其它操作系统不熟,补充一下,前面说的可能让你有误解,我说的编译器还包括链接器,当系统创建一个进程时,会相应的创建一个进程块(内核中)和进程环境块(PEB,用户模式中,固定在紧靠64KB不可访问区旁边),加载exe时,会查看里面的链接信息,如果没有打开/heap指定大小,系统默认1MB大小随机算法分配空间,然后把分配到的指针保存到PEB中(不是都交给编译器了)。保护模式下的平坦式内存(flat)是说访问内存不用段:偏移地址了,跑题了,不说这个了!再说详细点,win2k用户模式分区布局分别是:  
  NULL区  
  用户模式区  
                |(code、data、heap、stack)  
                |第n个TEB  
                |第n-1个TEB  
                |……  
                |第0个TEB  
                |PEB  
  不可访问区(这个里面有一个系统变量标明了第n个TEB的前一个地址,也就是用户实际可用的最大地址)  
   
  2.每个线程至少有一个存取局时变量的栈吧,要不int   a;往哪放?TLS,Thread   Location   Stack,嘿嘿,顾名思义,本地的栈,不是放用户模式放哪?再确切点,(我说过了)TLS是存储在TEB中的,而TEB是在用户模式中的。  
  3.Windows不是微内核的,不是我说的,是根据定义来的,至于说有点“微内核”,大概就是指Win2000下应用程序不可以直接访问内核模式空间,就像不可以访问微内核的系统组件进程的私有地址空间吧。你说“是不是单独的进程我不知道”,但你已经知道了0x80000000-0xc0000000:内核执行体,HAL,驱动程序……,如果是微内核,硬件抽像、驱动程序等这些如果是单独进程,不应该有自己的进程的空间吗?2GB的内核空间啊!!!再怎么微,也有2GB啊,还能叫微内核啊?!!!(确实,有些人说Windows是微内核的,如果楼主要讨论这个问题,可以去驱动开发组)  
  4.内核模式的栈主要是供系统组件如进程调度,中断,I/O等用的。  
  5.最后一个问题,要创新的是一种编程思想,C是面向过程的思想,C++开创的面向对象,Java是C++的基础上,又开创了可移植、垃圾回收等思想。Top

26 楼csusuntao(孙涛)回复于 2005-10-30 14:40:18 得分 0

TO:光光  
  再问一次吧,要不我不甘心....  
  1.进程的环境变量和命令行参数是不是都在进程控制块中?  
  2.保护模式下的平坦式内存使用虚拟地址(线性地址)而不使用逻辑地址(段:偏移地址)?  
  3.晕阿,tls就是线程在用户模式下的那个堆栈?我原来以为tls和那两个堆栈是分开的。  
  4.语言是编程思想。假如我有一种新的思想,然后我把实现这种思想所需要的关键字和语法规定一下,这就形成了一门语言?编译器的厂商负责翻译这些语法和关键?  
  多谢了!  
  Top

27 楼bownk(光光)回复于 2005-10-30 15:44:46 得分 0

1.进程的环境变量指什么?进程ID,句柄,创建时间等内核要用来管理进程的就放在EProcess块(内核中),进程的入口函数地址,堆指针,栈指针……这些就放在PEB中(用户模式中)。命令行参数我记得是压入主线程栈的,不在EProcess和PEB中。  
  2.Win32下不用段:偏移地址。  
  3.tls和线程用户模式下的普通栈是不同的。两个栈都在teb中保存有信息,普通栈是保存的是一个指针,tls是以数组形式完全含在teb中,tls本来容量就不大,并且大小固定的。  
  4.差不多是这样的。Top

28 楼bownk(光光)回复于 2005-10-30 15:53:59 得分 0

说错了,PEB中的没有栈指针,栈指针是TEB中的。

2021-09-29 每天几个LCEDA小知识——如何交叉选择并阵列放置元器件 立创EDA专业版之交叉选择并阵列放置元器件????交叉选择????阵列放置 ????交叉选择 在原理图界面,先框选需要交叉选择的元器件对象,右键,选择交叉选择(如果熟练之后,直接选择元器件,快捷键Shift+X)。 完成上述操作之后,可以看到自动跳转到PCB绘图界面,并自动选定PCB中相关的元器件,接下来不要取消选择的状态,在相关元器件被选中的情况下,即可开展阵列放置,将这些元器件都放在一个区域,方便PCB画线前的布局工作。 ????阵列放置 在布局菜单栏中,选择分布,选择阵列分布, 在弹出的对话框 阅读详情

相关推荐

ESP32+ST7789 LCD屏实战:5分钟搞定中文显示与图片渲染(附完整代码)

本文提供了一份详细的ESP32驱动ST7789 LCD屏幕的实战指南。通过清晰的SPI硬件连接说明、ESP-IDF框架下的初始化代码,以及图片渲染与中文字库构建的核心算法,帮助开发者快速实现中文显示与图片渲染功能,并附有完整的代码示例和性能优化技巧。

weixin_29189377的博客 437

告别安装失败:详解Kubernetes 1.35在CentOS下的系统依赖与内核调优(swap、防火墙、SELinux全搞定)

本文详细解析了Kubernetes 1.35在CentOS系统下的安装依赖与内核调优,包括swap禁用、网络参数配置、防火墙与SELinux设置等关键步骤。通过实战命令和原理分析,帮助用户彻底解决安装过程中的常见问题,确保Kubernetes集群的稳定性和性能。

weixin_30485379的博客 886

【破局之道】LangChain4j 0.31.0 + Java 8 + Spring Boot:在“过时”环境中构建本地大模型应用的实战指南

本文为使用Java 8和Spring Boot等“过时”技术栈的团队提供了构建本地大模型应用的实战指南。通过采用LangChain4j 0.31.0这一兼容版本,结合Ollama部署本地大模型,开发者无需升级JDK即可在现有项目中快速集成AI能力,实现智能问答、文档摘要等功能,为传统项目注入创新活力。

t4y5u6i7o的博客 557

Windows找到隐藏的子进程号

wmic process where Caption="DingTalk.exe" get Caption,ParentProcessId,ProcessId

Ericohe的博客 605

Zynq UltraScale+ MPSoC-dp14 standalone

EDID HDCP AR# 64652 How to port the DisplayPort 1.4 TX subsystem example to a custom board dp v2.1 example design color format change DisplayPort-DP接口知识

zhuxl24的博客 2671

从 SOAUTH2 到系统用户,SAP AS ABAP 里配置 OAuth 2.0 Client 的完整落地思路

SAP OAuth 2.0客户端配置的核心在于建立系统级信任关系。在AS ABAP中,每个OAuth 2.0客户端必须关联一个System类型的用户账号(通过SU01创建),并建议采用业务语义明确的命名规范(如ZBTP_PO_APPROVAL_APP)。关键配置包括:客户端认证方式(推荐SSL证书而非共享密钥)、Token生命周期(默认3600秒)、Scope访问范围,以及根据应用场景选择Authorization Code或SAML 2.0 Bearer等授权模式。项目实践中应避免混合配置不同授权类型,而

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 986

Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?

Windows使用一个系统:虚拟寻址系统。该系统把程序可用的内存地址映射到硬件内存中的实际地址上,这些任务完全有Windows后台管理,其实际结果是32位处理器上的每个进程都可以使用4GB的内存------无论计算机上有多少硬盘空间(在64位处理器上这个数值会更大)。这个4GB内存实际上包含了程序的所有部分------包括可执行代码,代码加载的所有dll,以及程序运行时使用的所有变量的内容。这个4

ojlovecd的专栏 6457

在 ABAP Cloud 中玩转 CL_ABAP_PARALLEL 并行处理:从原理到实战

ABAP并行处理框架CL_ABAP_PARALLEL解析 本文系统介绍了SAP ABAP环境中实现并行处理的CL_ABAP_PARALLEL框架。该框架通过封装异步RFC和对话进程,为开发者提供了面向对象的API,显著提升大批量数据处理的效率。 文章首先分析了ABAP环境需要并行处理的原因:传统的串行处理在面对百万级数据时效率低下。然后详细介绍了CL_ABAP_PARALLEL的设计思路,它是一个"小型线程池"式的同步并行框架,适用于批量计算场景。此外,文章重点讲解了控制并行任务的关键参

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 338

C#面:一个进程可以访问的Windows地址空间有多大?是否等于系统的虚拟内存大小吗?这两方面将对系统的设计产生什么样的影响 ?

一个进程可以访问的Windows地址空间大小取决于操作系统的位数。

那个那个鱼的博客 710

解锁IPG Photonics SmartWeld系统,开启焊接新时代

SmartWeld 系统是 IPG Photonics 研发的一款先进的激光焊接解决方案,它隶属于自动化激光焊接系统类别 ,但却凭借一系列创新技术和独特设计,在众多同类产品中脱颖而出。该系统基于 IPG 在光纤激光技术领域的深厚积累,融合了先进的光束控制、智能监测和自动化控制等技术,旨在为工业制造提供高效、精准且稳定的焊接工艺。与传统激光焊接系统相比,SmartWeld 系统的独特之处首先体现在其光束控制技术上。它能够精确地调整激光束的能量分布、光斑大小和形状 ,以适应不同材料和焊接工艺的需求。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1428

NeRF-Pytorch(训练自己的数据集过程全记录+环境配置+COLMAP+问题解决)

写于2025/1/26,在用NeRF训练自己的数据集过程中该踩的坑都踩过了,发现网上并没有详细完整写这些问题解决过程的帖子,遂自己进行一个全记录和复盘。 整篇文章包括:NeRF训练环境配置;COLMAP三维重建过程(直接给出代码,规避一些bug);在训练时候出现的问题。 本篇文章仅针对llff格式数据集。

m0_62577716的博客 1774

Windows 虚拟内存理解

这篇文章写于2015年,之前仅作为私人文档,现在公开如下。 1. 问题 Windows 32位系统中,虚拟内存地址空间可以达到4GB,且每个进程都可独享虚拟内存,其中内核代码可以访问整个4GB虚拟地址空间,用户态只能访问2GB虚拟地址。 问题:如果一个台PC中,内存很小,例如只有1GB,如果有多个用户进程都想访问到2GB内存空间,即多个进程想访问的内存空间的总和远超过1GB的内存空间,这如何...

夜风里唱的专栏 1609

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

深入探究Windows平台客户端安全问题-进程地址空间入侵和白加黑高阶利用

标 题: 深入探究Windows平台客户端安全问题-进程地址空间入侵和白加黑高阶利用 时 间: 2014-09-08,00:03:51 前言 为了避免被读者骂“标题党”,笔者在文章开头先澄清一下这个高大尚的“进程地址空间入侵”的可替代词语—注入。 看完第一句还能看到这里的读者一般有两种:1.初学者,实在是不懂所以需要学习的同学 2.大牛,只是想看看笔者打算怎么来炒“注入”这

Less Is More 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

进程地址空间详解

进程地址空间详解   内存管理器给每个进程(例如Windows Explorer、记事本和Word)指派一部分物理内存 堆,进程创建时,在进程空间建立的区域,由堆管理器来管理。进程可以有多个堆。有一个默认堆为1M,可扩大。 通过命令,改变其大小:#pragma comment(linker,"/HEAP:102400000,1024000")##############...

zgq_tjpu的专栏 253

Windows入门学习2---进程和线程

摘要:本文介绍了进程和线程的基本概念及其在32位和64位操作系统下的内存分配方式。32位系统进程拥有4GB虚拟地址空间,分为空指针、用户和内核模式;64位系统则拥有16TB空间,分为用户和内核模式。文章详细说明了Windows API中CreateProcess函数创建进程的方法,并演示了如何用Qt创建多线程程序。针对线程间通信问题,提出使用信号槽机制解决子线程访问主线程UI的问题,确保程序在死循环时仍能响应界面操作。通过进度条案例展示了多线程编程的实际应用。

zyxgsj的博客 663

进程、线程区别

在32位的Windows系统中,术语多任务是指系统可以同时运行多个进程,而每个进程也可以同时执行多个线程。 进程就是应用程序的运行实例。每个进程都有自己私有的虚拟地址空间。每个进程都有一个主线程,但可以建立另外的线程。进程中的线程是并行执行的,每个线程占用CPU的时间由系统来划分。 可以把线程看成是操作系统分配CPU时间的基本实体。系统不停地在各个线程之间切换,它对线程的中断是汇编语言级的。系统为

孔祥锐 768

生产者/消费者问题在windows2000下的实现

一、问题描述生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。本作业要求设计在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线

elmar的专栏 3460

Win7 创建进程

1.在vista, Windows 7 下用::CreateProcess 存在第一次运行权限问题,所以当时采用了ShellExecute   CreateProcess可以创建当前进程的子进和,可以继承当前进程的内核句柄。   Winexec,ShellExecute可以创建与当前进程不同地址空间的进程   ...

java-he 203

Windows虚拟内存的使用(五)

 VirtualQuery的使用 VirtualQuery函数可以查询本进程地址空间中内存区域的详细情况(区域大小,区域内容等信息) 函数原型:DWORD VirtualQuery(LPVOID lpAddress,PMEMORY_BASIC_INFORMATION lpBuffer,DWORD dwLength); lpAddress:表示要查询状态的内存区域开始地址 lpBuff

1008

python在windows和linux下有什么不同,Windows和Linux之间的Python多进程差异

I have a script called jobrunner.py that calls class methods in main.py. See below...# jobrunner.pyfrom multiprocessing import Processimport mainfrom main import BBOXdef _a(arg):f = main.a()print f.ru...

weixin_36031812的博客 407

【日积月累】关于进程 线程和一些常见的多线程概念

      最近在看《深入解析Windows操作系统》和研究Java的JVM机制,觉得有些概念看起来简单,但是温故而知新,勤总结和归纳,对自己的知识体系的搭建大有裨益。此文引用了网上的一些博文和正在看的书中的一些段落。   【一】 进程和线程的一个形象的类比 在pengpenglin的博文中 【原】多线程编程的基础知识点 中对进程和线程的关系作了一个很好的比喻:  ...

wangding263的专栏 151

python32位 最大内存_64位windows上的Python 32位内存限制

我不知道你为什么认为你的进程应该能够访问4GB。根据MSDN的Memory Limits for Windows Releases,在64位Windows 7上,一个默认的32位进程得到2GB.*这正是它耗尽的地方。那么,有办法解决这个问题吗?好吧,您可以使用IMAGE_FILE_LARGE_ADDRESS_AWARE标志定制32位Python构建,并重新构建numpy和所有其他扩展模块。我不能保...

weixin_39542093的博客 836

Windows Embedded CE 6.0高级内存管理

<br /> <br />原文地址:http://msdn.microsoft.com/en-us/library/bb331824.aspx<br />Windows Embedded CE 6.0高级内存管理<br />摘要<br />本文介绍新版本Windows Embedded CE如何处理内存,它是如何构建的,以及这些变化对应用程序的影响。<br />简介<br />在过去的十年里,Windows Embedded CE的已经从一个新鲜面孔的新人,成长为嵌入式操作系统世界的白发老兵。在此期间,微软

牛牛猛嵌入式的专栏 2482

扩展DLL空间全解析:地址空间、基址冲突与搜索路径

动态链接库(DLL)加载失败是Windows开发与运维中的经典难题,报错形态多变,根源常指向进程虚拟地址空间、文件搜索路径或DLL基址冲突。在32位进程中,用户态默认仅2GB,加载过多DLL容易触发“内存不足”或“初始化例程失败”。通过LARGEADDRESSAWARE标记可扩展至4GB,利用editbin/dumpbin调整基址可避免地址空间碎片化,结合SetDllDirectory等API则能扩展搜索路径。本文系统梳理三种“DLL空间”的技术原理、操作命令与实战陷阱,帮助开发者与运维快速定位并解决DLL

weixin_34101914的博客 167

Madeira 内存管理三大秘密:W^X 双映射、NO_FOOTPRINT 与地址空间预留,iPhone 跑 Windows 游戏的关键

**Madeira 内存管理**指南来了!Madeira 是一个让 x86-64 Windows PC 游戏通过 FEX-Emu + Wine + DXMT 在越狱前的 iOS 上运行的开源项目。iPhone 的 iOS 系统对内存有着极其严苛的限制:代码页不能又可写又可执行、内存超额度会被 Jetsam 直接杀掉进程、关键低地址区间随时可能被运行时占碎。本文将带你拆解 [JITAllocator

gitblog_00833的博客 179

进程地址空间

再讲进程的虚拟地址空间之前,我们先来了解一下程序的地址空间是什么? 程序的地址空间: 这是程序地址空间。而程序是一个个死的代码,所以叫做程序地址空间不合适。程序运行起来之后,才会占用内存。所以我们称为进程地址空间。 来段代码感受一下这个图 #include<stdio.h> #include<stdlib.h> ​ int g_val=100; int g_unval; ​ int main(int argc,char* argv[],char* env[...

m0_52012656的博客 1441

【Linux】进程概念 —— 虚拟内存地址空间

Linux进程地址空间,了解并且深入理解虚拟内存地址空间,重新理解fork函数以及父子进程的相关性质

Hello_World_213的博客 1976
上一篇: new delete malloc free
下一篇: 进程地址空间和虚拟内存
SearchLife
博客等级 码龄20年 51粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值