En informática y teoría de autómatas , el estado de un circuito lógico digital o programa informático es un término técnico para toda la información almacenada a la que el circuito o programa tiene acceso actualmente [1] . La salida de un circuito digital o programa de computadora en un momento dado está completamente determinada por su entrada actual y su estado.
Los circuitos lógicos digitales se pueden dividir en dos tipos: lógica combinacional , cuyas señales de salida dependen solo de las señales de entrada, y lógica secuencial (en serie) , cuyos datos de salida son una función de los datos actuales y de entrada recibidos en la entrada en el pasado [2 ] .
En lógica secuencial, la información recibida anteriormente en las entradas se almacena en la memoria de elementos electrónicos, como disparadores , celdas de memoria. Los contenidos almacenados de estos elementos de memoria, en un momento dado, denominados colectivamente como el "estado" del circuito, contienen toda la información sobre el pasado a la que tiene acceso el dispositivo [3] .
Por ejemplo, el estado actual de un microprocesador (chip de computadora) está determinado por el contenido de todos sus elementos de memoria: acumuladores , registros de almacenamiento , cachés de datos y banderas .
Cuando pone su computadora en modo de "hibernación" o "reposo" para ahorrar energía apagando el procesador, la memoria y otros dispositivos, el estado del procesador y la RAM se escribe en la memoria externa no volátil, generalmente en el disco de la computadora. , cuando la computadora se enciende desde el modo de hibernación, los contenidos de la memoria RAM y los registros del procesador se restauran y la ejecución del programa interrumpido por la hibernación puede continuar correctamente.
De manera similar, el estado del procesador se guarda cuando se procesan interrupciones de programas externos por eventos externos que pueden ocurrir en momentos inesperados. Para que el programa actual interrumpido reanude correctamente su trabajo después de completar el procesamiento de la interrupción, es necesario guardar el estado de los registros y la memoria que utiliza el controlador de interrupciones. Antes de transferir el control al programa interrumpido, el manejador de interrupciones restaura el estado del procesador y los registros de memoria y transfiere el control al programa interrumpido. Guardar y restaurar el estado lo realiza el controlador de interrupción externo.
Dado que cada elemento de memoria binaria, como un flip-flop o un bit de registro, tiene solo dos estados posibles, "uno lógico" o "cero lógico", y hay un número finito de tales elementos de memoria binaria, cualquier circuito digital tiene un número finito. número de estados posibles. Si el número de elementos de memoria binaria en el circuito es N , entonces el número máximo posible de estados será 2 N.
Los programas de computadora almacenan datos en variables , que son áreas de almacenamiento de datos en la memoria de la computadora, el contenido de estas áreas de memoria en cualquier momento durante la ejecución del programa se denomina estado del programa [4] [5] [6] .
La programación imperativa es un paradigma de programación (una forma de diseñar un lenguaje de programación ) que describe en términos de estados y declaraciones que cambian el estado de un programa. En los lenguajes de programación declarativos , por el contrario, el programa describe el resultado deseado sin especificar directamente los cambios de estado. Se utiliza una definición más especializada de estado en algunos programas informáticos que operan en serie en flujos de datos, como analizadores , cortafuegos , protocolos de transferencia de datos y programas de cifrado . Los programas en serie procesan los datos, caracteres o paquetes entrantes de forma secuencial, uno a la vez. En algunos de estos programas, la información sobre los caracteres o paquetes de datos recibidos previamente se almacena en variables y se utiliza para influir en el procesamiento del carácter o paquete actual. Esto se denomina "protocolo de estado", y los datos transferidos del ciclo de procesamiento anterior se denominan "estado". En otros casos, el programa no tiene información sobre el flujo de datos anterior y comienza "limpio" con cada entrada; esto se llama un "protocolo sin estado".
La salida de un circuito en serie o programa de computadora en un momento dado está completamente determinada por los datos de entrada actuales y el estado actual. Dado que cada elemento de memoria binaria tiene solo dos estados posibles, 0 o 1, se supone que el número total de estados de la red es finito y fijo por el número de elementos de memoria. Si el número de elementos de memoria binaria en el circuito es N , entonces el número máximo posible de estados será 2 N. El concepto de estado, enmarcado en un modelo matemático abstracto de computación , se denomina máquina de estados finitos , utilizada para desarrollar tanto circuitos digitales secuenciales como programas informáticos.
Existen los siguientes tipos de estados: