Как написать исконно русскую операционную систему. Реальный режим, защищённый режим и Triple Fault

Какую архитектуру выбрать для ОС? Что такое Triple Fault и почему эта ошибка может хорошо досадить программисту ОС? Интересно? Читай статью.

Примечание: эта статья состоит в цикле «Как написать исконно русскую операционную систему». Предыдущая статья из цикла – «Как написать исконно русскую операционную систему, или почему внедрить кириллицу – уже беда».

Халё-малё (привет-привет), мой дорогой читатель!

Как тебе известно (а может, ещё и не известно), я почувствовал страшную несправедливость из-за того, что американцы манипулируют нами со своими Windows’ами, а все, казалось бы, русские ОС являются наспех переделанными Linux’ами. И в конце концов…

Билл Гейтс, вызов принят!

…И в конце концов решил написать свою, исконно русскую ОС. Кириллицу (русские буквы) я уже внедрил. Теперь пришла пора немного рассказать про архитектуру…

Реальный режим

Реальный режим – это режим, в котором система находится по умолчанию. Этот режим уже достаточно древний, но весь процесс жизнедеятельности ОС начинается именно с него. Он обеспечивает полную (и устаревшую) 16-битность. Сейчас мало какие системы используют реальный режим полностью, а про защищённый и длинный режимы знать не хотят. Так поступают разве что какие-нибудь DOS’ы. В реальном режиме нет многозадачности, коды работают как хотят (в пределах разумного, конечно), а обратиться к памяти выше 1 мегабайта нельзя. Поэтому современные ОС всегда хотят выйти из этого режима как можно скорее.

Защищённый режим

Защищённый режим – это уже другое дело. Он в первую очередь обеспечивает 32-битность и позволяет обращаться к памяти гораздо выше. Также он обеспечивает защиту кода от несанкционированных действий (на то он и защищённый) с помощью специальных колец защиты. В результате код можно поделить на ядро (может всё) и на пользовательские программы (могут не всё). Защищённый режим также годится на многозадачность. Вот только прерывания BIOS’а в нём недоступны, поэтому он мне не симпатизирует. Также для перехода в него необходимо составить специальную таблицу дескрипторов – GDT.

Triple Fault

Triple Fault (тройная ошибка) – это ещё одна причина, по которой я не пишу свою ОС с упором на защищённый режим. Её может инициировать любая другая ошибка (неверная инструкция, недоступная память, неправильно составленный GDT). Если эта тройная ошибка возникает, то процессор входит в цикл – например, эмулятор QEMU бесконечно перезагружается, а в эмуляторе VirtualBox может прийти великий гуру по медитации (Guru Meditation) и спокойно объяснить, что как-то мы не так всё делаем…

Короче говоря, если ты, мой дорогой читатель, пишешь свою ОС и не хочешь морочить голову сегментами, их таблицами, недоступностью прерываний BIOS и всем остальным, то оставайся в реальном режиме и ложи все задачи на BIOS – от обращений к диску до клавиатуры и экрана. Ещё не забыл, как это делается?

Итоги

Написание своей ОС – это великая и порой очень сложная наука: из-за самодовольных китайцев, не желающих внедрять кириллицу в дисплеи, должны страдать ОС, а переход в защищённый режим может обернуться тройной ошибкой.

Кстати, кроме защищённого режима, есть ещё и длинный режим, обеспечивающий 64-битность, а кроме GDT, есть ещё и IDT. Но это уже совсем другая история…

11