симуляция процессов это в информатике определение и моделирование

Так как медиаискусство в основном создаётся в цифровом формате, эмуляция для него крайне важна как средство электронного архивирования. Такие деятели как, например, Cory Arcangel восстанавливают устаревшие технологии и используют их в своем творчестве, высоко оценивая важность децентрализованного и неофициального процесса сохранения цифровой культуры.

Эмулятор терминала — это программа для современного ПК или другого устройства, позволяющая получить интерактивный доступ к операционной системе мейнфрейма или другой системе хоста, например HP-UX или OpenVMS. Уже длительное время терминалы наподобие IBM 3270 и VT100 не производятся. Вместо этого используется программа, запускаемая на современной операционной системе, которая имитирует «глупый» терминал и способна отображать графические и текстовые элементы приложения хоста, отправлять клавиатурный ввод и обрабатывать команды через соответствующий протокол терминала. Некоторые из таких эмуляторов включают приложения для Attachmate Reflection, IBM Personal Communications, AlphaVM virtual machine от EmuVM, Stromasys CHARON-VAX/AXP и Micro Focus Rumba.

Симуляция

Имитационное моделирование заключается в последовательном расчете состояния бизнес-процесса в различные моменты времени. Например с 9:00 до 9:10 секретарю придет конверт с договором на подписание, в 10:00 она допьет кофе и отнесет его юристам, которые по истечении трех часов вернут его на доработку и так далее, пока подписанная копия договора не будет отправлена клиенту. Управление симуляцией осуществляется посредством кнопок Пуск, Ускорить, Пауза, Следующий и Стоп — что позволяет пройти любой цикл выполнения процесса вдоль и попрек. В зависимости от состояния в расчетный момент, на графических объектах модели выводится их состояние для визуального контроля. Так же ведется подробный журнал переходов, где можно отследить детали возникновения заторов в процессе.


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

Имитационное моделирование — это частный случай математического моделирования. Существует класс объектов, для которых по различным причинам не разработаны аналитические модели, создание аналитической модели принципиально невозможно, не разработаны методы решения полученной модели либо решения неустойчивы. В этом случае аналитическая модель заменяется имитатором или имитационной моделью.

Про урокцифры:  НА САЙТЕ АКАДЕМИИ ЯНДЕКСА ПОЯВИЛИСЬ БЕСПЛАТНЫЕ УЧЕБНИКИ ПО ОСНОВАМ ПРОГРАММИРОВАНИЯ

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

Имитационная модель — логико-математическое описание объекта, которое может быть использовано для экспериментирования на компьютере в целях проектирования, анализа и оценки функционирования объекта.

Применение имитационного моделирования

К имитационному моделированию прибегают, когда:

Цель имитационного моделирования состоит в воспроизведении поведения исследуемой системы на основе результатов анализа наиболее существенных взаимосвязей между её элементами или разработке симулятора (англ. ) исследуемой предметной области для проведения различных экспериментов.

Сервис имитационного моделирования бизнес-процессов


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

Сервис предназначен для поиска узких мест разрабатываемых бизнес-процессов или проверки эффективности вариантов внесения изменений в действующие процессы. Аналогичное по функционалу ПО входит в состав BPM-систем IBM, Oracle, AG Software и др., но не является доступным для обучения и коммерческого использования вне корпоративного сегмента. Основная миссия сервиса bpsimulator.com — доступность имитационного моделирования для потенциальных пользователей и далее я расскажу, каким образом достигается данная цель. Симулятор реализован как веб-сервис с возможностью автономной работы. Имитационное моделирование включают в себя следующие этапы:

Процесс моделирования включает три элемента:

Первый этап построения модели предполагает наличие некоторых знаний об объекте-оригинале. Познавательные возможности модели обуславливаются тем, что модель отображает (воспроизводит, имитирует) какие-либо существенные черты объекта-оригинала. Вопрос о необходимой и достаточной мере сходства оригинала и модели требует конкретного анализа. Очевидно, модель утрачивает свой смысл как в случае тождества с оригиналом (тогда она перестаёт быть моделью), так и в случае чрезмерного во всех существенных отношениях отличия от оригинала. Таким образом, изучение одних сторон моделируемого объекта осуществляется ценой отказа от исследования других сторон. Поэтому любая модель замещает оригинал лишь в строго ограниченном смысле. Из этого следует, что для одного объекта может быть построено несколько «специализированных» моделей, концентрирующих внимание на определённых сторонах исследуемого объекта или же характеризующих объект с разной степенью детализации.

На втором этапе модель выступает как самостоятельный объект исследования. Одной из форм такого исследования является проведение «модельных» экспериментов, при которых сознательно изменяются условия функционирования модели и систематизируются данные о её «поведении». Конечным результатом этого этапа является множество (совокупность) знаний о модели.

На третьем этапе осуществляется перенос знаний с модели на оригинал — формирование множества знаний. Одновременно происходит переход с «языка» модели на «язык» оригинала. Процесс переноса знаний проводится по определённым правилам. Знания о модели должны быть скорректированы с учётом тех свойств объекта-оригинала, которые не нашли отражения или были изменены при построении модели.

Четвёртый этап — практическая проверка получаемых с помощью моделей знаний и их использование для построения обобщающей теории объекта, его преобразования или управления им.

Моделирование — циклический процесс. Это означает, что за первым четырёхэтапным циклом может последовать второй, третий и т. д. При этом знания об исследуемом объекте расширяются и уточняются, а исходная модель постепенно совершенствуется. Недостатки, обнаруженные после первого цикла моделирования, обусловленные малым знанием объекта или ошибками в построении модели, можно исправить в последующих циклах.

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

  • Глинский Б. А. Моделирование как метод научного исследования. М., 1965;
  • Кодрянц И. Г. Философские вопросы математического моделирования. Кишинев, 1978;
  • Мамедов Н. М. Моделирование и синтез знаний. Баку, 1978;
  • Уемов А. И. Логические основы метода моделирования. М., 1971
  • Fishwick PA. Simulation Model Design and Execution: Building Digital Worlds. — Upper Saddle River, NJ: Prentice Hall. — 1995.
  • Sokolowski, J. A., Banks, C. M. Principles of Modelling and Simulation. — Hoboken, NJ: John Wiley and Sons. — 2009.

Моделирование в производстве

Другой важной целью моделирования в производственных системах является количественная оценка производительности системы.

Моделирование и имитация задачи могут быть выполнены путем ручного манипулирования виртуальным человеком в моделируемой среде. Некоторые программы для моделирования эргономики позволяют проводить интерактивное моделирование и оценку в реальном времени с помощью ввода данных, используя технологии захвата движения. Однако захват движения требует дорогостоящего оборудования и создания реквизита для представления окружающей среды.

Моделирование запуска спейс шаттла

Комната, сконфигурированная для моделирования запуска спейс шаттла

Основные цели моделирования запуска шаттла заключаются в следующем:

Моделирование логических схем

Моделирование логических схем — применение особого программного обеспечения с целью предсказать поведение цифровой схемы и языков описания аппаратуры. Моделирование может выполняться на различных уровнях физических абстракций: уровень транзисторов, уровень логических элементов, уровень регистровых передач или функциональный уровень. Моделирование осуществляется после разработки схемы в виде логических уравнений и до начала её физического производства.

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

Первое применение функционального моделирования осуществлено компанией Autonetics около 1960 года для тестирования программ на языке ассемблера, которые впоследствии должны были выполняться на военной машине D-17B. Это позволило писать, выполнять и тестировать полетное программное обеспечение до физического изготовления вычислительного оборудования D-17B. Эта же компания позднее применяла функциональное моделирование для тестирования полетного программного обеспечения, которое должно было выполняться на машине D-37C.

Эмуляция в вычислительной технике

Эмуляция связана с возможностью компьютерной программы в одном устройстве эмулировать (имитировать) другую программу или устройство. Например, многие принтеры разработаны таким образом, чтобы эмулировать принтеры HP Laserjet, так как для данных принтеров существует большое количество программного обеспечения. Если принтер, не произведенный HP, эмулирует принтер HP, тогда любая программа, разработанная для принтеров HP, сможет работать и с принтером другого производителя, получая при этом идентичную печать.

Аппаратная эмуляция представлена эмуляторами, выполненными в виде отдельного устройства. Например, DOS-совместимые карты расширения наподобие Centris 610 и Performa 630, устанавливавшиеся в некоторые Macintosh для обеспечения возможности запуска DOS-программ с ПК. Другим примером являются аппаратные эмуляторы на основе ППВМ.

Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована на другой. Однако на практике зачастую это бывает крайне затруднительно ввиду того, что точное поведение эмулируемой системы не документировано и его возможно определить только посредством обратной разработки. В тезисе также не говорится о том, что если производительность эмуляции меньше, чем у оригинальной системы, то эмулируемое программное обеспечение будет работать существенно медленнее, нежели должно на оригинальном оборудовании, с возможным возникновением остановок эмуляции или неустойчивой производительностью.

Эмуляция игровой приставки

Эмулятор игровой приставки — это программа, которая позволяет на персональном компьютере или игровой приставке эмулировать другую приставку. Чаще всего их используют для запуска старых игр на ПК или более современных приставках. Также эмуляторы используют для создания любительского перевода игр, модификаций игр, а также для разработки такого пользовательского контента как демоверсии и новые игры для старых систем. В распространении этого вида эмуляции большую роль сыграл интернет, так как большая часть (если не все) эмуляторов не доступна в точках розничных продаж. Некоторые из эмуляторов, выпущенные в последние два десятилетия: Dolphin, ZSNES, MAME, DeSmuME, ePSXe, Gens, VisualBoyAdvance, Jnes и Nestopia.

Анализ

По окончании симуляции можно посмотреть собранную статистику симуляции, которая распределена по следующим срезам:


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

Симуляторы компьютерных систем – похожи ли на реальность

Время на прочтение

Простым и доступным языком про основные термины из области симуляторов, а также типы и уровни детализации моделей. Материал для легкого и быстрого знакомства с данным направлением.


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

Если бы меня спросили про симуляцию некоторое время назад, то первое, что пришло бы в голову – это мой сын, рассказывающий о своем больном животе накануне контрольной в школе. Однако последние десять лет я работаю с симуляторами различных компьютерных систем, от телефонов до серверов, основанных на микропроцессорах, SOC-ах (System-On-Chip) и чипсетах одного из крупнейших производителей (к сожалению, название под NDA), и мое представление о симуляции поменялось. Но обо всем по порядку.

Я уверен, что многие из вас сталкивались с симуляторами, которые часто называют виртуальными машинами, гипервизорами. Кто-то устанавливает Parallels Studio себе на Mac, чтобы запускать Windows из MacOS, кто-то пользуется продуктом от VmWare – Workstation, чтобы иметь еще одну операционную систему (ОС), запущенную внутри уже установленной. Те, кто знаком с Linux, предпочитают KVM и QEMU. Также популярен в народе VirtualBox. Люди, профессионально занимающиеся разработкой аппаратуры на базе ПЛИС (Программируемая Логическая Интегральная Схема), знают про VCS от Synopsys и Mentor Graphics Questa. И все же это лишь небольшая часть того, что можно называть симуляторами.

Что такое симулятор?

Симулятором называют модель, как правило, программную, реального устройства. Соответственно, симуляция – это процесс работы такой модели, повторяющий работу устройства.

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

Airbnb в симуляции – гость и хост

Код, запускаемый внутри симулятора, называют «гостевым кодом», это может быть «гостевая программа» или целая «гостевая операционная система». Сама симулируемая система называется просто «гость». В свою очередь, система, компьютер, где запускается симулятор, называется «хостом» (англ. host), а операционная система, работающая на хосте, в которой запускается симулятор, называется «хостовой ОС».


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

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

Симуляция и эмуляция – какое название правильное?

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

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

Создание эмуляторов гораздо сложнее из-за большего объема функциональности, которую необходимо реализовывать в модели. Также они функционируют намного медленнее по сравнению с симуляторами внешнего поведения устройства. С эмуляторами речь вообще не идет о запуске Windows – это может занять годы. Никто не занимается созданием программного эмулятора целиком всей платформы – это очень долго и дорого. Вместо этого эмулируются отдельные компоненты системы, такие как тот же центральный процессор, и на нем запускается лишь часть симуляционного процесса. Возможны различные гибридные схемы, когда часть симулятора является верхнеуровневой моделью, часть низкоуровневой, часть в ПЛИС, а часть вообще реальная железка.


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

