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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Спасено источников — 5, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.9
Спасено источников — 5, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5
 
(не показана 1 промежуточная версия 1 участника)
Строка 5: Строка 5:
|место=USA
|место=USA
|страницы=103
|страницы=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#v=onepage&q=state&f=false
|ссылка=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
|isbn=0123704979
|ref=Harris
|ref=Harris
|автор=Harris, David Money; Sarah L. Harris
|автор=Harris, David Money; Sarah L. Harris
|archive-date=2014-04-06
}} {{Wayback|url=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 |date=20140406213057 }}</ref>. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием.
|url=https://books.google.com/books?id=&pg=&lpg=&dq=state+definition+digital&source=bl&ots=&sig=&hl=en&sa=X&ei=&ved=#v=onepage&q=state&f=false
}}</ref>. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием.


== Состояние цифровой логической схемы ==
== Состояние цифровой логической схемы ==
Строка 18: Строка 20:
|место=UK
|место=UK
|страницы=735
|страницы=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#v=onepage&q=state&f=false
|ссылка=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
|isbn=0521882672
|ref=Kaeslin
|ref=Kaeslin
|язык=en
|язык=en
|автор=Kaeslin, Hubert
|автор=Kaeslin, Hubert
|archive-date=2014-04-06
}} {{Wayback|url=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 |date=20140406213513 }}</ref>.
|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">{{книга
В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как [[триггер]]ы, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ<ref name="Srinath">{{книга
Строка 36: Строка 40:
|месяц=8
|месяц=8
|год=2005
|год=2005
|archive-date=2018-06-11
}} {{Wayback|url=https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46 |date=20180611212925 }}. — «page 46».</ref>.
|archive-url=https://web.archive.org/web/20180611212925/https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46
}}. — «page 46».</ref>.


Например, текущее состояние [[микропроцессор]]а (компьютерной микросхемы) определяется содержимым всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]].
Например, текущее состояние [[микропроцессор]]а (компьютерной микросхемы) определяется содержимым всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]].
Строка 68: Строка 74:
|автор=Misra, Jayadev
|автор=Misra, Jayadev
|год=2001
|год=2001
|archive-date=2014-07-05
}} {{Wayback|url=https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables |date=20140705122213 }}</ref><ref name="Prata">{{книга
|url=https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables
}}</ref><ref name="Prata">{{книга
|заглавие=C Primer Plus, 5th Ed
|заглавие=C Primer Plus, 5th Ed
|издательство={{Нп3|Pearson Education}}
|издательство={{Нп3|Pearson Education}}
Строка 77: Строка 85:
|автор=Prata, Stephen Prata
|автор=Prata, Stephen Prata
|год=2004
|год=2004
|archive-date=2014-07-05
}} {{Wayback|url=https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables |date=20140705122036 }}</ref>.
|url=https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables
}}</ref>.


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


== Примечания ==
== Примечания ==

Текущая версия от 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 года.