Pull to refresh
200.81
ua-hosting.company
Хостинг-провайдер: серверы в NL до 300 Гбит/с

Деление на ноль или наглядный пример почему нужны внутренние прерывания в ядре

Reading time 2 min
Views 13K
Яркий пример того, для чего в ядре каждого современного устройства, начиная от калькулятора до сверх мощных серверов и ПК, есть прерывания на случай абсурдных команд.



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

Что Вы получите при попытке разделить, например, число 20 на 0 используя современный ПК или телефон? Для тех кто не знает — ниже приведены скриншоты с примером.





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

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



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



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

  1. 20 — 4 = 16
  2. 16 — 4 = 12
  3. 12 — 4 = 8
  4. 8 — 4 = 4
  5. 4 — 4 = 0


Пять шагов, чтобы добраться до нуля, так что ответ пять. Все просто!

Конечно, если Вы используете тот же процесс при делении на ноль, он становится цикличным, потому что последовательность для 20 при делении на ноль:

  1. 20 — 0 = 20
  2. 20 — 0 = 20
  3. 20 — 0 = 20
  4. 20 — 0 = 20
  5. 20 — 0 = 20


И так далее, до самого конца времен.

Без подробного рассмотрения «внутренностей» Facit ESA-01 трудно сказать, что происходит внутри него в данной ситуации. Но Вы можете быть уверены, что основной причиной для бесконечной обработки является попытка машины выполнить бесконечную последовательность команд одну за другой. И так по кругу.

Компьютер без запрограммированного прерывания всегда будет делать то, что Вы прикажете, даже если этот процесс займет целую вечность.
Tags:
Hubs:
+2
Comments 27
Comments Comments 27

Articles

Information

Website
ua-hosting.company
Registered
Founded
Employees
11–30 employees
Location
Латвия
Representative
HostingManager