Настройка и работа в Linux
adb5321d

Немного теории


То, что относится к общим принципам загрузки, описано в статье "Пишем игрушечную ОС" (раздел 1.2 "Наша роль."), поэтому повторяться не имеет смысла. На чём следует остановить своё внимание, так это на списке доступных в этот момент прерываний[6] . Прерывания (interrupts) являются одним из краеугольных камней функционирования ПК. Это набор подпрограмм, "прошитых" в BIOS'е и отвечающих за работу переферии. Например, прерывание 0x13 реализует дисковые операции, 0x10 работу с видеоадаптером, 0x16 работу с клавиатурой (пользовательский уровень, т.к. существует ещё прерывание 0x9), 0x8 -- обработка таймера (автоматически вызывается каждые 1/18.2 секунды) и т.д. При этом физически эти подпрограммы расположены не только на материнской плате: например, та часть BIOS'а, что отвечает за работу с видео находится на видеокарте. Вызов нужной функции прерывания осуществляется при помощи указания определённых значений в регистрах процессора. Например, поместив в регистр AH значение 0x0 и вызвав прерывание работы с клавиатурой (int 0x16), мы заставим компьютер ожидать нажатия любой клавиши. За исключением Shift, Ctrl и подобных им -- эти обрабатываются иначе.

Итак, прерывания. В отличие от примера в статье "Пишем игрушечную ОС", мы не будем писать напрямую в видеопамять, -- этим займётся соответствующая функция прерывания 0x10. Кроме этого, мы воспользуемся ещё двумя прерываниями: одно будет обрабатывать ввод с клавиатуры (0x16), другое -- выполнять дисковые операции (0x13).



Содержание раздела