stringtranslate.com

Эмулятор

DOSBox эмулирует интерфейс командной строки DOS.
Приложение -эмуляция программируемого калькулятора HP-41C X 1983 года, работающего на Apple iOS . Кроме того, можно отобразить выходные данные исторического термопринтера этой линейки калькуляторов.

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

Многие принтеры , например, предназначены для эмуляции принтеров HP LaserJet , поскольку для принтеров HP написано очень много программного обеспечения. Если принтер стороннего производителя эмулирует принтер HP, любое программное обеспечение, написанное для реального принтера HP, также будет работать в режиме эмуляции принтера стороннего производителя и обеспечивать эквивалентную печать. По крайней мере, с 1990-х годов многие энтузиасты и любители видеоигр использовали эмуляторы, чтобы играть в классические аркадные игры 1980-х годов, используя оригинальный машинный код и данные игр 1980-х годов, которые интерпретируются системой текущей эпохи, а также для эмуляции старых видеоигр. консоли .

Аппаратный эмулятор — это эмулятор, который имеет форму аппаратного устройства. Примеры включают DOS-совместимую карту, установленную в некоторых компьютерах Macintosh 1990-х годов , таких как Centris 610 или Performa 630 , которая позволяла им запускать программы для персональных компьютеров (ПК) и аппаратные эмуляторы на основе программируемых вентильных матриц . Тезис Чёрча -Тьюринга подразумевает, что теоретически любую операционную среду можно эмулировать в любой другой среде, при условии, что ограничения памяти игнорируются. Однако на практике это может быть довольно сложно, особенно когда точное поведение эмулируемой системы не задокументировано и должно быть установлено путем обратного проектирования . Здесь также ничего не говорится об ограничениях по времени; если эмулятор не работает так быстро, как при использовании исходного оборудования, программное обеспечение внутри эмуляции может работать намного медленнее (возможно, вызывая прерывания таймера, которые изменяют поведение).

«Может ли Commodore 64 эмулировать MS-DOS ?» Да, [Commodore] 64 может эмулировать IBM PC [который использует MS-DOS] в том же смысле, в каком можно спасти озеро Мичиган с помощью чайной ложки .

—  Письмо для вычислений! и редакционный ответ, апрель 1988 г. [1]

Типы

Windows XP использует эмулятор Archimedes , который, в свою очередь, запускает эмулятор ZX Spectrum.
Тетрис работает на эмуляторе Game Boy Wzonka-Lad на AmigaOS , который сам работает на E-UAE в современной системе Fedora Linux.

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

Напротив, некоторые другие платформы очень мало использовали прямую аппаратную адресацию, например, эмулятор PlayStation 4. [2] В этих случаях может быть достаточно простого уровня совместимости . Это преобразует системные вызовы для внешней системы в системные вызовы для хост-системы, например, уровень совместимости Linux, используемый в *BSD для запуска собственного программного обеспечения Linux с закрытым исходным кодом во FreeBSD и NetBSD . [3] Например, хотя графический процессор Nintendo 64 был полностью программируемым, в большинстве игр использовалась одна из нескольких готовых программ, которые в основном были автономными и связывались с игрой через FIFO ; поэтому многие эмуляторы вообще не эмулируют графический процессор, а просто интерпретируют команды, полученные от ЦП, как это сделала бы исходная программа. Разработчики программного обеспечения для встраиваемых систем или игровых консолей часто разрабатывают свое программное обеспечение на особенно точных эмуляторах, называемых симуляторами, прежде чем опробовать его на реальном оборудовании. Это делается для того, чтобы программное обеспечение могло быть создано и протестировано до того, как окончательное оборудование появится в больших количествах, чтобы его можно было протестировать, не тратя время на копирование программы, подлежащей отладке, на низком уровне и без введения побочных эффектов отладчика . Во многих случаях симулятор фактически производится компанией-поставщиком аппаратного обеспечения, что теоретически повышает его точность. Эмуляторы математического сопроцессора позволяют программам, скомпилированным с математическими инструкциями, запускаться на машинах, на которых не установлен сопроцессор, но дополнительная работа, выполняемая ЦП, может замедлить работу системы. Если математический сопроцессор не установлен или не присутствует в ЦП, когда ЦП выполняет любую инструкцию сопроцессора, он выдает определенное прерывание (сопроцессор недоступен), вызывая процедуры математического эмулятора. Когда инструкция успешно эмулируется, программа продолжает выполнение.

Логические симуляторы

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

Функциональные эмуляторы

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

Эмуляторы игровых консолей

Эмуляторы игровых консолей — это программы, которые позволяют персональному компьютеру или игровой консоли эмулировать другую игровую консоль. Их чаще всего используют для игры в старые видеоигры 1980-2000-х годов на современных персональных компьютерах и более современных игровых консолях. Они также используются для перевода игр на другие языки, для модификации существующих игр, а также в процессе разработки домашних демо- версий DIY и создания новых игр для старых систем. Интернет способствовал распространению эмуляторов консолей, поскольку большинство из них, если не все, будут недоступны для продажи в торговых точках . Примерами эмуляторов консолей, выпущенных за последние несколько десятилетий, являются: RPCS3 , Dolphin , Cemu , PCSX2 , PPSSPP , ZSNES , Citra , ePSXe , Project64 , Visual Boy Advance , Nestopia и Yuzu .

Из-за своей популярности эмуляторы выдавали себя за вредоносные программы. Большинство этих эмуляторов предназначены для игровых консолей, таких как Xbox 360, Xbox One, Nintendo 3DS и т. д. Как правило, такие эмуляторы предъявляют в настоящее время невыполнимые требования, например, о возможности запуска игр для Xbox One и Xbox 360 в одной программе. [5]

Правовые вопросы

По мере развития компьютеров и глобальных компьютерных сетей , а разработчики эмуляторов становились все более квалифицированными в своей работе, промежуток времени между коммерческим выпуском консоли и ее успешной эмуляцией начал сокращаться. Консоли пятого поколения , такие как Nintendo 64 , PlayStation и портативные компьютеры шестого поколения , такие как Game Boy Advance , продемонстрировали значительный прогресс в области эмуляции во время их производства. Это привело к попыткам производителей консолей прекратить неофициальную эмуляцию, но последовательные неудачи, такие как Sega v. Accolade 977 F.2d 1510 (9-й округ 1992 г.), Sony Computer Entertainment, Inc. против Connectix Corporation 203 F.3d 596 ( 2000) и Sony Computer Entertainment America v. Bleem 214 F.3d 1022 (2000), [6] имели противоположный эффект. Согласно всем юридическим прецедентам, эмуляция легальна на территории США. Однако несанкционированное распространение кода, защищенного авторским правом, остается незаконным в соответствии как с национальным законодательством об авторском праве , так и с международным законодательством об авторском праве в соответствии с Бернской конвенцией . [7] [ нужен лучший источник ] Согласно законодательству США, получение дампа копии исходного BIOS машины является законным в соответствии с постановлением Lewis Galoob Toys, Inc. против Nintendo of America, Inc. , 964 F.2d 965 (9th Cir . 1992) как добросовестное использование , если пользователь получил законно приобретенную копию машины. Однако, чтобы смягчить это, некоторые эмуляторы для таких платформ, как Game Boy Advance, могут работать без файла BIOS, используя высокоуровневую эмуляцию для имитации подпрограмм BIOS с небольшими затратами на точность эмуляции. [ нужна цитата ]

Терминал

Эмуляторы терминала — это программы, которые обеспечивают современным компьютерам и устройствам интерактивный доступ к приложениям, работающим в операционных системах мэйнфреймов или других хост-системах, таких как HP-UX или OpenVMS . Терминалы, такие как IBM 3270 или VT100 и многие другие, больше не производятся как физические устройства. Вместо этого программное обеспечение, работающее в современных операционных системах, имитирует «немой» терминал и способно отображать графические и текстовые элементы главного приложения, отправлять нажатия клавиш и обрабатывать команды, используя соответствующий протокол терминала. Некоторые приложения эмуляции терминала включают Attachmate Reflection , IBM Personal Communications и Micro Focus Rumba.

Другие типы

Другие типы эмуляторов включают в себя:

Структура и организация

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

Шины часто не эмулируются либо из соображений производительности, либо из соображений простоты, а виртуальная периферия взаимодействует напрямую с ЦП или подсистемой памяти.

Подсистема памяти

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

В системе адресации с базовым ограничением, где память от адреса 0 до адреса ROMSIZE-1 является постоянной памятью, а остальная часть — ОЗУ, типичным будет что-то вроде следующих процедур:

