Estado (ciência da computação)

Da Wikipédia, a enciclopédia livre
Ir para a navegação Saltar para pesquisar

Em tecnologia da informação e ciência da computação , um sistema é descrito como stateful se for projetado para lembrar eventos anteriores ou interações do usuário; [1] a informação lembrada é chamada de estado do sistema.

O conjunto de estados que um sistema pode ocupar é conhecido como seu espaço de estados . Em um sistema discreto , o espaço de estados é contável e frequentemente finito . O comportamento interno do sistema ou a interação com seu ambiente consiste em ações ou eventos individuais que ocorrem separadamente, como aceitar entrada ou produzir saída, que podem ou não fazer com que o sistema mude seu estado. Exemplos de tais sistemas são circuitos e componentes lógicos digitais , autômatos e linguagem formal , programas de computador e computadores .

A saída de um circuito digital ou programa de computador determinístico a qualquer momento é completamente determinada por suas entradas atuais e seu estado. [2]

Estado do circuito lógico digital

Os circuitos lógicos digitais podem ser divididos em dois tipos: lógica combinacional , cujos sinais de saída dependem apenas de seus sinais de entrada atuais, e lógica sequencial , cujas saídas são uma função das entradas atuais e do histórico de entradas anteriores. [3] Na lógica sequencial, as informações das entradas anteriores são armazenadas em elementos de memória eletrônica, como flip-flops . O conteúdo armazenado desses elementos de memória, em um determinado momento, é referido coletivamente como o estado do circuito e contém todas as informações sobre o passado ao qual o circuito tem acesso. [4]

Como cada elemento de memória binária , como um flip-flop, tem apenas dois estados possíveis, um ou zero , e há um número finito de elementos de memória, um circuito digital tem apenas um certo número finito de estados possíveis. Se N é o número de elementos de memória binária no circuito, o número máximo de estados que um circuito pode ter é 2 N .

Estado do programa

Da mesma forma, um programa de computador armazena dados em variáveis ​​, que representam locais de armazenamento na memória do computador . O conteúdo desses locais de memória, em qualquer ponto da execução do programa, é chamado de estado do programa . [5] [6] [7]

Uma definição mais especializada de estado é usada para programas de computador que operam em série ou sequencialmente em fluxos de dados , como analisadores , firewalls , protocolos de comunicação e criptografia . Os programas seriais operam nos caracteres ou pacotes de dados recebidos sequencialmente, um de cada vez. Em alguns desses programas, informações sobre caracteres de dados anteriores ou pacotes recebidos são armazenadas em variáveis ​​e usadas para afetar o processamento do caractere ou pacote atual. Isso é chamado de protocolo com estado e os dados transportados do ciclo de processamento anterior são chamados de protocolo de estado. Em outros, o programa não tem informações sobre o fluxo de dados anterior e começa do zero a cada entrada de dados; isso é chamado de protocolo sem estado .

A programação imperativa é um paradigma de programação (forma de projetar uma linguagem de programação ) que descreve a computação em termos do estado do programa e das instruções que alteram o estado do programa. Em linguagens de programação declarativas , o programa descreve os resultados desejados e não especifica mudanças no estado diretamente.

Máquinas de estado finito

A saída de um circuito seqüencial ou programa de computador a qualquer momento é completamente determinada por suas entradas atuais e estado atual. Como cada elemento de memória binária tem apenas dois estados possíveis, 0 ou 1, o número total de estados diferentes que um circuito pode assumir é finito e fixado pelo número de elementos de memória. Se houver N elementos de memória biná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 máquina de estados finitos , usada para projetar circuitos digitais sequenciais e programas de computador.

Exemplos

Um exemplo de dispositivo cotidiano que possui um estado é um aparelho de televisão . Para mudar o canal de uma TV, o usuário geralmente pressiona um botão "canal para cima" ou "canal para baixo" no controle remoto, que envia uma mensagem codificada para o aparelho. Para calcular o novo canal que o usuário deseja, o sintonizador digital da televisão deve ter armazenado nele o número do canal atual em que está. Em seguida, ele adiciona um ou subtrai um desse número para obter o número do novo canal e ajusta a TV para receber esse canal. Este novo número é então armazenado como o canal atual . Da mesma forma, a televisão também armazena um número que controla o nível de volumeproduzido pelo locutor. Pressionar os botões "aumentar volume" ou "diminuir volume" aumenta ou diminui esse número, definindo um novo nível de volume. Tanto o canal atual quanto os números de volume atuais fazem parte do estado da TV. Eles são armazenados em memória não volátil , que preserva as informações quando a TV é desligada, assim, quando for ligada novamente, a TV retornará à estação e ao nível de volume anteriores.

Como outro exemplo, o estado de um microprocessador é o conteúdo de todos os elementos de memória nele: os acumuladores , registradores de armazenamento , caches de dados e sinalizadores . Quando computadores como laptops entram em modo de hibernação para economizar energia desligando o processador, o estado do processador é armazenado no disco rígido do computador , para que possa ser restaurado quando o computador sair da hibernação e o processador pode demorar operações de onde parou.

Veja também

Referências

  1. ^ "O que é apátrida? - Definição de WhatIs.com" . techtarget . com .
  2. ^ Harris, David Money; Harris, Sarah L. (2007). Design Digital e Arquitetura de Computadores . EUA: Morgan Kaufmann. pág. 103. ISBN 978-0123704979.
  3. ^ Kaeslin, Hubert (2008). Projeto de Circuito Integrado Digital: Das Arquiteturas VLSI à Fabricação CMOS . Reino Unido: Cambridge University Press. pág. 735. ISBN 978-0521882675.
  4. ^ Srinath, NK (agosto de 2005). Microprocessador 8085: Programação e Interface . Prentice-Hall da Índia Unip. Ltda. p. 326. ISBN 978-8120327856. Recuperado em 7 de dezembro de 2012 . página 46
  5. ^ Laplante, Philip A. (2000). Dicionário de Ciência da Computação, Engenharia e Tecnologia . EUA: CRC Press. pág. 466. ISBN 978-0849326912.
  6. ^ Misra, Jayadev (2001). Uma Disciplina de Multiprogramação: Teoria de Programação para Aplicações Distribuídas . Springer. pág. 14. ISBN 978-0387952062.
  7. ^ Prata, Stephen Prata (2004). C Primer Plus, 5ª Ed . Pearson Educação. págs. 113-114. ISBN 978-0132713603.