十六 线程栈
来源:互联网 发布:伪随机算法因素 编辑:程序博客网 时间:2024/04/30 03:00
当系统创建线程时,会为线程栈预订一块地址区域(从进程地址空间区域)(每个线程都有自己的线程栈),并调拨一些物理存储器。默认情况是2MB的地址区域,并调拨2个页面的存储器:区域最顶部的(地址最高)的两个页面。
在线程执行之前,栈指针指向顶部第一个页面的尾部,这个页面就是线程开始执行使用栈的地方,第二个页面成为防护页面。随着线程调用越来越多的函数,需要的线程栈需要也越来越多。因此,“当前页面”和“防护页面”随着需要而下移。如图:
当线程试图调用防护页面时,系统会为防护页面下面的一个页面调拨物理存储器,并设为防护页面。该技术使得系统在真正需要的时候才增大线程栈的存储器大小。如图:
当系统给最后第二个调拨物理存储器时会引发一个栈溢出的异常(栈底最后一个页面始终不会被调拨物理存储器,即不会被使用,这是为了隔离(否则如果线程栈空间不断需要增大,那么可能占用0x800000000以下的已经被其他占用的空间,进行改写,造成难以扑捉的问题!))。因此如果此时继续使用线程栈,就会引发整个进程终止——而不仅是当前线程。
0 0
- 十六 线程栈
- 《Windows核心编程》读书笔记十六 线程栈
- 第二十六章 线程
- UNP函数笔记十六: 线程
- UNP第二十六章 线程
- UNIX网络编程----线程(二十六)
- 基础篇(十六) Service和子线程
- Java学习笔记(十六)--线程
- 十六
- 十六
- 十六
- Windows核心编程<读书笔记十六>线程的堆栈
- 黑客编程教程(十六)线程插入技术
- 孙鑫 第十五/十六课之一 线程同步Mutex
- 孙鑫 第十五/十六课之二 线程同步Semaphore
- 孙鑫 第十五/十六课之三 线程同步Event
- 孙鑫 第十五/十六课之四 线程同步CriticalSection
- (孙鑫 十六) 线程同步与异步套接字编程
- linux 数据拷贝时间问题
- Regular Expression Matching
- _IO, _IOR, _IOW, _IOWR详解
- linux搭建ftp
- 好文章, Qt中 QString 和int, char等的“相互”转换
- 十六 线程栈
- 解决16:10分辨率显示器ubuntu开机黑屏问题
- hdu 1279 验证角谷猜想(水题,位运算)
- Android-Lint:查错与代码优化利器
- linux system program的几个验证
- C# MVC4中Html文件中调用js文件,发现在js文件中的动态的写页面的时候中文乱码
- 线程的状态转移
- 黑马程序员-java多线程
- 通过 Jersey 客户端 API 调用 REST 风格的 Web 服务