stringtranslate.com

Ошибка совместимости

Компьютерное оборудование или программное обеспечение считается совместимым с ошибками, если оно точно повторяет нежелательную функцию [1] предыдущей версии. Фраза находится в файле жаргона . [2]

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

Примеры

ДОС

Примеры можно найти в MS-DOS / PC DOS : Когда MS-DOS/PC DOS 3.1 и выше (включая Windows 9x ) и OS/2 обнаруживают определенные метки FAT OEM , они не доверяют некоторым значениям блока параметров BIOS (BPB) и пересчитать их на основе других параметров геометрии диска, чтобы обойти несколько ошибок расчета на единицу , вызванных некоторыми программами форматирования в более ранних выпусках этих систем. [4] [5] [6] [7] Хотя такое недокументированное поведение позволяет им справляться именно с этими неправильно отформатированными томами, оно ограничивает гибкость геометрии дисков, с которой они могут работать в целом, и может привести к тому, что они будут уничтожать созданные правильно отформатированные тома. третьими лицами, если они отклоняются от значений по умолчанию, используемых Microsoft и IBM . [6] [7] Когда MS-DOS/PC DOS 5.0 и выше работают на процессорах с процессором 286 или выше, резидентный исполняемый загрузчик содержит код, специально разработанный для обнаружения и исправления некоторых широко распространенных приложений и загрузчиков-загрузчиков (например, программ, связанных со старыми версиями). расширений DOS от Microsoft EXEPACK или Rational Systems 386), исправляя образ загруженной программы перед ее выполнением. [8] При определенных условиях базовая DOS также исправляет Windows (WINA20.386). [9]

В ходе разработки DR-DOS также пришлось модифицировать, чтобы не только эмулировать многие недокументированные особенности и нежелательные свойства MS-DOS и PC DOS (например, необходимость использования некоторых вводящих в заблуждение имен файлов, таких как IBMBIO.COM , IBMDOS.COM или COUNTRY). .SYS для файлов, которые не соответствуют спецификациям исполняемых файлов в DOS, [10] [11] [12] [nb 1] или необходимости введения внутренней структуры текущего каталога (CDS) с ограниченной длиной пути к каталогу [9] [13] ] [14] ), но также и реальные ошибки в ядре и некоторых драйверах, необходимые для того, чтобы некоторые другие драйверы и приложения работали в DR-DOS, когда они тестировались только на определенных версиях MS-DOS. [9] [6] [8] [15] [16] [17]

Окна

Другим примером является Windows , которая традиционно эмулировала многие старые системные ошибки, чтобы обеспечить запуск старых низкоуровневых программ. В результате Wine , который позволяет запускать множество приложений Windows на других платформах, также должен поддерживать совместимость с Windows. [18]

Когда Microsoft прекратила поддержку 16-битного кода в Windows и больше не включала NTVDM в 64-битные версии операционной системы, исполняемый загрузчик был изменен, чтобы распознавать некоторые конкретные 16-битные программы запуска и установки и заменять их на месте. Fly с эквивалентными заглушками кода, работающими на 64-разрядных процессорах. [19] [20]

Другой

Во время разработки продукта, совместимого с IBM PC , инженеры Compaq обнаружили, что Microsoft Flight Simulator не запускается из-за того, что Брюс Артвик из subLOGIC назвал «ошибкой в ​​одном из чипов Intel », что вынудило их сделать свой компьютер совместимым с ошибками IBM-ПК. [21] Другой пример аппаратного обеспечения можно найти в конструкции адресной линии IBM Personal Computer/AT A20 для эмуляции поведения старых процессоров. [8] [15]

В Microsoft Excel всегда была преднамеренная ошибка високосного года , которая ошибочно считала 29 февраля 1900 года фактической датой, чтобы обеспечить обратную совместимость с Lotus 1-2-3 . [22]

Хайрам Райт, инженер Google , рассказывает об этой проблеме, которую он наблюдал воочию, работая над основными библиотеками C++. Именно Титус Уинтерс, также инженер Google, популяризировал эту концепцию в более широком масштабе как « Закон Хайрама ». [23]

Заголовок HTTP -реферера представляет собой неправильное написание слова реферер . Это была ошибка в исходном веб-предложении, и она была сохранена для совместимости.

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

Примечания

  1. ^ Файлы IBMBIO.COM и IBMDOS.COM представляют собой специальные двоичные образы, содержащие исполняемый код . Случайная попытка запустить их из командной строки, как если бы это были обычные программы в стиле COM, привела бы к сбою системы. По этой причине эти файлы имеют атрибут «скрытый» , установленный в MS-DOS / PC DOS . Этого можно было бы избежать, выбрав другие расширения файлов (например, DRBIOS.SYS и DRBDOS.SYS ), но этого нельзя было сделать позже, чтобы сохранить совместимость с различными инструментами, ожидающими именно эти имена файлов. Чтобы исключить риск сбоев, эти файлы были преобразованы в толстые двоичные файлы в DR-DOS 7.02 и выше, теперь включая крошечные заглушки для корректного выхода при ненадлежащем вызове. [а] [б]

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

  1. ^ «Совместимость ошибок за ошибками» . catb.org . То же, что и совместимость с ошибками, но с дополнительным следствием того, что для обеспечения репликации каждой (известной) ошибки было затрачено много утомительных усилий.
  2. ^ "Совместимость с ошибками - www.jargon.net" . Проверено 3 февраля 2010 г.
  3. ^ Понтин, Джейсон (26 декабря 1994 г.). «Третья задержка Windows 95; нуждается в доработке». Инфомир . 16 (52). InfoWorld Media Group, Inc.: 18.
  4. ^ Уильямс, Дэйв (12 января 1992 г.). Технический справочник программиста для MSDOS и IBM PC. ISBN 1-878830-02-3. ДОСРЕФ . Проверено 8 января 2012 г.(Примечание. Автор упоминает, что DOS 4.0 проверяет OEM-маркировку, но отрицает, что DOS 3.2 также проверяет ее (хотя это так).)
  5. ^ Басс, Уолли (14 февраля 1994 г.). "Размер кластера". Группа новостей : comp.os.msdos.programmer. Архивировано из оригинала 9 сентября 2017 г. Проверено 14 октября 2006 г.
  6. ^ abc Пол, Матиас Р. (20 февраля 2002 г.). «Нужна DOS 6.22 (не OEM)». alt.msdos.programmer . Архивировано из оригинала 9 сентября 2017 г. Проверено 14 октября 2006 г.
  7. ^ аб Пол, Матиас Р. (25 августа 2004 г.). «НОВОЛТРК.РЕГ». www.drdos.org . Архивировано из оригинала 4 марта 2016 г. Проверено 17 декабря 2011 г.[1]
  8. ^ abc Пол, Матиас Р. (07 октября 2002 г.). «Re: Проблемы, связанные с masm.com (PSP)» . alt.lang.asm . Архивировано из оригинала 3 сентября 2017 г. Проверено 3 сентября 2017 г.
  9. ^ abc Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михелс, Раймонд Дж.; Кайл, Джим (1994) [ноябрь 1993 г.]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено и включает MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . ISBN 0-201-63287-Х.(xviii+856+vi страниц, 3,5-дюймовая дискета) Исправления: [2][3]
  10. ^ Пол, Матиас Р. (2 октября 1997 г.). «Обновление Caldera OpenDOS 7.01/7.02 Alpha 3 IBMBIO.COM README.TXT». Архивировано из оригинала 4 октября 2003 г. Проверено 29 марта 2009 г.[4]
  11. ^ DR-DOS 7.03 WHATSNEW.TXT — изменения с DR-DOS 7.02 на DR-DOS 7.03. Кальдера, Инк. 24 декабря 1998 г. Архивировано из оригинала 08 апреля 2019 г. Проверено 08 апреля 2019 г.
  12. ^ Пол, Матиас Р. (10 июня 2001 г.) [1995]. «Формат файла DOS COUNTRY.SYS» (файл COUNTRY.LST) (изд. 1.44). Архивировано из оригинала 20 апреля 2016 г. Проверено 20 августа 2016 г.
  13. ^ Пол, Матиас Р. (1997-06-07) [апрель 1994 г.]. «Глава 1.3.xi: Überlange Pfade». NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undocumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP (на немецком языке). Архивировано из оригинала 07.11.2016 . Проверено 7 ноября 2016 г.
  14. ^ Пол, Матиас Р. (30 июля 1997 г.) [1 мая 1994 г.]. NWDOS-TIPs — советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей. MPDOSTIP (на немецком языке) (3-е изд.). Архивировано из оригинала 10 сентября 2017 г. Проверено 6 августа 2014 г.(Примечание. NWDOSTIP.TXT - это всеобъемлющая работа по Novell DOS 7 и OpenDOS 7.01, включая описание многих недокументированных функций и внутренних устройств. Это часть еще более обширной коллекции автора, MPDOSTIP.ZIPкоторая поддерживалась до 2001 года и в то время распространялась на многих сайтах. Предоставленная ссылка указывает на более старую версию файла, преобразованную в HTML NWDOSTIP.TXT.) [5]
  15. ^ аб Пол, Матиас Р. (2 февраля 2002 г.). «Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA)» [Динамическая загрузка драйверов (перемещение внутрисегментного смещения для загрузки TSR в HMA)]. de.comp.os.msdos (на немецком языке). Архивировано из оригинала 9 сентября 2017 г. Проверено 2 июля 2017 г.(Примечание. Дается всесторонний обзор истории и «природы» HMA , а также неочевидных конструктивных ограничений, которые необходимо учитывать при разработке расширений резидентной системы для загрузки в HMA.)
  16. ^ Пол, Матиас Р. (1 апреля 2002 г.). «Исправление расширения CauseWay DOS под DR-DOS 7.0x EMM386.EXE». Группа новостей : comp.os.msdos.programmer. Архивировано из оригинала 19 сентября 2018 г. Проверено 19 сентября 2018 г.
  17. ^ Пол, Матиас Р. (18 августа 2001 г.). «Re: [fd-dev] О GRAFTABBL и DISPLAY.SYS (было: Изменение кодовых страниц в FreeDOS)». freedos-dev . Архивировано из оригинала 4 сентября 2017 г. Проверено 4 сентября 2017 г.
  18. ^ «WineFeatures — Официальная винная вики» . Проверено 3 февраля 2010 г.
  19. ^ «Установка приложения в 64-битных системах». Майкрософт . 2018-05-31. Архивировано из оригинала 22 июля 2021 г. Проверено 26 мая 2016 г.
  20. ^ «64-битные версии Windows не поддерживают 16-битные компоненты, 16-битные процессы или 16-битные приложения». 2.0. Майкрософт . 08 сентября 2020 г. [11 сентября 2011 г.]. КБ896458. Архивировано из оригинала 12 сентября 2021 г. Проверено 26 мая 2016 г.
  21. ^ Якал, Кэти (январь 1985 г.). «Брюс Артвик / Разработчик авиасимулятора II». Бюллетень Compute ! п. 32 . Проверено 6 июля 2014 г.
  22. ^ Excel ошибочно предполагает, что 1900 год — високосный. Проверено 1 мая 2019 г.
  23. ^ «Разработка программного обеспечения в Google [Книга]» . www.oreilly.com . Проверено 31 мая 2022 г.