Кто обучает ЦП «азбуке»?

Простите мой идиотский вопрос, но я не могу найти ни одного удовлетворительного ответа в Интернете. Я имею в виду, что мы можем видеть символ «X», отображаемый на экране прямо со стартового экрана ПК. Но как компьютер узнает, что битовые комбинации переведены в «x»? Кто дает такие определения? Это BIOS, ОС, процессор, драйвер дисплея или приложения?


person royalfinest    schedule 02.11.2014    source источник
comment
Почему ты спрашиваешь? Зачем? На какой ОС?   -  person Basile Starynkevitch    schedule 02.11.2014
comment
Пожалуйста, отредактируйте свой вопрос, чтобы улучшить его. Ваш вопрос не ясен. Какое программное обеспечение вы хотите закодировать (ядро ОС, графическое приложение, затем для какой операционной системы)?   -  person Basile Starynkevitch    schedule 02.11.2014
comment
Я спрашиваю это, потому что я запутался, независимо от ОС. Я имею в виду, что компьютер знает только биты и байты. Они не понимают таких вещей, как «А» или что-то в этом роде. Поэтому, когда дело доходит до таких вещей, как ASCII или UTF, я совершенно не понимаю, как и кем они были переведены.   -  person royalfinest    schedule 02.11.2014
comment
На практике вам должно быть все равно. Вы будете кодировать для данной ОС, и эта ОС предоставит вам API для рисования текста где-нибудь.   -  person Basile Starynkevitch    schedule 02.11.2014
comment
Но есть Загрузка операционной системы... во время запуска. AFAIK, ОС еще нет. Это означает, что где-то существует набор символов еще до того, как ОС вступит во владение. Я в замешательстве.   -  person royalfinest    schedule 02.11.2014
comment
Это BIOS или загрузчик, выполняющий функции VGA.   -  person Basile Starynkevitch    schedule 02.11.2014
comment
Это означает, что BIOS поддерживает временную таблицу символов (минимум ASCII). Это не? Где он поддерживается? это в видео ПЗУ или в ПЗУ BIOS?   -  person royalfinest    schedule 02.11.2014
comment
Я ответил, что у карт VGA есть ПЗУ со шрифтом внутри. Но IIRC используется только BIOS и во время ранней загрузки. Но на практике вы пишете код для какой-то операционной системы, которая предоставляет вам некоторую абстракцию (какой-то сервис) для отображения вещей. Детали более низкого уровня имеют значение только в том случае, если вы кодируете ядро ​​​​ОС и зависите от системы и оборудования.   -  person Basile Starynkevitch    schedule 02.11.2014
comment
Ok. Я так понимаю, что самый ранний набор символов ASCII поддерживается в VGA ROM. Это начинает иметь смысл. Таким образом, первое, что заставляет ЦП «понимать» A, B, C... - это ПЗУ VGA.   -  person royalfinest    schedule 02.11.2014
comment
Опять же, вы должны отредактировать свой вопрос, чтобы улучшить его. Либо вы кодируете -e.g. ядро ОС — на «голом железе» (а затем вам следует углубиться в спецификации оборудования), или вы используете какую-то ОС, тогда эта ОС предоставляет вам API для отображения вещей.   -  person Basile Starynkevitch    schedule 02.11.2014
comment
Хорошо, спасибо за ответы. Извините за беспокойство. Я не могу проголосовать за тебя. У меня очень мало повторений. В следующий раз.   -  person royalfinest    schedule 02.11.2014
comment
Пожалуйста, найдите время, чтобы перейти по многочисленным ссылкам, которые я вам дал.   -  person Basile Starynkevitch    schedule 02.11.2014
comment
@royalfinest На самом деле, на ПК ASCII никогда не был основным набором символов. ПЗУ видеокарты имели шрифт для IBM437 или аналогичный, который был основным набором символов, используемым ПК. -DOS и MS-DOS тоже.   -  person Tom Blodget    schedule 03.11.2014


Ответы (1)


Это зависит от того, в какой момент и с какой операционной системой и на каком оборудовании. Для Linux на текущем x86 ПК рабочий стол:

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

IIRC, видеокарты имеют ПЗУ для BIOS и исходного шрифта VGA. Но это используется только во время BIOS или в процессе ранней загрузки.

Но в большинстве случаев рабочий стол Linux использует свой X11 сервер Xorg. Сервер управляет шрифтами и отображает их с помощью графики видеокарта (которая часто имеет GPU), возможно, скопировав соответствующие битовые карты. протокол X11 знает о шрифтах, но сегодня большинство приложений используют клиентскую часть Xft.

Будущая архитектура Wayland будет иметь шрифты на стороне клиента.

Вы можете посмотреть на OsDev, там есть несколько связанных страниц.

Низкоуровневые графические библиотеки, такие как libSDL или OpenGL (или Xlib) имеет функции для рисовать текст произвольным шрифтом, например XDrawText изначально или XftDrawString с Xft.

Наборы инструментов графического пользовательского интерфейса высокого уровня, такие как Qt или Gtk предоставляет виджеты с отображением текста, как правило, около их цикл событий.

В кровавых подробностях все сложно и зависит от аппаратного обеспечения (и, к сожалению, некоторые производители видеокарт, например Nvidia- не публикуйте спецификацию своего оборудования, поэтому оно должно быть обратным проектированием). Вот почему вы используете операционную систему, которая предоставит вам некоторую абстракцию для кода.

person Basile Starynkevitch    schedule 02.11.2014
comment
это означает, что видео постоянно поддерживает таблицу переводов наборов символов? - person royalfinest; 02.11.2014
comment
Нет, только в раннем режиме VGA. - person Basile Starynkevitch; 02.11.2014
comment
Я предполагаю, что после этого ОС возьмет на себя задачи синтаксического анализа (или как там это называется)? Это означает, что большую часть времени, пока я не выключу его, ОС будет предоставлять услуги перевода, верно? - person royalfinest; 02.11.2014
comment
Я не понимаю, что вы имеете в виду под услугой перевода. Это просто API, например. набор библиотечных функций для отображения текста. - person Basile Starynkevitch; 02.11.2014
comment
Извините, я действительно не знаю, как это ясно выразить. Вы ожидаете слишком многого для моего вопроса. Я полагаю, что такие вещи, как BIOS, будут обеспечивать такие преобразования битов в символы и отображать их на экране. Затем ОС вступит во владение и предоставит ту же «услугу» или что-то в этом роде. Это правильно? - person royalfinest; 02.11.2014
comment
Вы действительно должны объяснить, почему вы спрашиваете? Вы кодируете ядро ​​ОС или просто хотите написать приложение с графическим интерфейсом? Для какой платформы? - person Basile Starynkevitch; 02.11.2014