Chinaunix首页 | 论坛 | 博客
  • 博客访问: 253491
  • 博文数量: 106
  • 博客积分: 535
  • 博客等级: 下士
  • 技术积分: 1020
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-27 14:13
文章分类

全部博文(106)

文章存档

2021年(10)

2020年(4)

2019年(2)

2018年(5)

2017年(6)

2016年(10)

2015年(15)

2014年(16)

2013年(25)

2012年(9)

2010年(4)

我的朋友

分类: Android平台

2013-05-26 23:01:37

  Linux每一个进程都有两个堆栈,一个是内核态堆栈,一个是用户态堆栈。
 内核态堆栈:Linux在创建一个新的进程的时候(fork),会申请两页内存,用来做内核态的堆栈,同时将thread_info的信息存放在这个内核堆栈上面,所以内核态的堆栈的可用量就是8K-sizeof(thread_info)。
                    这样的好处是,在内核态通过堆栈指针sp就可以得到当前进程的thread_info结构,这个结构的第一个成员便是task_struct进程描述符结构。
  用户态堆栈:既是存在用户线性区的地址上面。

 当发生中断是,进程就会从当前进程的用户态堆栈切换到内核态堆栈,并将当前进程的信息保存到内核态堆栈上面,当进程返回到用户层是进程就从当前的内核堆栈中取出相应的现场信息,恢复当前用户态进程的执行。
  参考http://blog.sina.com.cn/s/blog_8ffd622b0100w78l.html
阅读(1274) | 评论(0) | 转发(0) |
0

上一篇:linux面试

下一篇:GPS NMEA分析

给主人留下些什么吧!~~