Состояние (информатика): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Спасено источников — 5, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5
 
(не показано 25 промежуточных версий 12 участников)
Строка 1: Строка 1:
В [[Информатика|информатике]] и [[Теория автоматов|теории автоматов]] '''состояние''' цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ<ref name="Harris">{{книга
<!-- Неоконченное!-->
|заглавие=Digital Design and Computer Architecture
|издательство=[[Morgan Kaufmann Publishers|Morgan Kaufmann]]
|год=2007
|место=USA
|страницы=103
|ссылка=https://books.google.com/books?id=5X7JV5-n0FIC&pg=PA115&lpg=PA115&dq=state+definition+digital&source=bl&ots=UR5dOM0l02&sig=hh41cAzR_-srVbTf5DrQ7YTZrJM&hl=en&sa=X&ei=qwArUMaAHuP9iwKJ9YDADQ&ved=0CGAQ6AEwBw
|isbn=0123704979
|ref=Harris
|автор=Harris, David Money; Sarah L. Harris
|archive-date=2014-04-06
|archive-url=https://web.archive.org/web/20140406213057/https://books.google.com/books?id=5X7JV5-n0FIC&pg=PA115&lpg=PA115&dq=state+definition+digital&source=bl&ots=UR5dOM0l02&sig=hh41cAzR_-srVbTf5DrQ7YTZrJM&hl=en&sa=X&ei=qwArUMaAHuP9iwKJ9YDADQ&ved=0CGAQ6AEwBw#v=onepage&q=state&f=false
}}</ref>. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием.


== Состояние цифровой логической схемы ==
{{В инкубаторе}}
Цифровые логические схемы могут быть разделены на два типа: [[Комбинационная логика|комбинационной логики]], чьи выходные сигналы зависят только от входных сигналов, и [[Секвенциальная логика|секвенциальной (последовательной) логики]], чьи выходные данные являются функцией и от текущих, и от входных данных, поступавших на вход в прошлом<ref name="Kaeslin">{{книга
|заглавие=Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication
|издательство=[[Издательство Кембриджского университета|Cambridge University Press]]
|год=2008
|место=UK
|страницы=735
|ссылка=https://books.google.com/books?id=gdRStcYgf2oC&pg=PA783&lpg=PA783&dq=state+definition+digital&source=bl&ots=MIAK2x-71J&sig=t1apKSXU1R2qy36V2djD1fOAbt4&hl=en&sa=X&ei=6ykrUOvqN6XNiwKcsoD4BQ&ved=0CDgQ6AEwATgU
|isbn=0521882672
|ref=Kaeslin
|язык=en
|автор=Kaeslin, Hubert
|archive-date=2014-04-06
|archive-url=https://web.archive.org/web/20140406213513/https://books.google.com/books?id=gdRStcYgf2oC&pg=PA783&lpg=PA783&dq=state+definition+digital&source=bl&ots=MIAK2x-71J&sig=t1apKSXU1R2qy36V2djD1fOAbt4&hl=en&sa=X&ei=6ykrUOvqN6XNiwKcsoD4BQ&ved=0CDgQ6AEwATgU#v=onepage&q=state&f=false
}}</ref>.


В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как [[триггер]]ы, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ<ref name="Srinath">{{книга
{{Инкубатор, пишу}}
|заглавие=8085 Microprocessor: Programming and Interfacing
|издательство=Prentice-Hall of India Pvt. Ltd
|страницы=326
|ссылка=https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46
|isbn=978-8120327856
|ref=Srinath
|язык=en
|автор=Srinath, N. K.
|месяц=8
|год=2005
|archive-date=2018-06-11
|archive-url=https://web.archive.org/web/20180611212925/https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46
}}. — «page 46».</ref>.


Например, текущее состояние [[микропроцессор]]а (компьютерной микросхемы) определяется содержимым всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]].
<!-- Начинайте писать ниже этой строки -->


При переводе компьютера в режим [[Гибернация (операционные системы)|«гибернации»]] или перевод в "спящий режим", чтобы сохранить энергию за счет отключения процессора, памяти и других устройств, состояние процессора и [[Оперативная память|оперативной памяти]] записывается во внешнюю энергонезависимую память, обычно на [[Жёсткий диск|диске]] компьютера, при включении компьютера из спящего режима содержимое оперативной памяти и регистров процессора восстанавливается и исполнение прерванной гибернацией программы может быть корректно продолжено.
В [[Информатика|информатике]] и [[Теория автоматов|теории автоматов]] '''состояние''' цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ. <ref name="Harris">{{cite book
| last = Harris
| first = David Money
| authorlink =
|author2=Sarah L. Harris
| title = Digital Design and Computer Architecture
| publisher = Morgan Kaufmann
| year = 2007
| location = USA
| pages = 103
| url = http://books.google.com/books?id=5X7JV5-n0FIC&pg=PA115&lpg=PA115&dq=state+definition+digital&source=bl&ots=UR5dOM0l02&sig=hh41cAzR_-srVbTf5DrQ7YTZrJM&hl=en&sa=X&ei=qwArUMaAHuP9iwKJ9YDADQ&ved=0CGAQ6AEwBw#v=onepage&q=state&f=false
| doi =
| id =
| isbn = 0123704979}}</ref> Вывод данных цифровой схемы или компьютерной программы в любой момент времени полностью определяется его текущими входными данными и его состоянием.


Аналогично сохраняется состояние процессора при обработке внешних прерываний программы внешними событиями, которые могут происходить в непредвиденные моменты времени. Для того, чтобы после завершения обработки прерывания прерванная текущая программа корректно возобновила свою работу, необходимо сохранение состояния тех регистров и памяти, которые используются обработчиком прерывания. Перед передачей управления прерванной программе, обработчик прерывания восстанавливает состояние регистров процессора и памяти и передает управление прерванной программе. Сохранение и восстановление состояния выполняет обработчик внешних прерываний.
== Состояние цифровой логической схемы==
Цифровые логические схемы могут быть разделены на два типа: [[Комбинационная логика|комбинационной логики]], чьи выходные сигналы зависят только от входных сигналов, и [[Секвенциальная логика|секвенциальной логики]], чьи выходные данные являются функцией и от текущих, и от прошлых входных данных.<ref name="Kaeslin">{{cite book
| last = Kaeslin
| first = Hubert
| authorlink =
| title = Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication
| publisher = Cambridge University Press
| year = 2008
| location = UK
| pages = 735
| url = http://books.google.com/books?id=gdRStcYgf2oC&pg=PA783&lpg=PA783&dq=state+definition+digital&source=bl&ots=MIAK2x-71J&sig=t1apKSXU1R2qy36V2djD1fOAbt4&hl=en&sa=X&ei=6ykrUOvqN6XNiwKcsoD4BQ&ved=0CDgQ6AEwATgU#v=onepage&q=state&f=false
| doi =
| id =
| isbn = 0521882672}}</ref>
В секвенциальной логике информация из последних входов сохраняется в памяти электронных элементов, таких как [[Триггер|триггеры]]. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое "состояние" схемы содержит всю информацию о прошлом, к которому схема имеет доступ.<ref name="Srinath">{{cite book
| last =Srinath
| first =N. K. | authorlink =
| title =8085 Microprocessor: Programming and Interfacing
| publisher =Prentice-Hall of India Pvt. Ltd
| date =August 2005
| location =
| pages =326
| url =http://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46
| doi =
| isbn = 978-8120327856
| accessdate = 7 December 2012
| quote= page 46}}</ref>


Поскольку каждый двоичный элемент памяти, такой как триггер, или двоичный разряд регистра имеет только два возможных состояния — «логической единицы» или «логического нуля», и существует конечное число таких двоичных элементов памяти, всякая цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме равно '''''N''''', то максимально возможное количество состояний будет '''2<sup>''N''</sup>'''.
Например, состояние [[Микропроцессор|микропроцессора]] (компьютерной микросхемы) представляет собой содержимое всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]]. Когда ноутбуки уходят в режим [[Гибернация (операционные системы)|"гибернации"]], чтобы сохранить энергию за счет отключения процессора, состояние процессора хранится на [[Жёсткий диск|диске]]компьютера, так что оно может быть восстановлено, если компьютер выходит из режима гибернации, и процессор может взяться за операции с того момента, где он их оставил.

Поскольку каждый бинарный элемент памяти, такой как триггер, имеет только два возможных состояния - "один" или "ноль", и есть конечное число элементов памяти, цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме - '''''N''''', то максимально возможное количество состояний будет '''2<sup>''N''</sup>'''.


== Состояние программы ==
== Состояние программы ==
Компьютерные программы хранят данные в [[Переменная (программирование)|переменных]], представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется ''состоянием'' программы<ref name="Laplante">{{книга
|заглавие=Dictionary of Computer Science, Engineering and Technology
|издательство=[[CRC Press]]
|место=USA
|страницы=466
|ссылка=https://books.google.com/books?id=U1M3clUwCfEC&pg=PA24&dq=%22Program+state%22+%22
|isbn=0849326915
|ref=Laplante
|язык=en
|автор=Laplante, Philip A.
|год=2000
}}</ref><ref name="Misra">{{книга
|заглавие=A Discipline of Multiprogramming: Programming Theory for Distributed Applications
|издательство=Springer
|страницы=14
|ссылка=https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables
|isbn=0387952063
|ref=Misra
|язык=en
|автор=Misra, Jayadev
|год=2001
|archive-date=2014-07-05
|archive-url=https://web.archive.org/web/20140705122213/https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables
}}</ref><ref name="Prata">{{книга
|заглавие=C Primer Plus, 5th Ed
|издательство={{Нп3|Pearson Education}}
|страницы=113—114
|ссылка=https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables
|isbn=0132713608
|ref=Prata
|автор=Prata, Stephen Prata
|год=2004
|archive-date=2014-07-05
|archive-url=https://web.archive.org/web/20140705122036/https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables
}}</ref>.


[[Императивное программирование]] — [[парадигма программирования]] (способ проектирования [[Язык программирования|языка программирования]]), которая описывает в терминах состояний и операторов, которые изменяют состояние программы. В [[Декларативное программирование|декларативных языках программирования]], напротив, программа описывает желаемый результат, не указывая изменения состояний напрямую. Более специализированное определение состояния используется в некоторых компьютерных программах, которые работают [[Последовательное соединение (информатика)|последовательно]] с потоками данных, таких как [[Синтаксический анализатор|синтаксические анализаторы]], [[Межсетевой экран|файрволы]], [[Протокол передачи данных|протоколы передачи данных]] и [[Шифрование|программ шифрования]]. Последовательные программы обрабатывают поступающие данные, символы или пакеты, последовательно, по одному за раз. В некоторых из этих программ, информация о предыдущих полученных символах или пакетах данных, хранится в переменных и используется, чтобы повлиять на обработку текущего символа или пакета. Это называется «протоколом состояния», и данные, перенесенные из предыдущего цикла обработки называется «состоянием». В других случаях, программа не имеет никакой информации о предыдущем потоке данных и начинает «чистый» с каждого ввода данных; это называется «протокол без состояния».
== Механизмы конечных состояний ==

== Конечные автоматы ==
Выходная последовательная цепь или компьютерная программа в каждый момент времени полностью определена текущими входными данными и текущим состоянием. Поскольку каждый бинарный элемент памяти имеет только два возможных состояния, 0 или 1, общее количество состояний сети предполагается конечным и фиксированным по числу элементов памяти. Если количество двоичных элементов памяти в схеме — ''N'', то максимально возможное количество состояний будет ''2''<sup>''N''</sup>. Понятие состояния, оформленное в абстрактной математической [[Модель вычислений|модели вычислений]], называется [[Конечный автомат|конечным автоматом]], используемым для разработки как последовательные цифровые схемы так и компьютерных программ.


== Типы состояний ==
== Типы состояний ==
Различают следующие типы состояний:

* '''Совместимые состояния''' — это такие состояния в [[Конечный автомат|конечных автоматах]], которые не противоречат никакими входным значениям. Таким образом, для каждого входного значения оба состояния должны иметь одинаковые значения на выходе, и оба состояния должны иметь одинакового наследника (либо, неопределенного), или оба должны остаться неизменными. Совместимые состояния являются избыточными, если имеют место в одном автомате.

* '''Различимые состояния''' — это состояния в конечных автоматах, имеющие как минимум одну входную последовательность, вызывающую отличную от остальных выходную — независимо от того, какое состояние являлось начальным.

* '''Эквивалентные состояния''' — это состояния в конечных автоматах, которые для каждой возможной входной последовательности будут производиться одинаковые — независимо от того, какое состояние является начальным.

