Состояние (информатика): различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Д.Ильин (обсуждение | вклад) дополнение, уточнение, стилевые правки, оформление |
Спасено источников — 5, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5 |
||
(не показано 6 промежуточных версий 5 участников) | |||
Строка 1: | Строка 1: | ||
В [[Информатика|информатике]] и [[Теория автоматов|теории автоматов]] '''состояние''' цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ<ref name="Harris">{{ |
В [[Информатика|информатике]] и [[Теория автоматов|теории автоматов]] '''состояние''' цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ<ref name="Harris">{{книга |
||
|заглавие=Digital Design and Computer Architecture |
|||
| last = Harris |
|||
|издательство=[[Morgan Kaufmann Publishers|Morgan Kaufmann]] |
|||
| first = David Money |
|||
|год=2007 |
|||
| authorlink = |
|||
|место=USA |
|||
|author2=Sarah L. Harris |
|||
|страницы=103 |
|||
| title = Digital Design and Computer Architecture |
|||
|ссылка=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 |
|||
| publisher = Morgan Kaufmann |
|||
|isbn=0123704979 |
|||
| year = 2007 |
|||
|ref=Harris |
|||
| location = USA |
|||
|автор=Harris, David Money; Sarah L. Harris |
|||
| pages = 103 |
|||
|archive-date=2014-04-06 |
|||
| 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 |
|||
|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 |
|||
| doi = |
|||
}}</ref>. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием. |
|||
| id = |
|||
| isbn = 0123704979}}</ref>. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяется его текущими входными данными и его состоянием. |
|||
== Состояние цифровой логической схемы == |
== Состояние цифровой логической схемы == |
||
Цифровые логические схемы могут быть разделены на два типа: [[Комбинационная логика|комбинационной логики]], чьи выходные сигналы зависят только от входных сигналов, и [[Секвенциальная логика|секвенциальной (последовательной) логики]], чьи выходные данные являются функцией и от текущих, и от входных данных, поступавших на вход в прошлом<ref name="Kaeslin">{{ |
Цифровые логические схемы могут быть разделены на два типа: [[Комбинационная логика|комбинационной логики]], чьи выходные сигналы зависят только от входных сигналов, и [[Секвенциальная логика|секвенциальной (последовательной) логики]], чьи выходные данные являются функцией и от текущих, и от входных данных, поступавших на вход в прошлом<ref name="Kaeslin">{{книга |
||
|заглавие=Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication |
|||
| last = Kaeslin |
|||
|издательство=[[Издательство Кембриджского университета|Cambridge University Press]] |
|||
| first = Hubert |
|||
|год=2008 |
|||
| authorlink = |
|||
|место=UK |
|||
| title = Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication |
|||
|страницы=735 |
|||
| publisher = Cambridge University Press |
|||
|ссылка=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 |
|||
| year = 2008 |
|||
|isbn=0521882672 |
|||
| location = UK |
|||
|ref=Kaeslin |
|||
| pages = 735 |
|||
|язык=en |
|||
| 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 |
|||
|автор=Kaeslin, Hubert |
|||
| doi = |
|||
|archive-date=2014-04-06 |
|||
| id = |
|||
|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 |
|||
| isbn = 0521882672}}</ref>. |
|||
}}</ref>. |
|||
В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как [[триггер]]ы, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ<ref name="Srinath">{{ |
В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как [[триггер]]ы, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ<ref name="Srinath">{{книга |
||
|заглавие=8085 Microprocessor: Programming and Interfacing |
|||
| last =Srinath |
|||
|издательство=Prentice-Hall of India Pvt. Ltd |
|||
| first =N. K. | authorlink = |
|||
|страницы=326 |
|||
| title =8085 Microprocessor: Programming and Interfacing |
|||
|ссылка=https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46 |
|||
| publisher =Prentice-Hall of India Pvt. Ltd |
|||
|isbn=978-8120327856 |
|||
| date =August 2005 |
|||
|ref=Srinath |
|||
| location = |
|||
|язык=en |
|||
| pages =326 |
|||
|автор=Srinath, N. K. |
|||
| url =https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46 |
|||
|месяц=8 |
|||
| doi = |
|||
|год=2005 |
|||
| isbn = 978-8120327856 |
|||
|archive-date=2018-06-11 |
|||
| accessdate = 7 December 2012 |
|||
|archive-url=https://web.archive.org/web/20180611212925/https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46 |
|||
| quote= page 46}}</ref>. |
|||
}}. — «page 46».</ref>. |
|||
Например, текущее состояние [[микропроцессор]]а (компьютерной микросхемы) определяется содержимым всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]]. |
Например, текущее состояние [[микропроцессор]]а (компьютерной микросхемы) определяется содержимым всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]]. |
||
Строка 52: | Строка 53: | ||
== Состояние программы == |
== Состояние программы == |
||
Компьютерные программы хранят данные в [[Переменная (программирование)|переменных]], представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется ''состоянием'' программы<ref name="Laplante">{{ |
Компьютерные программы хранят данные в [[Переменная (программирование)|переменных]], представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется ''состоянием'' программы<ref name="Laplante">{{книга |
||
|заглавие=Dictionary of Computer Science, Engineering and Technology |
|||
| last = Laplante |
|||
|издательство=[[CRC Press]] |
|||
| first = Philip A. |
|||
|место=USA |
|||
| title = Dictionary of Computer Science, Engineering and Technology |
|||
|страницы=466 |
|||
| publisher = CRC Press |
|||
|ссылка=https://books.google.com/books?id=U1M3clUwCfEC&pg=PA24&dq=%22Program+state%22+%22 |
|||
| date = 2000 |
|||
|isbn=0849326915 |
|||
| location = USA |
|||
|ref=Laplante |
|||
| pages = 466 |
|||
|язык=en |
|||
| url = https://books.google.com/books?id=U1M3clUwCfEC&pg=PA24&dq=%22Program+state%22+%22 |
|||
|автор=Laplante, Philip A. |
|||
| doi = |
|||
|год=2000 |
|||
| id = |
|||
}}</ref><ref name="Misra">{{книга |
|||
|заглавие=A Discipline of Multiprogramming: Programming Theory for Distributed Applications |
|||
| last = Misra |
|||
|издательство=Springer |
|||
| first = Jayadev |
|||
|страницы=14 |
|||
| title = A Discipline of Multiprogramming: Programming Theory for Distributed Applications |
|||
|ссылка=https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables |
|||
| publisher = Springer |
|||
|isbn=0387952063 |
|||
| date = 2001 |
|||
|ref=Misra |
|||
| location = |
|||
|язык=en |
|||
| pages = 14 |
|||
|автор=Misra, Jayadev |
|||
| url = https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables |
|||
|год=2001 |
|||
| doi = |
|||
|archive-date=2014-07-05 |
|||
| id = |
|||
|archive-url=https://web.archive.org/web/20140705122213/https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables |
|||
| isbn = 0387952063}}</ref><ref name="Prata">{{cite book |
|||
}}</ref><ref name="Prata">{{книга |
|||
| last = Prata |
|||
|заглавие=C Primer Plus, 5th Ed |
|||
| first = Stephen Prata |
|||
|издательство={{Нп3|Pearson Education}} |
|||
| title = C Primer Plus, 5th Ed. |
|||
|страницы=113—114 |
|||
| publisher = Pearson Education |
|||
|ссылка=https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables |
|||
| date = 2004 |
|||
|isbn=0132713608 |
|||
| location = |
|||
|ref=Prata |
|||
| pages = 113—114 |
|||
|автор=Prata, Stephen Prata |
|||
| url = https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables |
|||
|год=2004 |
|||
| doi = |
|||
|archive-date=2014-07-05 |
|||
| id = |
|||
|archive-url=https://web.archive.org/web/20140705122036/https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables |
|||
| isbn = 0132713608}}</ref>. |
|||
}}</ref>. |
|||
[[Императивное программирование]] — [[парадигма программирования]] (способ проектирования [[Язык программирования|языка программирования]]), которая описывает в терминах состояний и операторов, которые изменяют состояние программы. В [[Декларативное программирование|декларативных языках программирования]], напротив, программа описывает желаемый результат, не указывая изменения состояний напрямую. Более специализированное определение состояния используется в некоторых компьютерных программах, которые работают [[Последовательное соединение (информатика)|последовательно]] с потоками данных, таких как [[Синтаксический анализатор|синтаксические анализаторы]], [[Межсетевой экран|файрволы]], [[Протокол передачи данных|протоколы передачи данных]] и [[Шифрование|программ шифрования]]. Последовательные программы обрабатывают поступающие данные, символы или пакеты, последовательно, по одному за раз. В некоторых из этих программ, информация о предыдущих полученных символах или пакетах данных, хранится в переменных и используется, чтобы повлиять на обработку текущего символа или пакета. Это называется «протоколом состояния», и данные, перенесенные из предыдущего цикла обработки называется «состоянием». В других случаях, программа не имеет никакой информации о предыдущем потоке данных и начинает «чистый» с каждого ввода данных; это называется «протокол без состояния». |
[[Императивное программирование]] — [[парадигма программирования]] (способ проектирования [[Язык программирования|языка программирования]]), которая описывает в терминах состояний и операторов, которые изменяют состояние программы. В [[Декларативное программирование|декларативных языках программирования]], напротив, программа описывает желаемый результат, не указывая изменения состояний напрямую. Более специализированное определение состояния используется в некоторых компьютерных программах, которые работают [[Последовательное соединение (информатика)|последовательно]] с потоками данных, таких как [[Синтаксический анализатор|синтаксические анализаторы]], [[Межсетевой экран|файрволы]], [[Протокол передачи данных|протоколы передачи данных]] и [[Шифрование|программ шифрования]]. Последовательные программы обрабатывают поступающие данные, символы или пакеты, последовательно, по одному за раз. В некоторых из этих программ, информация о предыдущих полученных символах или пакетах данных, хранится в переменных и используется, чтобы повлиять на обработку текущего символа или пакета. Это называется «протоколом состояния», и данные, перенесенные из предыдущего цикла обработки называется «состоянием». В других случаях, программа не имеет никакой информации о предыдущем потоке данных и начинает «чистый» с каждого ввода данных; это называется «протокол без состояния». |
||
Строка 101: | Строка 103: | ||
* [[Данные (вычислительная техника)]] |
* [[Данные (вычислительная техника)]] |
||
* [[Прерывания]] |
* [[Прерывания]] |
||
* [[Побочный эффект (программирование)]] |
|||
== Примечания == |
== Примечания == |
Текущая версия от 23:58, 15 ноября 2023
В информатике и теории автоматов состояние цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ[1]. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием.
Состояние цифровой логической схемы
[править | править код]Цифровые логические схемы могут быть разделены на два типа: комбинационной логики, чьи выходные сигналы зависят только от входных сигналов, и секвенциальной (последовательной) логики, чьи выходные данные являются функцией и от текущих, и от входных данных, поступавших на вход в прошлом[2].
В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как триггеры, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ[3].
Например, текущее состояние микропроцессора (компьютерной микросхемы) определяется содержимым всех его элементов памяти: аккумуляторов, регистров хранения, кэшей данных и флагов.
При переводе компьютера в режим «гибернации» или перевод в "спящий режим", чтобы сохранить энергию за счет отключения процессора, памяти и других устройств, состояние процессора и оперативной памяти записывается во внешнюю энергонезависимую память, обычно на диске компьютера, при включении компьютера из спящего режима содержимое оперативной памяти и регистров процессора восстанавливается и исполнение прерванной гибернацией программы может быть корректно продолжено.
Аналогично сохраняется состояние процессора при обработке внешних прерываний программы внешними событиями, которые могут происходить в непредвиденные моменты времени. Для того, чтобы после завершения обработки прерывания прерванная текущая программа корректно возобновила свою работу, необходимо сохранение состояния тех регистров и памяти, которые используются обработчиком прерывания. Перед передачей управления прерванной программе, обработчик прерывания восстанавливает состояние регистров процессора и памяти и передает управление прерванной программе. Сохранение и восстановление состояния выполняет обработчик внешних прерываний.
Поскольку каждый двоичный элемент памяти, такой как триггер, или двоичный разряд регистра имеет только два возможных состояния — «логической единицы» или «логического нуля», и существует конечное число таких двоичных элементов памяти, всякая цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме равно N, то максимально возможное количество состояний будет 2N.
Состояние программы
[править | править код]Компьютерные программы хранят данные в переменных, представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется состоянием программы[4][5][6].
Императивное программирование — парадигма программирования (способ проектирования языка программирования), которая описывает в терминах состояний и операторов, которые изменяют состояние программы. В декларативных языках программирования, напротив, программа описывает желаемый результат, не указывая изменения состояний напрямую. Более специализированное определение состояния используется в некоторых компьютерных программах, которые работают последовательно с потоками данных, таких как синтаксические анализаторы, файрволы, протоколы передачи данных и программ шифрования. Последовательные программы обрабатывают поступающие данные, символы или пакеты, последовательно, по одному за раз. В некоторых из этих программ, информация о предыдущих полученных символах или пакетах данных, хранится в переменных и используется, чтобы повлиять на обработку текущего символа или пакета. Это называется «протоколом состояния», и данные, перенесенные из предыдущего цикла обработки называется «состоянием». В других случаях, программа не имеет никакой информации о предыдущем потоке данных и начинает «чистый» с каждого ввода данных; это называется «протокол без состояния».
Конечные автоматы
[править | править код]Выходная последовательная цепь или компьютерная программа в каждый момент времени полностью определена текущими входными данными и текущим состоянием. Поскольку каждый бинарный элемент памяти имеет только два возможных состояния, 0 или 1, общее количество состояний сети предполагается конечным и фиксированным по числу элементов памяти. Если количество двоичных элементов памяти в схеме — N, то максимально возможное количество состояний будет 2N. Понятие состояния, оформленное в абстрактной математической модели вычислений, называется конечным автоматом, используемым для разработки как последовательные цифровые схемы так и компьютерных программ.
Типы состояний
[править | править код]Различают следующие типы состояний:
- Совместимые состояния — это такие состояния в конечных автоматах, которые не противоречат никакими входным значениям. Таким образом, для каждого входного значения оба состояния должны иметь одинаковые значения на выходе, и оба состояния должны иметь одинакового наследника (либо, неопределенного), или оба должны остаться неизменными. Совместимые состояния являются избыточными, если имеют место в одном автомате.
- Различимые состояния — это состояния в конечных автоматах, имеющие как минимум одну входную последовательность, вызывающую отличную от остальных выходную — независимо от того, какое состояние являлось начальным.
- Эквивалентные состояния — это состояния в конечных автоматах, которые для каждой возможной входной последовательности будут производиться одинаковые — независимо от того, какое состояние является начальным.
См. также
[править | править код]Примечания
[править | править код]- ↑ Harris, David Money; Sarah L. Harris. Digital Design and Computer Architecture. — USA: Morgan Kaufmann, 2007. — С. 103. — ISBN 0123704979. Архивировано 6 апреля 2014 года.
- ↑ Kaeslin, Hubert. Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication (англ.). — UK: Cambridge University Press, 2008. — P. 735. — ISBN 0521882672. Архивировано 6 апреля 2014 года.
- ↑ Srinath, N. K. 8085 Microprocessor: Programming and Interfacing (англ.). — Prentice-Hall of India Pvt. Ltd, 2005. — P. 326. — ISBN 978-8120327856. Архивировано 11 июня 2018 года.. — «page 46».
- ↑ Laplante, Philip A. Dictionary of Computer Science, Engineering and Technology (англ.). — USA: CRC Press, 2000. — P. 466. — ISBN 0849326915.
- ↑ Misra, Jayadev. A Discipline of Multiprogramming: Programming Theory for Distributed Applications (англ.). — Springer, 2001. — P. 14. — ISBN 0387952063. Архивировано 5 июля 2014 года.
- ↑ Prata, Stephen Prata. C Primer Plus, 5th Ed. — Pearson Education[англ.], 2004. — С. 113—114. — ISBN 0132713608. Архивировано 5 июля 2014 года.
Для улучшения этой статьи желательно:
|