赞
踩
堆栈的上溢与下溢
由于堆栈区域是在堆栈定义时就确定了的,因而堆栈工作过程中有可能产生溢出。堆栈溢出有两种情况可能发生:如堆栈已满,但还想再存入信息,这种情况称为堆栈上溢;另一种情况是,如堆栈已空,但还想再取出信息,这种情况称为堆栈下溢。不论上溢或下溢,都是不允许的。因此在编制程序时,如果可能发生堆栈溢出,则应在程序中采取保护措施。这可以通过给SP规定上、下限,在进栈或出栈操作前先做SP和边界值的比较,如溢出则作溢出处理,以避免破坏其他存储区或使程序出错的情况发生。
上溢就是缓冲器满,还往里写;下溢就是缓冲器空,还往外读.
使用硬件相似的数据处理.一般都是数据进来,处理后立即发出去的形式.所以一般有一个数据进,一个数据出,2个接口.
硬件处理基本都要求实时.数据进来,处理之后马上发处理,这个时间要求非常短,一般要求控制在好多毫秒以内,才能达到实时的要求.一般硬件每秒钟能够处理的数据大小,在设计的时候就固定了.不能像软件那样,可以通过增加CPU来提升处理能力.而且硬件的缓存的容量也是在设计的时候就固定了,不能像软件那样,随意申请内存来用.
所以硬件的缓存都不会太大.缓存的数据太大,会造成等待数据处理延时太高.达不到实时的要求.
硬件每秒能够处理的数据也是固定的.
硬件在处理数据的时候,一般是要等待缓冲区有足够的数据可以处理,然后开始处理.
如果数据输入的速度,固定保持在理想状态,那么缓冲区就会一直有数据供给硬件平稳的进行处理.
输入一直输入数据,硬件一直有数据在处理,输出一直在输出处理好的数据.缓冲区的数据容量,一直保持在某个范围.
如果指数据发送太快,硬件处理不过来,缓存已经装不下那么多数据,开始丢弃这些数据,放弃处理.这就是指上溢.
如果数据发送太慢,缓冲区的数据都处理空了,输入数据还没过来,硬件还在等待缓冲区有足够数据可以处理,输出接口就在要求发送处理好的数据出去,就是指下溢.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。