Яркий пример того, для чего в ядре каждого современного устройства, начиная от калькулятора до сверх мощных серверов и ПК, есть прерывания на случай абсурдных команд.
Деление на ноль — это абсурдный процесс, который Вы не можете и не должны выполнять. Простой, но все еще не совершенный ответ объясняет, что если Вы делите что-то на нуль, процесс приближается к бесконечности.
Что Вы получите при попытке разделить, например, число 20 на 0 используя современный ПК или телефон? Для тех кто не знает — ниже приведены скриншоты с примером.
На вопрос, почему мы получаем такой результат, существует простой ответ. В любой ОС присутствует инструкция, уберегающая от подобных проблем. Также и в самом ядре устройства есть внутренние прерывания, как раз на случай такого рода команд. Но думаю, многим будет интересно узнать, что случится, если убрать подобные прерывания?
Попробовав произвести деление на 0 на механическом калькуляторе, Вы увидите ужасную агонию в попытках решить абсурдную математическую задачу. Как показано на видео, где «сертифицированный» математик пытается разделиться на ноль на механическом калькуляторе, названном Facit ESA-01.
Несомненно — забавно, но это также небольшая иллюстрация того, как работают механические компьютеры. Машины используют серию зубчатых колес и шестеренок разных размеров, которые вращаются вместе в то время как дифференциальное отношение между механизмами помогает отслеживать фактическую математику. Это видео 1953 года очень подробно демонстрирует главный принцип механического калькулятора.
Когда механический калькулятор работает, он использует подобный механический процесс. Деление на любое число — это последовательное вычитание. Как пример, давайте разделим двадцать на четыре:
- 20 — 4 = 16
- 16 — 4 = 12
- 12 — 4 = 8
- 8 — 4 = 4
- 4- 4 = 0
Пять шагов, чтобы добраться до нуля, так что ответ пять. Все просто!
Конечно, если Вы используете тот же процесс при делении на ноль, он становится цикличным, потому что последовательность для 20 при делении на ноль:
- 20 — 0 = 20
- 20 — 0 = 20
- 20 — 0 = 20
- 20 — 0 = 20
- 20 — 0 = 20
И так далее, до самого конца времен.
Без подробного рассмотрения «внутренностей» Facit ESA-01 трудно сказать, что происходит внутри него в данной ситуации. Но Вы можете быть уверены, что основной причиной для бесконечной обработки является попытка машины выполнить бесконечную последовательность команд одну за другой. И так по кругу.
Компьютер без запрограммированного прерывания всегда будет делать то, что Вы прикажете, даже если этот процесс займет целую вечность.
ссылка на оригинал статьи https://geektimes.ru/post/273576/
Добавить комментарий