Это может быть глупый и странный вопрос, но я действительно не могу спать, пока я не найду ответ. Как компьютер умеет отображать текст и графический интерфейс на экране?
Если я не ошибаюсь, процесс загрузки x86 компьютеров выглядит так:
- BIOS запускает процессор и остальное оборудование, и он проверяет, если все работает
- процессор выполняет код с первых 512? байты загрузочного раздела и экран отображает загрузчик menu
- выбранное ядро выполняется
- etc.
мой вопрос: если до запуска ядра нет операционной системы, как компьютер знает, как отобразить текст на экране? BIOS и загрузчика может отображать какой-либо текст и базовый GUI. Каким образом они это делают? Сообщает ли BIOS / загрузчик ЦП (GPU?) что он должен отображать синий пиксель на, скажем, позиции (0,0), затем белый пиксель на (1,0) и т. д.?
мой второй теория заключается в том, что BIOS имеет драйвер базового дисплея, который имеет какой-то API для печати на экране. Есть ли какая-то функция print (), доступная из драйверов дисплея?
из того, что я видел, функции сборки для печати текста специфичны для каждой операционной системы, поэтому она не может быть доступна непосредственно через набор инструкций процессора.
Часть 2 моего вопроса: как работают среды рабочего стола, такие как KDE или GNOME? Допустим, я хочу создать абсолютно новая среда рабочего стола для Linux. С чего мне начать? Нет функции в C/C++ или любом другом языке высокого уровня для отображения N цвет prixel на позиции (x, y). На каком языке написана программа, отображающая dekstop? Создает ли он рабочий стол пиксель за пикселем?
Как работают библиотеки, такие как GTK или Qt? Я знаю, что могу отобразить окно только с несколькими функциями, но как эти функции действительно работают?
Извините, если мои вопросы не понятны. Английский - не мой родной язык.