国家(计算机科学)
在信息技术和计算机科学中,如果该系统旨在记住之前的事件或用户互动,则将系统描述为陈述。记忆的信息称为系统状态。
系统可以占据的状态集被称为其状态空间。在离散系统中,状态空间是可计数的,通常是有限的。该系统的内部行为或与环境的互动包括单独发生的单个行动或事件,例如接受输入或产生输出,可能会或可能不会导致系统改变其状态。此类系统的示例是数字逻辑电路和组件,自动机和正式语言,计算机程序和计算机。
数字电路或确定性计算机程序的输出在任何时候完全取决于其当前输入及其状态。
数字逻辑电路状态
数字逻辑电路可以分为两种类型:组合逻辑,其输出信号仅取决于其当前输入信号和顺序逻辑,其输出是当前输入和输入历史的函数。在顺序逻辑中,来自过去输入的信息存储在电子记忆元素中,例如触发器。在给定的时间点,这些内存元素的存储内容统称为电路状态,并包含有关电路访问的过去的所有信息。
由于每个二进制内存元件(例如触发器)只有两个可能的状态,一个或零,并且有有限数量的内存元素,因此数字电路只有一定有限数量的可能状态。如果n是电路中二进制内存元素的数量,则电路可以具有2 n的状态数量。
程序状态
同样,计算机程序将数据存储在变量中,该数据代表计算机内存中的存储位置。在程序执行中的任何给定点,这些内存位置的内容称为程序的状态。
更专业的状态定义用于在数据流(例如解析器,防火墙,通信协议和加密)上串行或顺序操作的计算机程序。串行程序一次在传入的数据字符或数据包上操作,一次是一个。在其中一些程序中,有关以前的数据字符或数据包的信息存储在变量中,用于影响当前字符或数据包的处理。这称为状态协议,从上一个处理周期中遵循的数据称为状态。在其他情况下,该程序没有有关先前数据流的信息,并从每个数据输入中开始新鲜。这称为无状态协议。
命令编程是一种编程范式(设计一种编程语言的方式),该范式用程序状态以及改变程序状态的语句描述了计算。状态的变化是隐式的,由程序运行时管理,因此子例程对程序的其他部分(称为副作用)具有可见性。
在声明的编程语言中,该程序描述了所需的结果,并且没有直接指定对状态的更改。
在功能编程中,状态通常用时间逻辑表示为显式变量,在程序执行的每个步骤中表示程序状态:状态变量作为状态转换函数的输入参数传递,该函数将更新的状态返回作为一部分其返回值。纯粹的功能子例程仅具有其范围中状态变量代表的状态变化的可见性。
有限状态机
顺序电路或计算机程序的输出随时完全取决于其当前输入和当前状态。由于每个二进制内存元素只有两个可能的状态,即0或1,因此电路可以假定的不同状态的总数是有限的,并由内存元素的数量固定。如果有n个二进制内存元素,则数字电路最多可以具有2个不同的状态。国家的概念是在称为有限状态机器的抽像数学计算模型中形式化的,用于设计顺序数字电路和计算机程序。
例子
具有状态的日常设备的一个示例是电视机。为了更改电视的通道,用户通常在遥控器上按“频道向上”或“频道向下”按钮,该按钮将编码的消息发送到集合。为了计算用户所需的新频道,电视中的数字调谐器必须存储在其当前频道上的数量中。然后,它添加一个或从此数字中减去一个,以获取新频道的数字,并调整电视以接收该频道。然后将该新数量存储为当前通道。同样,电视还存储一个控制扬声器产生的音量水平的数字。按下“音量上升”或“音量降低”按钮增加或减少此数字,以设置新的音量级别。当前的频道和当前音量号都是电视状态的一部分。它们存储在非易失性存储器中,该内存保留了电视关闭时保留信息,因此,当电视再次打开时,电视将返回其以前的站点和音量级别。
作为另一个例子,微处理器的状态是其中所有内存元素的内容:累加器,存储寄存器,数据缓存和标志。当诸如笔记本电脑之类的计算机进入休眠模式以通过关闭处理器来节省能量时,处理器的状态存储在计算机的硬盘上,因此当计算机从Hibernation出来时,可以将其恢复,并且处理器可以使用。上下操作。