Jump to content

State (computer science)

From Wikipedia, the free encyclopedia

Ininformation technologyandcomputer science,a system is described asstatefulif it is designed to remember preceding events or user interactions;[1]the remembered information is called thestateof the system.

The set of states a system can occupy is known as itsstate space.In adiscrete system,the state space iscountableand oftenfinite.The system's internal behaviour or interaction with its environment consists of separately occurring individual actions or events, such as accepting input or producing output, that may or may not cause the system to change its state. Examples of such systems aredigital logiccircuits and components,automataandformal language,computer programs,andcomputers.

The output of a digital circuit ordeterministic computer programat any time is completely determined by its current inputs and its state.[2]

Digital logic circuit state[edit]

Digital logiccircuits can be divided into two types:combinational logic,whose outputsignalsare dependent only on its present input signals, andsequential logic,whose outputs are a function of both the current inputs and the past history of inputs.[3]In sequential logic, information from past inputs is stored in electronic memory elements, such asflip-flops.The stored contents of these memory elements, at a given point in time, is collectively referred to as the circuit'sstateand contains all the information about the past to which the circuit has access.[4]

Since eachbinary memory element,such as a flip-flop, has only two possible states,oneorzero,and there is a finite number of memory elements, a digital circuit has only a certain finite number of possible states. IfNis the number of binary memory elements in the circuit, the maximum number of states a circuit can have is2N.

Program state[edit]

Similarly, a computer program stores data invariables,which represent storage locations in thecomputer's memory.The contents of these memory locations, at any given point in the program's execution, are called the program'sstate.[5][6][7]

A more specialized definition of state is used for computer programs that operate serially or sequentially onstreams of data,such asparsers,firewalls,communication protocolsandencryption.Serial programs operate on the incoming data characters or packets sequentially, one at a time. In some of these programs, information about previous data characters or packets received is stored in variables and used to affect the processing of the current character or packet. This is called astateful protocoland the data carried over from the previous processing cycle is called thestate.In others, the program has no information about the previous data stream and starts fresh with each data input; this is called astateless protocol.

Imperative programmingis aprogramming paradigm(way of designing aprogramming language) that describes computation in terms of the program state, and of the statements which change the program state. Changes of state are implicit, managed by the program runtime, so that a subroutine hasvisibilityof the changes of state made by other parts of the program, known asside effects.

Indeclarative programminglanguages, the program describes the desired results and doesn't specify changes to the state directly.

Infunctional programming,state is usually represented withtemporal logicas explicit variables that represent the program state at each step of a program execution: a state variable is passed as aninput parameterof a state-transforming function, which returns the updated state as part of its return value. Apure functionalsubroutine only has visibility of changes of state represented by the state variables in its scope.

Finite state machines[edit]

The output of a sequential circuit or computer program at any time is completely determined by its current inputs and current state. Since eachbinarymemory element has only two possible states, 0 or 1, the total number of different states a circuit can assume is finite, and fixed by the number of memory elements. If there areNbinary memory elements, a digital circuit can have at most 2Ndistinct states. The concept of state is formalized in an abstract mathematicalmodel of computationcalled afinite state machine,used to design both sequential digital circuits and computer programs.

Examples[edit]

An example of an everyday device that has a state is atelevision set.To change the channel of a TV, the user usually presses a "channel up" or "channel down" button on the remote control, which sends a coded message to the set. In order to calculate the new channel that the user desires, the digital tuner in the television must have stored in it the number of thecurrent channelit is on. It then adds one or subtracts one from this number to get the number for the new channel, and adjusts the TV to receive that channel. This new number is then stored as thecurrent channel.Similarly, the television also stores a number that controls the level ofvolumeproduced by the speaker. Pressing the "volume up" or "volume down" buttons increments or decrements this number, setting a new level of volume. Both thecurrent channelandcurrent volumenumbers are part of the TV's state. They are stored innon-volatile memory,which preserves the information when the TV is turned off, so when it is turned on again the TV will return to its previous station and volume level.

As another example, the state of amicroprocessoris the contents of all the memory elements in it: theaccumulators,storage registers,data caches,andflags.When computers such as laptops go intohibernation modeto save energy by shutting down the processor, the state of the processor is stored on the computer'shard disk,so it can be restored when the computer comes out of hibernation, and the processor can take up operations where it left off.

See also[edit]

References[edit]

  1. ^"What is stateless? - Definition from WhatIs.com".techtarget.com.
  2. ^Harris, David Money; Harris, Sarah L. (2007).Digital Design and Computer Architecture.USA: Morgan Kaufmann. p. 103.ISBN978-0123704979.
  3. ^Kaeslin, Hubert (2008).Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication.UK: Cambridge University Press. p. 735.ISBN978-0521882675.
  4. ^Srinath, N. K. (August 2005).8085 Microprocessor: Programming and Interfacing.Prentice-Hall of India Pvt. Ltd. p. 326.ISBN978-8120327856.Retrieved7 December2012.page 46
  5. ^Laplante, Philip A. (2000).Dictionary of Computer Science, Engineering and Technology.USA: CRC Press. p. 466.ISBN978-0849326912.
  6. ^Misra, Jayadev (2001).A Discipline of Multiprogramming: Programming Theory for Distributed Applications.Springer. p. 14.ISBN978-0387952062.
  7. ^Prata, Stephen Prata (2004).C Primer Plus, 5th Ed.Pearson Education. pp. 113–114.ISBN978-0132713603.