广嵌科技  广嵌教育  广嵌威客  English  
 
首页 > 软件开发 > 驱动设计 > 内核栈的使用
内核栈的使用
来源:华清远见  作者:华清远见嵌入式培训中心讲师 刘洪涛 时间:2008-08-27 发布人:华女
  今天和一个朋友聊天,朋友说在编写驱动时遇到一个怪异的问题。他在内核中使用了一个深度函数调用(多层嵌套的函数),但没有实现预定的效果,但如果把嵌套去掉,函数就没问题了。当时我也没有多想,就回答可能是编译器的问题。回来后头脑中又浮现出这个问题,突然想到内核栈,觉得这个问题的原因应该出在内核栈上。下面简要介绍下内核的知识。

  用户空间运行的程序可以从用户空间的栈上分配大量的空间来存放变量或数组、大的结构体。之所以可以这么做,是因为用户空间栈本身比较大,而且还能动态增长。进程的内核栈即不大也不能动态增长;它在32位机上的内核栈为8KB,而64位机是16KB。

  每个进程都有自己的内核栈。进程在内核执行期间的每个调用链必须放在自己的内核栈上。中断处理程序也使用配它们打断的进程堆栈。这就意味着,在最恶劣的情况下,8KB的内核栈可能会被多个函数的嵌套调用链和几个中断程序来共享。呵呵,显然深度的嵌套会导致溢出了。

  节省内核栈的方法有:减少局部变量、大型数组和结构体、嵌套调用链。

·上一条:离子迁移谱仪嵌入式系统的设计
·下一条:嵌入式设计:随着标准一起变小

评论
发布者 标题 发布日期
暂没有任何评论
以下发言只是广嵌网会员个人意见,非本网立场 查看更多评论

发表评论
·尊重网上道德,遵守中华人民共和国的各项有关法律法规。
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任。
·本站管理人员有权保留或删除其管辖留言中的任意内容,本站有权在网站内转载或引用您的评论。
·参与本评论即表明您已经阅读并接受上述条款。
标题:
发布者:
内容:
验证码:

相关信息
·嵌入式设计:随着标准一起..
·LCD彩色图形显示和英文..
·基于嵌入式PLC芯片组的..
·Blackfin处理器及..
·基于虚拟存储嵌入式存储系..
·双口RAM CY7C02..
·自制一款适合小功率胆机的..
·车用音频功率放大器
·WiFi与短波收音机芯片..
·移动多媒体广播产业链初步..
Copyright ©2005-2007 广东省嵌入式软件公共技术中心.All Rights Reserved.版权所有 复制必究
客户服务支持:020-32068395-832 24小时服务热线:13631411558
技术支持与报障:gdesc@midea.com.cn 020-32068395-807/809
粤ICP备05104135号