Estado (informática)
En tecnología de la información y ciencias de la computación, un sistema se describe como con estado si está diseñado para recordar eventos anteriores o interacciones del usuario; la información recordada se denomina estado del sistema.
El conjunto de estados que puede ocupar un sistema se conoce como su espacio de estado. En un sistema discreto, el espacio de estados es contable y, a menudo, finito. El comportamiento interno del sistema o la interacción con su entorno consiste en acciones o eventos individuales que ocurren por separado, como aceptar entradas o producir salidas, que pueden o no hacer que el sistema cambie su estado. Ejemplos de tales sistemas son los circuitos y componentes lógicos digitales, los autómatas y el lenguaje formal, los programas informáticos y las computadoras.
La salida de un circuito digital o programa informático determinista en cualquier momento está completamente determinada por sus entradas actuales y su estado.
Estado del circuito lógico digital
Los circuitos lógicos digitales se pueden dividir en dos tipos: lógica combinacional, cuyas señales de salida dependen solo de sus señales de entrada actuales, y lógica secuencial, cuyas salidas son una función tanto de las entradas actuales como del historial pasado de las entradas. En lógica secuencial, la información de entradas anteriores se almacena en elementos de memoria electrónica, como flip-flops. El contenido almacenado de estos elementos de memoria, en un momento determinado, se denomina colectivamente como el estado del circuito y contiene toda la información sobre el pasado a la que tiene acceso el circuito.
Dado que cada elemento de memoria binaria, como un flip-flop, tiene solo dos estados posibles, uno o cero, y hay un número finito de elementos de memoria, un circuito digital tiene solo un cierto número finito de estados posibles. Si N es el número de elementos de memoria binaria en el circuito, el número máximo de estados que puede tener un circuito es 2N.
Estado del programa
Del mismo modo, un programa de computadora almacena datos en variables, que representan ubicaciones de almacenamiento en la memoria de la computadora. El contenido de estas ubicaciones de memoria, en cualquier punto dado de la ejecución del programa, se denomina estado del programa.
Se utiliza una definición más especializada de estado para los programas informáticos que funcionan en serie o secuencialmente en flujos de datos, como analizadores, cortafuegos, protocolos de comunicación y cifrado. Los programas seriales operan en los caracteres o paquetes de datos entrantes secuencialmente, uno a la vez. En algunos de estos programas, la información sobre los caracteres o paquetes de datos anteriores recibidos se almacena en variables y se usa para afectar el procesamiento del carácter o paquete actual. Esto se denomina protocolo con estado y los datos transferidos del ciclo de procesamiento anterior se denominan estado. En otros, el programa no tiene información sobre el flujo de datos anterior y comienza de nuevo con cada entrada de datos; esto se llama un protocolo sin estado.
La programación imperativa es un paradigma de programación (forma de diseñar un lenguaje de programación) que describe la computación en términos del estado del programa y de las declaraciones que cambian el estado del programa. Los cambios de estado son implícitos, gestionados por el tiempo de ejecución del programa, de modo que una subrutina tiene visibilidad de los cambios de estado realizados por otras partes del programa, conocidos como efectos secundarios.
En los lenguajes de programación declarativos, el programa describe los resultados deseados y no especifica cambios en el estado directamente.
En la programación funcional, el estado generalmente se representa con lógica temporal como variables explícitas que representan el estado del programa en cada paso de la ejecución del programa: una variable de estado se pasa como parámetro de entrada de una función de transformación de estado, que devuelve el estado actualizado estado como parte de su valor de retorno. Una subrutina funcional pura solo tiene visibilidad de los cambios de estado representados por las variables de estado en su alcance.
Máquinas de estados finitos
La salida de un circuito secuencial o programa de computadora en cualquier momento está completamente determinada por sus entradas actuales y su estado actual. Dado que cada elemento de memoria binaria tiene solo dos estados posibles, 0 o 1, el número total de estados diferentes que puede asumir un circuito es finito y está fijado por el número de elementos de memoria. Si hay N elementos de memoria binaria, un circuito digital puede tener como máximo 2N estados distintos. El concepto de estado se formaliza en un modelo matemático abstracto de computación denominado máquina de estados finitos, que se utiliza para diseñar tanto circuitos digitales secuenciales como programas informáticos.
Ejemplos
Un ejemplo de un dispositivo cotidiano que tiene un estado es un televisor. Para cambiar el canal de un televisor, el usuario suele presionar un "canal arriba" o "canalizar hacia abajo" botón del mando a distancia, que envía un mensaje codificado al aparato. Para poder calcular el nuevo canal que desea el usuario, el sintonizador digital del televisor debe tener almacenado en él el número del canal actual en el que se encuentra. Luego suma uno o resta uno de este número para obtener el número del nuevo canal y ajusta el televisor para recibir ese canal. Este nuevo número se almacena como el canal actual. Del mismo modo, la televisión también almacena un número que controla el nivel de volumen producido por el altavoz. Presionando el botón "subir volumen" o "bajar volumen" Los botones incrementan o disminuyen este número, configurando un nuevo nivel de volumen. Los números de canal actual y volumen actual son parte del estado del televisor. Se almacenan en una memoria no volátil, que conserva la información cuando se apaga el televisor, por lo que cuando se enciende de nuevo, el televisor volverá a su estación y nivel de volumen anteriores.
Como otro ejemplo, el estado de un microprocesador es el contenido de todos los elementos de memoria que contiene: los acumuladores, los registros de almacenamiento, las cachés de datos y las banderas. Cuando las computadoras, como las laptops, entran en modo de hibernación para ahorrar energía apagando el procesador, el estado del procesador se almacena en el disco duro de la computadora, por lo que se puede restaurar cuando la computadora sale de la hibernación y el procesador puede retomar las operaciones donde las dejó.
Contenido relacionado
Confusión y difusión
Cabeza (Unix)
Clave sustituta