Estado (ciência da computação)
Este artigo não cita fontes confiáveis. (Abril de 2013) |
Na ciência da computação e na teoria de autômatos, o estado de um circuito lógico digital ou programa de computador é um termo técnico para todas as informações armazenadas, em um determinado ponto no tempo, para que o circuito ou programa tem acesso. A saída de um circuito digital ou programa de computador, a qualquer momento é completamente determinado pelas suas entradas atuais e seu estado.
Estados de Circuitos Digitais
Circuitos digitais podem ser divididos em dois tipos: a lógica combinacional, cujos sinais de saída são dependentes apenas dos seus atuais sinais de entrada, e a lógica seqüencial, cujas saídas são uma função de ambas as entradas atuais e da história das entradas passadas. Na lógica seqüencial, as informações de entradas passadas são armazenadas em elementos de memória eletrônicos, tais como flip-flops e travas. Os conteúdos guardados destes elementos de memória, num determinado ponto no tempo, é referido colectivamente como "estado" do circuito e contém todas as informações sobre o passado que o circuito têm acesso.
Por exemplo, o estado de um microprocessador (chip de computador) é o conteúdo de todos os elementos de memória nele: os acumuladores, registradores, caches de dados e flags. Quando os computadores, tais como laptops, entrarem em um modo de "hibernação" para poupar energia, desligando o processador, o estado do processador é armazenado no disco rígido do computador, para que ele possa ser restaurado quando o computador sair do modo de hibernação, e o processador poder assumir as operações de onde parou.
Estado do programa
Do mesmo modo, um programa de computador armazena dados em variáveis, que representam locais de armazenamento na memória do computador. O conteúdo destas posições de memória, em um determinado ponto na execução do programa, é chamado de estado do programa.
Programação imperativa é um paradigma de programação (forma de concepção de uma linguagem de programação) que descreve computação em termos de estado de programa e instruções que alteram o estado de programa. Em contraste, em linguagens de programação declarativas o programa descreve os resultados desejados, não especificando uma mudança para o estado directamente.
Uma definição mais especializada do estado é usada em alguns programas de computador que operam em série (seqüencialmente) sobre fluxos de dados, tais como analisadores, firewalls, protocolos de comunicação e programas de criptografia. Em alguns desses programas, o histórico de entradas de dados anteriores afeta o processamento da entrada atual, que significa que o programa pode ser modelado como uma máquina de estado. Estes programas são descritos como "stateful", e as variáveis que contêm os valores do ciclo de processamento anterior são chamadas no estado. Em outros programas de série a saída depende apenas da entrada atual, estes são chamados de "stateless".
Máquinas de estados finitos
A saída de um circuito seqüencial ou programa de computador, a qualquer momento, é completamente determinada pelas suas entradas atuais e estado atual. Uma vez que cada elemento de memória binária possui apenas dois estados possíveis, 0 ou 1, o número total de diferentes estados que um circuito pode assumir é finito, e fixado por meio do número de elementos de memória. Se houver N elementos binários de memória , um circuito digital pode ter no máximo 2^N estados distintos. O conceito de Estado é formalizado em um modelo matemático abstrato de computação chamado de máquina de estado finito, usado para projetar os circuitos digitais seqüenciais e programas de computador.
Tipos de estados
Seguintes estados destacam-se:
- Estados compatíveis são estados em uma máquina de estado que não entrem em conflito para quaisquer valores de entrada. Assim, para cada entrada, os dois estados devem ter a mesma saída, e ambos os estados devem ter o mesmo sucessor (ou sucessores não especificados), ou ambos não devem mudar. Estados compatíveis são redundantes, se ocorrerem na mesma máquina estatal.
- Estados distinguíveis são estados em uma máquina de estados que têm pelo menos uma seqüência de entrada causando diferentes seqüências de saída - não importa qual é o estado inicial.
- Estados equivalentes são estados em uma máquina de estado que, para cada seqüência de entrada possível, a mesma seqüência de saída serão produzidos - não importa qual é o estado inicial.