windows核心编程---线程栈
来源:互联网 发布:清穿记事 作者 知华年 编辑:程序博客网 时间:2024/06/18 17:26
-线程栈
1.系统创建线程时,会为线程栈预订一块地址空间区域,并给区域调拨些物理存储器.
默认:预订1MB,调拨2页面。
应用指定:
/Freserve/STACK:reserve[,commit]
API指定:
CreateThread/_beginthreadex。
2.举例:
页面大小设为4KB。
当线程试图访问防护页面中的内存时,系统会得到通知。
系统先给防护页面下的那页面调拨存储器,再去除防护页面的PAGE_GUARD标记,把该标记指定给新调拨页面。
新调拨页面为0x08001000时,不会给该页面指定该标记。这意味着栈的地址空间区域已放满了所有物理存储器。
永远不会给线程栈最底部页面调拨存储器。
给此页面调拨存储器时,还执行一额外操作:抛出EXCEPTION_STACK_OVERFLOW异常。通过结构化异常处理。系统会在发生这一情况时,通知程序,使其可得体地恢复。如试图访问0x08000000页面中内存,系统会抛出访问违规异常。
如在访问线程栈时,引发访问违规异常,系统会收回控制权,将其交给windows错误报告服务,后者,会弹出对话框,再终止进程。
应用可用SetThreadStackGuarante,来避免,借此抛出EXCEPTION_STACK_OVERFLOW。
-C/C++运行库的栈检查函数
确保已给线程栈调拨了物理存储器。
阅读全文
0 0
- windows核心编程---线程栈
- windows核心编程--线程
- windows 核心编程 线程
- windows核心编程--线程
- windows核心编程--线程
- Windows核心编程--线程
- 【WIndows核心编程学习笔记】线程栈
- Windows核心编程(十五)线程栈
- 《Windows核心编程》之“线程栈”
- 《Windows核心编程》读书笔记十六 线程栈
- windows核心编程--线程高级
- windows核心编程--线程池
- windows核心编程--线程高级
- windows核心编程--线程池
- Windows核心编程:线程基础
- Windows核心编程:线程调度
- 线程基础----Windows核心编程
- windows核心编程--线程高级
- 通过props和state实现React子父组件传参
- IDEA(含WebStorm)下NodeJS开发的Unresolved function or method post() 问题
- SpringTask执行定时任务中调用方法中断问题
- tensorflow+nlp第一课——对rnn模型的总结
- 邮件开发涉及到的一些基本概念
- windows核心编程---线程栈
- vmware eth0找不到的问题
- 使用 jdbc 从数据库中查询数据
- leetCode-Can Place Flowers
- 在Java中如何使用transient
- hdoj-4847Wow! Such Doge!
- Shell脚本实例(二) 向指定目录下不断产生指定大小的文件
- Java面向对象01----类和对象
- SQL Server 2012基本操作