在计算机系统中,栈起到了什么作用?

  • 栈的定义:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称为进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称之为出栈或退栈,它是把栈顶元素删除掉,使其邻居的元素成之为新的栈顶元素。

  • 栈的特点:先入后出。符合这个特征的数据才可以在栈中存储。

  • 在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。

  • 栈在程序的运行中有举足轻重的作用,最重要的是栈保存了一个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。堆栈帧一般包含如下几方面的信息:

  1. 函数的返回地址和参数。
  2. 临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量

栈的作用原理

  • 一个函数设计里面,有2个问题:
  1. 参数传递
  • 传递参数的目的,是为了代码可以重用,让一种方法可以应用到更多的场合,而不需要为N种情况写N套类似的代码。
  • 那用什么方法来做参数的传递?可以选择:
  • 为了速度快,使用cpu的寄存器传递参数。这会碰到一个问题,cpu寄存器的数量是有限的,当函数内再想调用子函数的时候,再使用原有的cpu寄存器就会冲突了。想利用寄存器传参,就必须在调用子函数前把寄存器存储起来,然后当函数退出的时候再恢复。
  • 利用某些ram(随机存取存储器)的区域来传递参数。这和上面a的情况几乎一样,当函数嵌套调用的时候,还是会出现冲突,依然面临要把原本数据保存到其他地方,再调用嵌套函数。并且保存到什么地方,也面临困难,无论临时存储到哪里,都会有上面传递参数一样的困境。
  1. 函数里面也有可能要使用到局部变量,而不能总是用全局变量。则局部变量存储到哪里合适,即不能让函数嵌套的时候有冲突,又要注重效率。
  • 以上问题的解决办法,都可以利用栈的结构体来解决:
  1. 寄存器传参的冲突,可以把寄存器的值临时压入栈里面,非寄存器传参也可以压入到栈里面。
  2. 局部变量的使用也可以利用栈里面的内存空间,只需要移动下栈指针,腾出局部变量占用的空间。最后利用栈指针的偏移来完成存取。于是函数的这些参数和变量的存储演变成记住一个栈指针的地址,每次函数被调用的时候,都配套一个栈指针地址,即使循环嵌套调用函数,只要对应函数栈指针是不同的,也不会出现冲突。
  3. 利用栈,当函数不断调用的时候,不断的有参数局部变量入栈,栈里面会形成一个函数栈帧的结构,一个栈帧结构归属于一次函数的调用。栈的空间也是有限的,如果不限制的使用,就会出现典型的栈溢出的问题。有了栈帧的框架在,我们在分析问题的时候,如果能获取到当时的栈的内容,则有机会调查当时可能出现的问题。
  • 然而栈存在的意义还不止这点,有了它的存在,才能构建出操作系统的多任务模式。

总结

  • 栈的作用分为以下几点:
  1. 栈是每个函数架构的基础,实现了函数的重复利用。
  2. 问题发生的时候,可以利用栈来了解问题发生的情况。
  3. 栈是构建出操作系统多任务模式的基础。
中断向量表是微机系统中非常重要的一个概念。在理解它的作用之前,我们需要先了解中断是什么。中断是计算机系统中的一种机制,它允许计算机在执行当前任务的过程中,暂停当前工作,转而去处理更加紧急的任务。中断机制允许计算机系统实现并发处理和实时响应。 参考资源链接:[(完整word版)微机原理与接口技术课后习题答案(朱红).doc](https://wenku.youkuaiyun.com/doc/2vymwrfyme?spm=1055.2569.3001.10343) 中断向量表是一张表,通常存储在计算机的内存中,它的主要作用是指定当中断发生时,CPU应该调用哪个中断处理程序。在现代计算机系统中,中断向量表是中断服务程序的索引,每个表项对应一个特定类型的中断,并且包含该中断处理程序的入口地址。当中断发生时,CPU根据中断号查找到相应的中断向量表项,读取中断处理程序的地址,然后跳转到该地址执行中断处理程序。 例如,在x86架构的计算机中,当中断发生时,CPU会读取中断向量表中对应的表项,这个表项中存储的是中断处理程序的入口地址。CPU会将当前的工作状态保存到中,然后跳转到中断处理程序执行,完成中断处理后,再从中恢复之前的工作状态,继续执行原先的任务。 中断向量表对于系统的稳定运行至关重要,它确保了系统能够及时响应各种外部事件或内部异常,并且能够快速准确地转移到相应的处理程序,处理完毕后再恢复到原先的工作状态,保证了计算机系统的高效和稳定运行。对于微机原理与接口技术的学习者来说,理解中断向量表的原理和作用是掌握计算机系统中断机制的基础。 为帮助更深入地理解中断向量表及其在计算机系统中的作用,可以参考《(完整word版)微机原理与接口技术课后习题答案(朱红).doc》。这份资料不仅提供了完整的课后习题答案,还能帮助学习者结合实际计算机系统中的应用,更透彻地掌握中断向量表及相关知识。 参考资源链接:[(完整word版)微机原理与接口技术课后习题答案(朱红).doc](https://wenku.youkuaiyun.com/doc/2vymwrfyme?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值