Stato (informatica) - State (computer science)

Nella tecnologia dell'informazione e dell'informatica , un sistema è descritto come stateful se è progettato per ricordare eventi precedenti o interazioni dell'utente; le informazioni memorizzate sono chiamate stato del sistema.

L'insieme degli stati che un sistema può occupare è detto spazio degli stati . In un sistema discreto , lo spazio degli stati è numerabile e spesso finito . Il comportamento interno del sistema o l'interazione con il suo ambiente consiste in azioni o eventi individuali che si verificano separatamente, come l'accettazione di input o la produzione di output, che possono o meno causare il cambiamento di stato del sistema. Esempi di tali sistemi sono circuiti e componenti logici digitali , automi e linguaggio formale , programmi per computer e computer .

L'uscita di un circuito digitale o di un programma per computer deterministico in qualsiasi momento è completamente determinata dai suoi ingressi correnti e dal suo stato.

Stato del circuito logico digitale

I circuiti logici digitali possono essere suddivisi in due tipi: logica combinatoria , i cui segnali di uscita dipendono solo dai suoi attuali segnali di ingresso, e logica sequenziale , le cui uscite sono una funzione sia degli ingressi correnti che della storia passata degli ingressi. Nella logica sequenziale, le informazioni provenienti dagli ingressi passati sono memorizzate in elementi di memoria elettronici, come i flip-flop . I contenuti memorizzati di questi elementi di memoria, in un dato punto nel tempo, si riferisce collettivamente come il circuito di stato e contiene tutte le informazioni sul passato per cui il circuito ha accesso.

Poiché ogni elemento di memoria binaria , come un flip-flop, ha solo due stati possibili, uno o zero , e c'è un numero finito di elementi di memoria, un circuito digitale ha solo un certo numero finito di possibili stati. Se N è il numero di elementi di memoria binaria nel circuito, il numero massimo di stati che un circuito può avere è 2 N .

Stato del programma

Allo stesso modo, un programma per computer memorizza i dati in variabili , che rappresentano posizioni di archiviazione nella memoria del computer . I contenuti di queste locazioni di memoria, in un qualsiasi punto nella esecuzione del programma, è chiamato il programma dello stato .

Una definizione di stato più specializzata viene utilizzata per i programmi per computer che operano in modo seriale o sequenziale su flussi di dati , come parser , firewall , protocolli di comunicazione e crittografia . I programmi seriali operano sui caratteri o sui pacchetti di dati in entrata in modo sequenziale, uno alla volta. In alcuni di questi programmi, le informazioni sui precedenti caratteri di dati o sui pacchetti ricevuti vengono memorizzate in variabili e utilizzate per influenzare l'elaborazione del carattere o del pacchetto corrente. Questo è chiamato un protocollo stateful ei dati riportati dal precedente ciclo di elaborazione sono chiamati stato . In altri, il programma non ha informazioni sul flusso di dati precedente e ricomincia da capo con ogni input di dati; questo è chiamato protocollo senza stato .

La programmazione imperativa è un paradigma di programmazione (modo di progettare un linguaggio di programmazione ) che descrive il calcolo in termini di stato del programma e delle istruzioni che cambiano lo stato del programma. Nei linguaggi di programmazione dichiarativi , il programma descrive i risultati desiderati e non specifica direttamente le modifiche allo stato.

Macchine a stati finiti

L'uscita di un circuito sequenziale o di un programma per computer in qualsiasi momento è completamente determinata dai suoi ingressi correnti e dallo stato corrente. Poiché ogni elemento di memoria binaria ha solo due possibili stati, 0 o 1, il numero totale di stati diversi che un circuito può assumere è finito e fissato dal numero di elementi di memoria. Se sono presenti N elementi di memoria binaria, un circuito digitale può avere al massimo 2 N stati distinti. Il concetto di stato è formalizzato in un modello matematico astratto di calcolo chiamato macchina a stati finiti , utilizzato per progettare sia circuiti digitali sequenziali che programmi per computer.

Esempi

Un esempio di un dispositivo quotidiano che ha uno stato è un televisore . Per cambiare il canale di un televisore, l'utente di solito preme un pulsante "canale su" o "canale giù" sul telecomando, che invia un messaggio in codice all'apparecchio. Per calcolare il nuovo canale che l'utente desidera, il sintonizzatore digitale del televisore deve aver memorizzato in esso il numero del canale corrente su cui si trova. Quindi aggiunge uno o sottrae uno da questo numero per ottenere il numero per il nuovo canale e regola la TV per ricevere quel canale. Questo nuovo numero viene quindi memorizzato come canale corrente . Allo stesso modo, il televisore memorizza anche un numero che controlla il livello del volume prodotto dall'altoparlante. Premendo i pulsanti "volume su" o "volume giù" si aumenta o diminuisce questo numero, impostando un nuovo livello di volume. Sia il canale corrente e di volume attuali numeri sono parte dello stato del televisore. Sono memorizzati nella memoria non volatile , che conserva le informazioni quando il televisore viene spento, quindi quando viene riacceso il televisore tornerà alla stazione e al volume precedenti.

Come altro esempio, lo stato di un microprocessore è il contenuto di tutti gli elementi di memoria in esso: gli accumulatori , registri di memorizzazione , cache di dati , e bandiere . Quando computer come i laptop entrano in modalità di ibernazione per risparmiare energia spegnendo il processore, lo stato del processore viene memorizzato sul disco rigido del computer , quindi può essere ripristinato quando il computer esce dall'ibernazione e il processore può prendere riprendere le operazioni da dove era stato interrotto.

Guarda anche

Riferimenti