免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7520 | 回复: 7
打印 上一主题 下一主题

[复制链接]

论坛徽章:
0
1 [报告]
发表于 2010-03-18 09:37 |显示全部楼层
栈的虚拟地址空间是进程运行时分配的,栈的物理页面分配时机是发生缺页异常时。
除非进程over了,物理页面是不会回收的吧,有可能被交换出去。

论坛徽章:
0
2 [报告]
发表于 2010-03-18 10:31 |显示全部楼层
应用态的C程序,通常调用函数返回之后,只是将ESP进行调整。至于栈对应的内存空间,并未立即回收。通常整个 ...
Godbach 发表于 2010-03-18 10:09



嗯,版主说的比较清楚啦。
    栈的虚拟地址空间是进程产生时产生的,每个函数运行时在栈上占用掉一块的空间,有人叫stack frame,
函数运行完毕后这块被占用的栈,被调用者或者自身清除掉,也就是修改一下ESP中的数而已。
在使用虚拟地址空间时,分配到的内存页会在进程结束的时候被释放。没有垃圾回收。

论坛徽章:
0
3 [报告]
发表于 2010-03-18 10:45 |显示全部楼层
stack应该也不是一直会被缺页异常无穷的分配下去。用ulimit -a可以看到每个进程都有个stack size的限制,当 ...
snail_314 发表于 2010-03-18 09:58



   是的,绝大部分资源分配都是有个限制的。写个无限递归导致栈溢出,就是虚拟地址空间的溢出,非物理内存分配的溢出。

论坛徽章:
0
4 [报告]
发表于 2010-03-18 11:55 |显示全部楼层
如果stack size无限制的时候,假如进程不退出,那么进程栈 占用的物理内存不是很大?
chenzhanyiczy 发表于 2010-03-18 11:13



    linux内核没有物理内存的垃圾回收机制,swap可以看成回收吧。当然交换空间用完了,也就无法继续分配物理内存了。

论坛徽章:
0
5 [报告]
发表于 2010-03-18 12:05 |显示全部楼层
如果stack size无限制的时候,假如进程不退出,那么进程栈 占用的物理内存不是很大?
chenzhanyiczy 发表于 2010-03-18 11:13



    会很大的,如果开启了swap机制,其它进程要分配物理页时就会把已被占用的物理页交换出去,然后将该页重分给申请者。
如果这时swap空间用完了,你的进程将会因为分配不到物理页而退出。
如果有很多进程频繁的交换出去而重新分配,系统性能会下降的很厉害,
最明显的体会是系统反应迟缓了,有GUI程序时体会最明显,界面都很难重新刷新,
最糟糕的情况是发生交换抖动,系统基本停止响应。

论坛徽章:
0
6 [报告]
发表于 2010-03-18 12:11 |显示全部楼层
如果stack size没有限制呢
chenzhanyiczy 发表于 2010-03-18 11:08



    上面说的是开启swap机制时的情况,如果没有开启swap机制,申请到多少物理页就使用多少物理页了,
如果其他进程再申请物理页,能分配则分配,不能分配将会因分配不到内存页退出。

论坛徽章:
0
7 [报告]
发表于 2010-03-18 12:19 |显示全部楼层
在不开启swap时,进程结束时回收。
在开始swap时,当其它进程申请物理页而没有足够的物理页时,通过swap机制,交换到磁盘上的方式回收。

论坛徽章:
0
8 [报告]
发表于 2010-03-18 20:47 |显示全部楼层
问题来了,呵呵

环境:
Linux crmop 2.6.18-53.el5xen #1 SMP Wed Oct 10 17:06:12 EDT 2007 i686 athlo ...
chenzhanyiczy 发表于 2010-03-18 18:02



   晕,
  1.    printf("somewhere's value is %c\n",*(a+3024));
  2.    printf("somewhere's address is %p\n",a+3024);
复制代码
这两句是错误的。a+3024越界了。
  首先栈是向下增长的,你用a+3024,想搞溢出攻击吗,嘿嘿
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP