К типичным ошибкам относятся:
u обход или повторение секций инициализации;
u ошибочное изменение регистров с адресами или счетчиками;
u потеря промежуточных или окончательных результатов.
Обычным источником ошибок, которые здесь не рассматриваются, является конфликт между программой пользователя и системными программами.
Простым примером такого конфликта является попытка сохранять данные программы пользователя в ячейках памяти системной программы. В этом случае всякий раз, когда выполняется системная программа, изменяются данные, которые нужны для программы пользователя.
Более сложные источники конфликтов связаны с системой прерываний, портами ввода-вывода, стеком и флагами.
Системные программы в конечном счете должны эксплуатировать те же самые ресурсы, что и программы пользователя.
При этом обычно в системных программах предусматривается сохранение и восстановление программной среды, в которой работают пользовательские программы, но это часто приводит к трудноуловимым или неожиданным последствиям.
Сделать такую операционную систему, которая была бы совершенно прозрачной для пользователя — это задача, сравнимая с выработкой правил и законов или сводов о налогах, которые не имели бы лазеек или побочных эффектов.