3

Это может быть глупый и странный вопрос, но я действительно не могу уснуть, пока не найду ответ. Как компьютер знает, как отображать текст и графический интерфейс на экране? Если я не ошибаюсь, процесс загрузки компьютеров x86 выглядит следующим образом:

  • BIOS запускает процессор и остальное оборудование и проверяет, все ли работает
  • процессор выполняет код с первых 512? байт загрузочного раздела и на экране отображается меню загрузчика
  • выбранное ядро выполнено
  • и т.п.

У меня вопрос: если до запуска ядра нет операционной системы, как компьютер узнает, как отображать текст на экране? BIOS и загрузчик могут отображать текст и базовый графический интерфейс. Как они это делают? BIOS/ загрузчик сообщает CPU(GPU?) что он должен отображать синий пиксель, скажем, в позиции (0,0), затем белый пиксель в (1,0) и т. д.?

Моя вторая теория заключается в том, что в BIOS есть драйвер основного дисплея, который имеет своего рода API для печати на экране. Есть ли какая-нибудь функция print(), доступная в драйверах дисплея?

Из того, что я видел, функции сборки для печати текста специфичны для каждой операционной системы, поэтому это не может быть доступно напрямую через набор команд ЦП.

Вторая часть моего вопроса: как работают окружения рабочего стола, такие как KDE или GNOME? Допустим, я хочу создать совершенно новую рабочую среду для Linux. С чего мне начать? В C/C++ или любом другом языке высокого уровня нет функций для отображения n-цветного прикселя в позиции (x, y). На каком языке написана программа, отображающая декстоп? Создает ли рабочий стол пиксель за пикселем? Как работают библиотеки типа GTK или Qt? Я знаю, что могу отобразить окно только с несколькими функциями, но как эти функции действительно работают?

Извините, если мои вопросы не ясны. Английский не мой родной язык.

2 ответа2

1

По сути, на материнской плате есть микросхема ПЗУ (только для чтения), которая сообщает, как отображать любой графический интерфейс, который ей необходим. Вы думаете, что у него нет программного обеспечения, но оно предустановлено производителем. На самом деле, вы бы скорее назвали эту "прошивку", так как это программное обеспечение, жестко привязанное к чипу.

Что касается графических окружений рабочего стола, в них нет ничего особенного. Они рисуют на экране так же, как и любая другая программа. Все, что вам действительно нужно нарисовать на экране, это узнать адрес любого чипа, который у вас есть, который отвечает за обработку графики (обычно это GPU или IGPU/APU). Когда обычные программы делают это, я полагаю, что они запрашивают эту информацию из операционной системы, поэтому, если бы вы написали свою собственную графическую среду рабочего стола, вам пришлось бы выяснить, по какому адресу отправлять ваши данные. Адрес, который вам нужен, должен быть предоставлен водителями для любого G/IG/APU, который у вас есть.

0

В двух основных частях:

  1. После загрузки MBR его код загружает второй этап загрузочного кода, называемый Windows Boot Manager или GRUB в Linux. Этот менеджер загрузки / загрузчик имеет текстовые и графические функции, реализованные в коде, или использует прямой доступ BIOS для вывода текста.

  2. После загрузки ОС (Windows, Linux и т.д.) С использованием любого языка программирования, например C, C++, Java, Basic, вы получаете доступ к функциям, реализованным в ядре и / или библиотеках, которые позволяют писать или рисовать на экране. Каждый язык программирования сегодня имеет некоторую интегрированную среду разработки (IDE), которая значительно упрощает написание пользовательского кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .