Состояние (информатика): различия между версиями
[непроверенная версия] | [непроверенная версия] |
Нет описания правки |
Спасено источников — 5, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5 |
||
(не показано 25 промежуточных версий 12 участников) | |||
Строка 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>.
Например, текущее состояние [[микропроцессор]]а (компьютерной микросхемы) определяется содержимым всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]].
При переводе компьютера в режим [[Гибернация (операционные системы)|«гибернации»]] или перевод в "спящий режим", чтобы сохранить энергию за счет отключения процессора, памяти и других устройств, состояние процессора и [[Оперативная память|оперативной памяти]] записывается во внешнюю энергонезависимую память, обычно на [[Жёсткий диск|диске]] компьютера, при включении компьютера из спящего режима содержимое оперативной памяти и регистров процессора восстанавливается и исполнение прерванной гибернацией программы может быть корректно продолжено.
Аналогично сохраняется состояние процессора при обработке внешних прерываний программы внешними событиями, которые могут происходить в непредвиденные моменты времени. Для того, чтобы после завершения обработки прерывания прерванная текущая программа корректно возобновила свою работу, необходимо сохранение состояния тех регистров и памяти, которые используются обработчиком прерывания. Перед передачей управления прерванной программе, обработчик прерывания восстанавливает состояние регистров процессора и памяти и передает управление прерванной программе. Сохранение и восстановление состояния выполняет обработчик внешних прерываний.
Поскольку каждый двоичный элемент памяти, такой как триггер, или двоичный разряд регистра имеет только два возможных состояния — «логической единицы» или «логического нуля», и существует конечное число таких двоичных элементов памяти, всякая цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме равно '''''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}}
[[Категория:Информатика]]
[[Категория:Модели вычислений]]
|
Текущая версия от 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 года.
Для улучшения этой статьи желательно:
|