void WriteMemory ( слово Адрес , слово Значение ) { слово RealAddress ; РеальныйАдрес = Адрес + БазовыйРегистр ; if (( RealAddress < LimitRegister ) && ( RealAddress > ROMSIZE )) { Memory [ RealAddress ] = Value ; } Еще { RaiseInterrupt ( INT_SEGFAULT ); } }                             
слово ReadMemory ( слово Адрес ) { слово RealAddress ; РеальныйАдрес = Адрес + БазовыйРегистр ; if ( RealAddress < LimitRegister ) { return Memory [ RealAddress ]; } Еще { RaiseInterrupt ( INT_SEGFAULT ); вернуть НУЛЬ ; } }                    

Симулятор процессора

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

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

void Execute ( void ) { if ( Interrupt != INT_NONE ) { SuperUser = TRUE ; WriteMemory ( ++ StackPointer , ProgramCounter ); ProgramCounter = Указатель Прерывания ; } switch ( ReadMemory ( ProgramCounter ++ )) { /* *  Здесь находится  обработка каждой допустимой инструкции *...  */ default : Interrupt = INT_ILLEGAL ; } }                         

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

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

Различные формы динамической перекомпиляции, включая популярный метод компилятора Just In Time (JIT) , пытаются обойти эти проблемы, ожидая, пока поток управления процессором перейдет в место, содержащее нетранслированный код, и только тогда («точно вовремя») транслирует блок кода в код хоста, который может быть выполнен. Переведенный код сохраняется в кэше кода [ сомнительно ] , а исходный код не теряется и не затрагивается; таким образом, даже сегменты данных могут быть (бессмысленно) преобразованы рекомпилятором, что приведет к пустой трате времени на перевод. Скорость может быть нежелательна, поскольку некоторые старые игры не были разработаны с учетом скорости более быстрых компьютеров. Игра, разработанная для ПК с частотой 30 МГц и таймером уровня в 300 игровых секунд, может дать игроку только 30 секунд на ПК с частотой 300 МГц. Другие программы, например некоторые программы DOS, могут даже не работать на более быстрых компьютерах. В частности, при эмуляции компьютеров, которые были «закрытыми», в которых изменения в ядре системы не были типичными, программное обеспечение может использовать методы, которые зависят от конкретных характеристик компьютера, на котором оно работало (например, скорости его процессора), и, таким образом, точного управления. Скорость эмуляции важна для правильной эмуляции таких приложений.

Ввод/вывод (В/В)

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

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

Приложения

В сохранении

Эмуляция – это одна из стратегий сохранения цифровых технологий и борьбы с их устареванием . Эмуляция направлена ​​на воссоздание исходной компьютерной среды, что может занять много времени и быть трудным для достижения, но ценно из-за способности поддерживать более тесную связь с подлинностью цифрового объекта, операционной системы или даже игровой платформы. [8] Эмуляция обращается к исходной аппаратной и программной среде цифрового объекта и воссоздает ее на текущей машине. [9] Эмулятор позволяет пользователю иметь доступ к любому приложению или операционной системе на текущей платформе , при этом программное обеспечение работает так же, как и в исходной среде. [10] Джеффри Ротенберг, один из первых сторонников эмуляции как стратегии сохранения цифровых данных , утверждает: «Идеальный подход должен обеспечить единое расширяемое , долгосрочное решение, которое можно разработать раз и навсегда и применять единообразно, автоматически и организованно синхронно». (например, при каждом цикле обновления) для всех типов документов и носителей». [11] Далее он заявляет, что это должно применяться не только к устаревшим системам, но также должно быть применимо и к будущим неизвестным системам. [12] Фактически, когда определенное приложение выпускается в новой версии, вместо того, чтобы решать проблемы совместимости и миграции для каждого цифрового объекта, созданного в предыдущей версии этого приложения , можно создать эмулятор для приложения , обеспечивающий доступ ко всем указанных цифровых объектов.

В новом медиа-искусстве

Из-за преимущественного использования цифровых форматов искусство новых медиа в значительной степени полагается на подражание как на стратегию сохранения. Такие художники, как Кори Аркангел, специализируются на возрождении устаревших технологий в своих произведениях искусства и признают важность децентрализованного и деинституционализированного процесса для сохранения цифровой культуры. Во многих случаях целью эмуляции в искусстве новых медиа является сохранение цифрового носителя, чтобы его можно было сохранять бесконечно и воспроизводить без ошибок, чтобы не было необходимости полагаться на устаревшее оборудование. Парадокс в том, что эмуляцию и эмулятор нужно заставить работать на будущих компьютерах. [13]

В будущем при проектировании систем

Методы эмуляции обычно используются при проектировании и разработке новых систем. Он упрощает процесс разработки, предоставляя возможность обнаруживать, воссоздавать и устранять недостатки проекта еще до того, как система будет фактически построена. [14] Это особенно полезно при проектировании многоядерных систем, где ошибки параллелизма может быть очень трудно обнаружить и исправить без контролируемой среды, обеспечиваемой виртуальным оборудованием. [15] Это также позволяет начать разработку программного обеспечения до того, как будет готово оборудование, [16] тем самым помогая проверить проектные решения и дать немного больше контроля.

Сравнение с моделированием

Слово «эмулятор» было придумано в 1963 году в IBM [17] во время разработки линейки продуктов NPL ( IBM System/360 ) с использованием «новой комбинации программного обеспечения , микрокода и аппаратного обеспечения ». [18] Они обнаружили, что моделирование с использованием дополнительных инструкций, реализованных в микрокоде и аппаратном обеспечении, вместо программного моделирования с использованием только стандартных инструкций, для выполнения программ, написанных для более ранних компьютеров IBM, значительно увеличивает скорость моделирования. Ранее IBM предоставила симуляторы , например, для 650 на 705 . [19] В дополнение к симуляторам, IBM имела функции совместимости на 709 и 7090 , [20] для чего она предоставила компьютеру IBM 709 программу для запуска устаревших программ, написанных для IBM 704 , на 709 , а затем на IBM 7090. Эта программа использовала инструкции, добавленные функцией совместимости [21] , для перехвата инструкций, требующих специальной обработки; все остальные инструкции 704 выполнялись на 7090 одинаково. Функция совместимости на 1410 [22] требовала только установки тумблера консоли, а не программы поддержки.

В 1963 году, когда для ускорения процесса моделирования впервые был использован микрокод, инженеры IBM придумали для описания этой концепции термин «эмулятор». В 2000-е годы в контексте программного обеспечения стало обычным использовать слово «эмулировать». Однако до 1980 года «эмуляция» относилась только к эмуляции с помощью аппаратного обеспечения или микрокода, тогда как «симуляция» относилась к чистой программной эмуляции. [23] Например, эмулятором является компьютер, специально созданный для запуска программ, разработанных для другой архитектуры. Напротив, симулятор может представлять собой программу, работающую на ПК, чтобы на ней можно было моделировать старые игры Atari. Пуристы продолжают настаивать на этом различии, но в настоящее время термин «эмуляция» часто означает полную имитацию машины, выполняющей двоичный код, тогда как «симуляция» часто относится к компьютерному моделированию , где компьютерная программа используется для моделирования абстрактной модели. Компьютерное моделирование используется практически во всех научных и инженерных областях, и информатика не является исключением: в нескольких проектах моделируются абстрактные модели компьютерных систем, например, сетевое моделирование , которое практически и семантически отличается от сетевой эмуляции. [24]

Сравнение с аппаратной виртуализацией

Аппаратная виртуализация — это виртуализация компьютеров как полных аппаратных платформ, определенных логических абстракций их компонентов или только функций, необходимых для запуска различных операционных систем . Виртуализация скрывает от пользователей физические характеристики вычислительной платформы, представляя вместо этого абстрактную вычислительную платформу. [25] [26] Первоначально программное обеспечение, управляющее виртуализацией, называлось «программой управления», но со временем предпочтение отдавалось терминам « гипервизор » или «монитор виртуальной машины». [27] Каждый гипервизор может управлять несколькими виртуальными машинами или запускать их .

Смотрите также

Рекомендации

  1. ^ Уорик, Майк (апрель 1988 г.). «Эмуляция MS-DOS для 64-х». Вычислите! . п. 43 . Проверено 10 ноября 2013 г.
  2. ^ ГайдШторм. «Эмуляторы PlayStation 4» . Проверено 4 августа 2019 г.
  3. ^ Эмуляция Linux удалена из OpenBSD в версии 6.0 https://www.openbsd.org/60.html.
  4. ^ Автоматизация электронного проектирования: синтез, проверка и тестирование. Лаунг-Тернг Ван, Яо-Вэнь Чанг, Кван-Тин Ченг. Амстердам: Морган Кауфманн/Эльзевир. 2009. ISBN 978-0-08-092200-3. ОКЛК  433173319.{{cite book}}: CS1 maint: другие ( ссылка )
  5. ^ «Имитация эмуляции». Лаборатория Малваребайтс . 17 октября 2014 года . Проверено 30 мая 2016 г.
  6. ^ см. Midway Manufacturing Co. против Artic International, Inc. , 574 F.Supp. 999, приложено, 704 F.2d 1009 (9-й округ 1982 г.) (считая, что ПЗУ компьютера Pac Man является достаточной фиксацией для целей закона об авторском праве, даже если игра меняется каждый раз, когда в нее играют.) и Статья 2 Бернского закона Соглашение
  7. ^ «Что такое эмуляция?». Конинклийке Библиотека . Архивировано из оригинала 13 сентября 2015 г. Проверено 11 декабря 2007 г.
  8. ^ ван дер Хувен, Джеффри, Брэм Ломан и Ремко Вердегем. «Эмуляция цифрового сохранения на практике: результаты». Международный журнал цифрового курирования 2.2 (2007): 123–132.
  9. ^ Муира, Грегори. «Раздвигая границы политики традиционного наследия: сохранение долгосрочного доступа к мультимедийному контенту». Журнал ИФЛА 33 (2007): 323-326.
  10. ^ Ротенберг, Джеффри (1998). «Критерии идеального решения». Как избежать технологического зыбучего песка: найти жизнеспособную техническую основу для сохранения цифровой информации». Совет по библиотечным и информационным ресурсам . Вашингтон . Проверено 8 марта 2008 г.
  11. ^ Ротенберг, Джеффри. «Решение для эмуляции». Как избежать технологического зыбучего песка: найти жизнеспособную техническую основу для сохранения цифровой информации. Вашингтон, округ Колумбия: Совет по библиотечным и информационным ресурсам, 1998. Совет по библиотечным и информационным ресурсам. 2008. 28 марта 2008 г. http://www.clir.org/pubs/reports/rothenberg/contents.html.
  12. ^ «Отголоски искусства: эмуляция как стратегия сохранения». Архивировано из оригинала 27 октября 2007 г. Проверено 11 декабря 2007 г.
  13. ^ Питер Магнуссон (2004). «Полное системное моделирование: недостающее звено разработки программного обеспечения».
  14. ^ «Отладка и полное моделирование системы».
  15. ^ Ваня Жолобофф (2009). «Полное системное моделирование встраиваемых систем» (PDF) . Архивировано из оригинала (PDF) 9 февраля 2014 г. Проверено 22 апреля 2012 г.
  16. ^ Пью, Эмерсон В. (1995). Создание IBM: формирование отрасли и ее технологий . Массачусетский технологический институт. п. 274. ИСБН 0-262-16147-8.
  17. ^ Пью, Эмерсон В.; и другие. (1991). Системы IBM 360 и Early 370 . Массачусетский технологический институт. ISBN 0-262-16123-0.страницы 160-161
  18. ^ Моделирование IBM 650 на IBM 705
  19. ^ «Архивы IBM: Система обработки данных 7090 (продолжение)» . www-03.ibm.com . 23 января 2003 г.
  20. ^ «Операции по совместимости системы». Справочное руководство по системе обработки данных IBM 7090 (PDF) . Март 1962 г., стр. 65–66. А22-6528-4.
  21. ^ «Операции по совместимости системы». Принципы работы IBM 1410 (PDF) . Март 1962 г., стр. 56–57, 98–100. А22-0526-3.
  22. ^ Такер, SG (1965). «Эмуляция больших систем». Коммуникации АКМ . 8 (12): 753–61. дои : 10.1145/365691.365931 . S2CID  15375675.
  23. ^ «Сетевое моделирование или эмуляция?». Сетевой мир . 22 сентября 2017 года . Проверено 22 сентября 2017 г.
  24. ^ Тюрбан, Э; Кинг, Д.; Ли, Дж.; Виланд, Д. (2008). «19». Электронная коммерция с точки зрения менеджмента (PDF) (5-е изд.). Прентис-Холл. п. 27.
  25. ^ «Виртуализация в образовании» (PDF) . ИБМ . Октябрь 2007 года . Проверено 6 июля 2010 г.
  26. ^ Кризи, Р.Дж. (1981). «Происхождение системы разделения времени VM/370» (PDF) . ИБМ . Проверено 26 февраля 2013 г.

Внешние ссылки