4 уровня детализации симуляции

Как я написал выше, наиболее распространенным является вариант симуляции на уровне инструкций процессора, так называемый ISA (Instruction Set Architecture), или, точнее, результата их выполнения, т.е. без эмуляции всей внутренней логики того, как это происходит в реальном процессоре, и без учета времени выполнения различных инструкций. Именно такие симуляторы называют еще функциональными. Так работают VirtualBox, Vmware Workstation, Wind River Simics, KVM и QEMU. Это позволяет удобно, без лишних дополнительных действий запускать программы, предназначенные для симулируемого устройства. Другими словами, не требуется ни перекомпиляция, ни какие-либо другие манипуляции с запускаемыми программами. В таких случаях говорят, что возможен запуск немодифицированного бинарного кода.

Если говорить про более высокий уровень абстракции, то это будет реализация определенного ABI (Application Binary Interface). В двух словах, ABI описывает бинарный интерфейс взаимодействия двух программ – как правило, пользовательской программы и библиотеки или ОС. A BI покрывает соглашения о вызовах (как передавать параметры и возвращать значения), размеры типов данных, выполнение системных вызовов. Как это работает? Например, если программе, написанной для Linux, необходимо создать дополнительный тред (от англ. thread – нить) выполнения, то вызывается функция pthread_create(). А что, если сделать библиотеку с такой функцией в Windows и реализовать необходимые механизмы связывания приложения и библиотеки (динамической линковки)? В таком случае можно будет запускать Linux приложения из Windows. Windows будет «симулировать» Linux. Именно это и было сделано в Windows subsystem for Linux в Windows 10, что позволяет запускать немодифицированные бинарные Linux приложения в Windows.

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

Ниже уровня микроархитектурной симуляции идет уровень эмуляции логических элементов, из которых и состоят современные чипы. Такие эмуляторы бывают и программными, и аппаратными с использованием ПЛИС. Логика ПЛИС описывается с помощью RTL (Register Transfer Level) на языках Verilog, VHDL и др. После компиляции получается образ (bitstream), который потом прошивается в ПЛИС. Причем для этого необязательно пользоваться паяльником и разбираться в электротехнике. Плата подсоединяется к компьютеру, например, по USB или JTAG интерфейсу, а специальный софт от производителя ПЛИС платы выполняет запись. Стоимость таких плат начинается от десяти долларов за простейшие варианты до миллионов долларов для больших ПЛИС стендов размером со шкаф, используемых в крупных компаниях-производителях чипов. В таких компаниях симуляция с использованием ПЛИС является финальной стадией перед отдачей RTL в производство.

Если речь идет о несложных устройствах, то, имея на руках образ ПЛИС, можно обратиться в специализированные компании, которые сделают настоящее (не ПЛИС) устройство с запрограммированной логикой.

На рисунке ниже показаны описанные уровни симуляции.


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

Кроме этих уровней моделирования, мне также приходилось сталкиваться с гибридными симуляторами. По сути, они представляют собой соединенные друг с другом симуляторы, моделирующие на разных уровнях разные части системы. Например, необходим анализ пропускной способности новой сетевой карты, работающей вместе с разрабатываемым драйвером для определенной ОС. Такое сетевое устройство, а также ряд смежных устройств, могут быть реализованы сначала на микроархитектурном уровне для предварительного анализа, а потом и в ПЛИС, на уровне логических элементов, для финальных проверок. При этом остальная часть системы, задействованная лишь частично, реализуется на уровне инструкций. Обойтись без нее нельзя, так как она необходима, например, для загрузки ОС, а реализовывать ее на более низком и сложном уровне не имеет смысла.

Так что же на счет сравнения симуляторов и реальности?

Как теперь понятно, нет задачи сделать тот или иной симулятор максимально похожим на реальность. Есть задача, которую ставит бизнес, и симуляция выполняется со той степенью “похожести” на реальность, который является минимально достаточным для решения этой задачи, не тратя при этом лишних денег и времени. В одном случае это может быть простая библиотека, реализующая необходимый бинарный интерфейс (ABI), а в другом не обойтись без детального микроархитектурного симулятора.

Это самая базовая информация о том, что такое симуляторы и какие они бывают. В следующей статье я опишу детали реализации полноплатформенных симуляторов, потактовых моделей и работу с трассами.

Структурный состав эмулятора

Как правило эмулятор состоит из нескольких модулей, каждый из которых соответствует отдельной эмулируемой подсистеме оригинального устройства. В наиболее общем случае эмулятор состоит из следующих блоков:

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

При эмуляции вполне возможно отобразить всю подсистему памяти в виде простого массива, каждый элемент которого имеет размер эмулированного слова. Однако этот подход обречен на неудачу, потому что в этом случае никакой логический адрес памяти не будет совпадать с физической памятью. Наиболее ярко это проявляется в случае, когда оригинальное оборудование обладает продвинутым управлением памятью (в этом случае в модуле подсистемы памяти должна быть реализована логика MMU либо как отдельный модуль, либо как часть виртуального CPU).

Однако даже если эмулируемое устройство не содержит MMU, существуют и другие факторы, нарушающие эквивалентность логической и физической памяти: многие (если не все) архитектуры обладают отображаемыми в ОЗУ портами ввода-вывода; даже те, которые ими не обладают, имеют блоки памяти, отображаемые в ПЗУ. Это значит, что представление памяти в виде массива не должно применяться, если требуется эмулировать ПЗУ. Функции типа переключения банков или сегментной адресации также могут усложнить эмуляцию памяти.

В результате большинство эмуляторов имеет по меньшей мере две процедуры — для чтения из памяти и для записи в память, — которые ответственны за доступ к правильной области правильного объекта.

Для эмуляции систем с ограниченной адресацией, где адреса памяти с 0 по (размер ПЗУ) — 1 доступны только для чтения, а все остальные принадлежат ОЗУ, что-то подобное следующему является вполне типичным.

Как правило, модуль CPU — самая сложная часть эмулятора. Во многих эмуляторах используются предварительно «подготовленные» модули CPU, чтобы сосредоточиться на качественной и эффективной эмуляции.

Интерпретатор — простейшая форма эмуляции CPU. Это — программа, которая следует за потоком выполнения программы и для каждой встречающейся машинной инструкции выполняет операции, семантически эквивалентные оригинальным инструкциям, на процессоре хоста. Это возможно назначением переменных для каждого регистра и флага эмулируемого CPU. Логика работы эмулированного CPU может быть с большей или меньшей сложностью реализована в алгоритме программы, создавая программную реализацию, которая в большей или меньшей степени отражает оригинальное оборудование.

Следующий пример показывает, как с помощью интерпретатора можно осуществить эмуляцию CPU. В данном примере опрос прерываний происходит перед выполнением инструкции, однако из-за низкой производительности этот способ редко используется в существующих эмуляторах (в целом быстрее использовать подпрограмму, выполняющую роль прерывания).

* Handling of every valid instruction

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

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

Преодолеть эти ограничения помог прогресс в технике динамической компиляции. Простая трансляция эмулированного программного кода в код, выполнимый на архитектуре хоста, невозможна априори по нескольким причинам:

Чтобы обойти эти проблемы применяют разнообразные приемы, включая известную «компиляцию на лету». Компилятор ожидает, пока поток управления процессором не перейдет в область, содержащую нетранслированный код. Только тогда («на лету») происходит трансляция блока кода в код, который может быть выполнен. Обработанный код помещается в кэш кода, при этом оригинальный код не подвергается изменению. В таком случае даже блоки данных подвергнутся бессмысленной трансляции компилятором, единственным эффектом чего будет увеличение времени работы транслятора.

В некоторых случаях, например при запуске старых игр, высокая скорость эмуляции может быть нежелательной, так как игры создавались без оглядки на производительность компьютеров будущего. В игре, разработанной для ПК с CPU 30 MHz, игроку может отводиться 300 игровых секунд на игровой уровень, в случае запуска той же игры на ПК с CPU 300 MHz игроку эти 300 игровых секунд будут соответствовать 30 реальным секундам. Другие программы, например некоторые программы для DOS, вообще не смогут запуститься на быстром компьютере. Практически, если эмулируется система, являвшаяся «чёрным ящиком», изменения в ядре которого не ожидались, программы могут зависеть от некоторых специфических параметров оборудования (например, частоты CPU). Таким образом, для правильной эмуляции подобных приложений требуется очень точное управление скоростью эмуляции.

Ввод и вывод

Как уже было отмечено, системные шины эмулируются редко. Каждое устройство ввода-вывода рассматривается отдельно, потому как в эмуляторе отсутствует реализация какого-либо универсального интерфейса. Так как каждое устройство ввода-вывода может быть идеально подогнано к параметрам эмулированного устройства, это даёт выигрыш в производительности. Однако решения на основе стандартизованных, унифицированных API всё же могут составить конкуренцию упрощённым моделям в случае их грамотной, искусной реализации. Дополнительным преимуществом будет «автоматически» получаемая служба плагинов, через которую с эмулятором смогут работать сторонние виртуальные устройства. В унифицированных API ввода-вывода необязательно повторять полную структуру шины: её схемотехника ограничена несколькими электронными компонентами, таким образом, в программной реализации необязательно наличие системы разрешения конфликтов параллельных вычислений.

Даже в эмуляторах, рассматривающих отдельно каждое устройство, как правило присутствует следующая виртуальная инфраструктура:

Системы имитационного моделирования

Симуляция в сфере развлечений охватывает многие крупные и популярные отрасли, такие как кино, телевидение, видеоигры и аттракционы в тематических парках. Хотя считается, что современная симуляция имеет свои корни в обучении и армии, в 20-м веке она также стала широко использоваться компаниями, предоставляющими развлекательные услуги.

История визуального моделирования в кино и играх

Первая игра-симулятор, возможно, была создана еще в 1947 году Томасом т. Голдсмитом-младшим и Эстлом Рэем Манном. Это была простая игра, которая имитировала ракету, выпущенную по цели. Кривизну ракеты и ее скорость можно было регулировать с помощью нескольких ручек. В 1958 году Вилли Хиггинботем создал игру под названием «теннис для двоих», которая имитировала игру в теннис между двумя игроками, используя ручное управление, и отображалась на осциллографе. Это была одна из первых электронных видеоигр, использующих графический дисплей.

1970-е и начало 1980-х годов

Развитие технологий в 1980-х годах привело к тому, что 3D-моделирование стало более широко использоваться в фильмах и компьютерных играх, таких как Battlezone(1980) и Elite(1984) компании Acornsoft, одной из первых использующих каркасную модель в персональных компьютерах.

Эпоха до виртуального кинематографа (начало 1980-х-1990-е годы)

Появление виртуального кинематографа в начале 2000-х годов привело к резкому росту числа фильмов, снятых на основе виртуальных изображений. Классическими примерами являются цифровые двойники Нео, Смита и других персонажей в трилогии «Матрица» и множество фантастических персонажей, создание которых невозможно без компьютерной графики, в трилогии «Властелин колец».

Другие виды развлечений на основе симуляции


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

Три подхода имитационного моделирования


СИМУЛЯЦИЯ ПРОЦЕССОВ ЭТО В ИНФОРМАТИКЕ ОПРЕДЕЛЕНИЕ И МОДЕЛИРОВАНИЕ

Подходы имитационного моделирования на шкале абстракции

Пример результата научного моделирования. Схема химических процессов и процессов переноса в атмосфере

В силу многозначности понятия «модель», в науке и технике не существует единой классификации видов моделирования: классификацию можно проводить по характеру моделей, по характеру моделируемых объектов, по сферам приложения моделирования (в технике, физических науках, кибернетике и так далее).

В настоящее время по технологии моделирования и области применения выделяют такие основные виды моделирования:

Существует несколько программных пакетов для выполнения компьютерного имитационного моделирования (например, моделирование методом Монте-Карло, стохастическое моделирование, мультиметодное моделирование), которые значительно упрощают обработку данных.

Имитаторы могут также использоваться для интерпретации деревьев отказов или тестирования логических схем VLSI до их построения. Символьное моделирование использует переменные для обозначения неизвестных значений.

В области оптимизации моделирование физических процессов часто используется в сочетании с эволюционными вычислениями для оптимизации стратегий управления.

Классификация и терминология

Моделирование выхода в открытый космос.

Визуализация модели прямого численного моделирования.

Исторически симулирование, применяемое в различных областях, развивалось в значительной степени независимо, но исследования теории систем и кибернетики XX века в сочетании с распространением использования компьютеров во всех этих областях привели к некоторой унификации и более систематическому взгляду на эту концепцию.