<!--
Порядок следования разделов см.
[[Википедия:Оформление статей#Структура статьи]]
-->



== См. также ==
== См. также ==
* [[Данные (вычислительная техника)]]
<!-- (необязательный раздел) — список внутренних ссылок на другие статьи Википедии, связанные по теме
* [[Прерывания]]
-->
* [[Побочный эффект (программирование)]]
* [[Данные (вычислительная техника)]]


== Примечания ==
== Примечания ==
{{примечания}}
{{примечания}}
<!-- автоматически формируемый список сносок из текста статьи, включая ссылки на источники и авторские комментарии-->



{{rq|recat}}


[[Категория:Информатика]]
<!-- Сюда поместите интервики, если получится их найти. (можно делать на последних этапах работы над статьей)-->
[[Категория:Модели вычислений]]
[[:en:]]

Текущая версия от 23:58, 15 ноября 2023

В информатике и теории автоматов состояние цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ[1]. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием.

Состояние цифровой логической схемы

[править | править код]

Цифровые логические схемы могут быть разделены на два типа: комбинационной логики, чьи выходные сигналы зависят только от входных сигналов, и секвенциальной (последовательной) логики, чьи выходные данные являются функцией и от текущих, и от входных данных, поступавших на вход в прошлом[2].

В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как триггеры, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ[3].

Например, текущее состояние микропроцессора (компьютерной микросхемы) определяется содержимым всех его элементов памяти: аккумуляторов, регистров хранения, кэшей данных и флагов.

При переводе компьютера в режим «гибернации» или перевод в "спящий режим", чтобы сохранить энергию за счет отключения процессора, памяти и других устройств, состояние процессора и оперативной памяти записывается во внешнюю энергонезависимую память, обычно на диске компьютера, при включении компьютера из спящего режима содержимое оперативной памяти и регистров процессора восстанавливается и исполнение прерванной гибернацией программы может быть корректно продолжено.

Аналогично сохраняется состояние процессора при обработке внешних прерываний программы внешними событиями, которые могут происходить в непредвиденные моменты времени. Для того, чтобы после завершения обработки прерывания прерванная текущая программа корректно возобновила свою работу, необходимо сохранение состояния тех регистров и памяти, которые используются обработчиком прерывания. Перед передачей управления прерванной программе, обработчик прерывания восстанавливает состояние регистров процессора и памяти и передает управление прерванной программе. Сохранение и восстановление состояния выполняет обработчик внешних прерываний.

Поскольку каждый двоичный элемент памяти, такой как триггер, или двоичный разряд регистра имеет только два возможных состояния — «логической единицы» или «логического нуля», и существует конечное число таких двоичных элементов памяти, всякая цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме равно N, то максимально возможное количество состояний будет 2N.

Состояние программы

[править | править код]

Компьютерные программы хранят данные в переменных, представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется состоянием программы[4][5][6].

Императивное программирование — парадигма программирования (способ проектирования языка программирования), которая описывает в терминах состояний и операторов, которые изменяют состояние программы. В декларативных языках программирования, напротив, программа описывает желаемый результат, не указывая изменения состояний напрямую. Более специализированное определение состояния используется в некоторых компьютерных программах, которые работают последовательно с потоками данных, таких как синтаксические анализаторы, файрволы, протоколы передачи данных и программ шифрования. Последовательные программы обрабатывают поступающие данные, символы или пакеты, последовательно, по одному за раз. В некоторых из этих программ, информация о предыдущих полученных символах или пакетах данных, хранится в переменных и используется, чтобы повлиять на обработку текущего символа или пакета. Это называется «протоколом состояния», и данные, перенесенные из предыдущего цикла обработки называется «состоянием». В других случаях, программа не имеет никакой информации о предыдущем потоке данных и начинает «чистый» с каждого ввода данных; это называется «протокол без состояния».

Конечные автоматы

[править | править код]

Выходная последовательная цепь или компьютерная программа в каждый момент времени полностью определена текущими входными данными и текущим состоянием. Поскольку каждый бинарный элемент памяти имеет только два возможных состояния, 0 или 1, общее количество состояний сети предполагается конечным и фиксированным по числу элементов памяти. Если количество двоичных элементов памяти в схеме — N, то максимально возможное количество состояний будет 2N. Понятие состояния, оформленное в абстрактной математической модели вычислений, называется конечным автоматом, используемым для разработки как последовательные цифровые схемы так и компьютерных программ.

Типы состояний

[править | править код]

Различают следующие типы состояний:

  • Совместимые состояния — это такие состояния в конечных автоматах, которые не противоречат никакими входным значениям. Таким образом, для каждого входного значения оба состояния должны иметь одинаковые значения на выходе, и оба состояния должны иметь одинакового наследника (либо, неопределенного), или оба должны остаться неизменными. Совместимые состояния являются избыточными, если имеют место в одном автомате.
  • Различимые состояния — это состояния в конечных автоматах, имеющие как минимум одну входную последовательность, вызывающую отличную от остальных выходную — независимо от того, какое состояние являлось начальным.
  • Эквивалентные состояния — это состояния в конечных автоматах, которые для каждой возможной входной последовательности будут производиться одинаковые — независимо от того, какое состояние является начальным.

Примечания

[править | править код]
  1. Harris, David Money; Sarah L. Harris. Digital Design and Computer Architecture. — USA: Morgan Kaufmann, 2007. — С. 103. — ISBN 0123704979. Архивировано 6 апреля 2014 года.
  2. Kaeslin, Hubert. Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication (англ.). — UK: Cambridge University Press, 2008. — P. 735. — ISBN 0521882672. Архивировано 6 апреля 2014 года.
  3. Srinath, N. K. 8085 Microprocessor: Programming and Interfacing (англ.). — Prentice-Hall of India Pvt. Ltd, 2005. — P. 326. — ISBN 978-8120327856. Архивировано 11 июня 2018 года.. — «page 46».
  4. Laplante, Philip A. Dictionary of Computer Science, Engineering and Technology (англ.). — USA: CRC Press, 2000. — P. 466. — ISBN 0849326915.
  5. Misra, Jayadev. A Discipline of Multiprogramming: Programming Theory for Distributed Applications (англ.). — Springer, 2001. — P. 14. — ISBN 0387952063. Архивировано 5 июля 2014 года.
  6. Prata, Stephen Prata. C Primer Plus, 5th Ed. — Pearson Education[англ.], 2004. — С. 113—114. — ISBN 0132713608. Архивировано 5 июля 2014 года.