3794|6

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

系统栈、IRQ栈及任务栈 [复制链接]

小弟新人,开发过程中,突然发现对这几个栈作用不明确,相互之间有什么关联,不同的栈压入的都是些什么东西,还请高手解答。

最新回复

XUEXI  详情 回复 发表于 2009-5-24 22:46
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不同的工作模式用不同的栈。
任务切换,上下文切换的时候用任务栈。
进入中断用中断栈
系统工作模式下,有系统栈
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
就是不同的存储空间,分几个栈是为了相互不影响,比如应用程序的运行不会破坏系统运行。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
这是根据系统不同的情形进行的一种保护操作
系统栈就是专门问系统服务,栈指针此时是指向系统区,当然,这个区的地址是你自己定义的
IRQ是专为中断设计的,也就是中断程序的数据开销维护在中断栈内,当然,这个栈指针是指向中断设置的stack区
任务栈是每个创建的任务独享的栈区,这个栈区一般是全局的数组,当任务调用时,程序的局部数据都在此数组内操作
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果是linux,叫内核栈,当你的内核栈配置成4K的时候,当中断发生时,会有专门的irq栈;
如果配置成8K,则irq用当前进程人内核栈。

每一个应用程序自已的运行时,需要一个栈,这个栈是用来存放你的局部变量的;

而操作系统有一个重要任务就是:任务管理和调度,也就是说你一个应用程序运行时,操作系统也会给你
分配一块资源,这块资源不是给你应用程序里面的代码使用的,而是为了管理你,它管理你,也需要
内存,也需要局部变量,当然,这些管理代码就内核代码的一部分,那它也需要栈,这个栈就是内核栈;

中断会不可预知的到来,当中断到来时,它的处理代码也需要栈,就是上面我所说。

想单方面搞清楚这些问题是不可能,必须要深入学习一下操作系统原理,并看相应的源码。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼上几位讲得很详细,学习了!
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

7
 

XUEXI
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表