В случае физического моделирования физические объекты заменяются реальной вещью. Эти физические объекты часто выбираются потому, что они меньше или дешевле, чем реальный объект или система.

Интерактивное моделирование — это особый вид физического моделирования, часто называемый симуляцией человека в цикле, в котором физическое моделирование включает в себя людей-операторов, таких как симулятор полета, симулятор парусного спорта или симулятор вождения.

Автономное моделирование — это моделирование, выполняемое на одной рабочей станции само по себе.

Распределенное моделирование использует более одного компьютера одновременно, чтобы гарантировать доступ к различным ресурсам(например, многопользовательские операционные системы или распределенные наборы данных).

Понятие точности моделирования используется для описания того, насколько близко оно имитирует реальный аналог. Можно приблизительно разделить точность на следующие уровни:

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

Средний уровень — автоматически реагирует на раздражители, с ограниченной точностью.

Высокий уровень — почти неразличимая или максимально приближенная к реальной системе.

В большинстве существующих эмуляторов воспроизводится только аппаратное обеспечение. Таким образом, если требуется операционная система, хранящаяся в ПЗУ, или другое программное обеспечение, его следует получить дополнительно (впрочем, оно тоже может быть эмулировано). В дальнейшем и операционная система, и программное обеспечение будут интерпретированы эмулятором таким же образом, как и на изначальном оборудовании. Кроме интерпретатора эмулированных двоичных машинных кодов также должно эмулироваться и некоторое другое оборудование (например, вводные и выводные устройства). Например, если запись в определенную область памяти должна выводить что-то на экран, такое поведение также должно быть эмулировано.

В пределе эмулятор должен исходить из модели, созданной на основе параметров и особенностей оригинального схемотехнического решения, включающего виртуальный источник питания, но на практике это было бы исключительным решением. Как правило, эмуляторы отталкиваются от модели, построенной на имеющейся документации и логической схеме устройства. Для эмуляции некоторых систем важным оказывается высокая точность эмуляции вплоть до тактовой частоты отдельных элементов, недокументированных функций, непредсказуемых аналоговых компонентов и допущенных ошибок. Особенно это важно при реализации эмуляторов классических домашних компьютеров типа Commodore 64, программы для которых часто пользуются утонченными низкоуровневыми приемами программирования, разработанными создателями игры и демосценой.

Наоборот, некоторые другие устройства имели очень ограниченный прямой доступ к оборудованию. В подобных случаях может быть достаточно простого слоя совместимости. Системные запросы эмулируемой программы транслируются в системные запросы хоста, то есть в системах FreeBSD, NetBSD и OpenBSD для запуска Linux-приложений с закрытым кодом используется слой совместимости с Linux. Например, графический процессор Nintendo 64 был полностью программируемым, и большинство разработчиков игр использовало заложенные заводские программы, которые были самодостаточными и обменивались информацией с игрой через буфер FIFO. Поэтому многие эмуляторы вообще не эмулируют графический процессор, интерпретируя вместо этого команды центрального процессора так же как и оригинальная программа.

Разработчики программ для встраиваемых систем и игровых приставок часто создают свои продукты на особо точных эмуляторах, называемых симуляторами, перед запуском на физическом оборудовании. Это делается для возможности создания и тестирования до запуска в производство окончательной ревизии оборудования, а также для возможности быстрой отладки программы без затрат времени на копирование и внесение побочных эффектов отладчика. Во многих случаях симулятор создается и предоставляется изготовителем оборудования, что теоретически должно повышать его точность.

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

А что под капотом?

Я специализируюсь на создании центров компетенции процессного управления, а не на программировании, поэтому с техническими наворотами не густо. Серверных ресурсов задействовать не планировалось, но пришлось для интеграции с некоторыми облачными сервисами хранения создать пару проксирующих запросы скриптов на php.
Интерфейс: jQuery, jQuery UI, globalize и modernizr. Из HTML5 используются localstorage, canvas и теги. Так как основные мои партнеры это «современные высокотехнологичные динамичные банки-лидеры», то приходится поддерживать старые версии IE. Для сборки и публикации сервиса, сайта и справочного руководства используется Apache Ant в Eclipse.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *