В наши дни многозадачность является чем-то само собой разумеющимся. Практически каждый компьютер, которым мы пользуемся, от настольных компьютеров до телефонов, способен работать в режиме многозадачности. Может показаться глупым внедрять многозадачность на машинах с низкой спецификацией, которые использовались много десятилетий назад, учитывая их ограниченные ресурсы, но это возможно, как демонстрирует [bchiha] на машине на базе Z80. Компания [bchiha] добилась преимущественной многозадачности на компьютере TEC-1G Z80, который представляет собой современное переосмысление классической говорящей электроники TEC-1 1980-х годов. Тестовый код позволяет выполнять до восьми отдельных задач одновременно. Переключение задач выполняется с помощью прерываний, срабатывающих примерно с частотой 50 Гц. Когда срабатывает прерывание, регистры процессора переносятся в стек этой задачи, а стек следующей задачи заменяется указателем стека, чтобы разрешить выполнение новой задачи. Конечно, есть накладные расходы, поскольку [bchiha] отмечает, что сама процедура замены задач занимает около 430 тактов для выполнения между задачами.
Многозадачность не сразу появилась на домашних компьютерах по уважительной причине — она не очень полезна, если у вас нет компьютера с достаточной мощностью, чтобы выполнять несколько задач одновременно. Хотя машина Z80, подобная этой, может работать в многозадачном режиме, вам лучше надеяться, что каждая задача будет довольно маленькой, чтобы выполнение каждой отдельной задачи не занимало много времени.
[bchiha] разместила простой код для многозадачности на Github для любопытных. Ранее мы также демонстрировали многозадачность на других нетрадиционных платформах, таких как Arduino Uno. Видео после перерыва.
[Спасибо Стивену Уолтерсу за совет!]