Como o computador sabe exibir texto e GUI na tela?

Como o computador sabe exibir texto e GUI na tela?

Esta pode ser uma pergunta estúpida e estranha, mas eu realmente não consigo dormir até encontrar a resposta. Como o computador sabe exibir texto e GUI na tela? Se não me engano, o processo de inicialização de computadores x86 é assim:

  • BIOS inicia a CPU e o resto do hardware e verifica se tudo está funcionando
  • a CPU executa o código dos primeiros 512? bytes da partição de inicialização e a tela exibe o menu do bootloader
  • o kernel selecionado é executado
  • etc.

Minha pergunta é: se não houver sistema operacional antes do kernel ser iniciado, como o computador sabe como exibir o texto na tela? O BIOS e o bootloader podem exibir algum texto e uma GUI básica. Como eles fazem isso? O BIOS/bootloader informa à CPU (GPU?) Que ela deve exibir um pixel azul, digamos, na posição (0,0), depois um pixel branco em (1,0), etc.?

Minha segunda teoria é que o BIOS possui um driver básico de vídeo que possui algum tipo de API para imprimir na tela. Existe algum tipo de função print() disponível nos drivers do monitor?

Pelo que vi as funções assembly para imprimir texto são específicas de cada sistema operacional, portanto não pode ser algo disponível diretamente através do conjunto de instruções da CPU.

A parte 2 da minha pergunta é: como funcionam os ambientes de desktop como o KDE ou o GNOME? Digamos que eu queira criar um ambiente de desktop completamente novo para Linux. Por onde eu começo? Não há funções em C/C++ ou qualquer outra linguagem de alto nível para exibir umn corprixel na posição (x,y). Em qual idioma está escrito o programa que exibe o dekstop? Ele cria a área de trabalho pixel por pixel? Como funcionam bibliotecas como GTK ou Qt? Eu sei que posso exibir uma janela com apenas algumas funções, mas como essas funções realmente funcionam?

Desculpe se minhas perguntas não estão claras. Inglês não é minha primeira língua.

Responder1

Basicamente, há um chip ROM (memória somente leitura) na placa-mãe que informa como exibir qualquer GUI necessária. Você pensa que não tem software, mas tem, vem pré-instalado do fabricante. Na verdade, é mais provável que você chame isso de “firmware”, já que é um software conectado ao chip.

Quanto aos ambientes gráficos de desktop, não há realmente nada de especial neles. Eles desenham na tela da mesma forma que qualquer outro programa. Tudo o que você realmente precisa para desenhar em uma tela é saber o endereço de qualquer chip responsável pelo processamento gráfico (geralmente uma GPU ou IGPU/APU). Quando programas normais fazem isso, acredito que eles solicitam essas informações do sistema operacional; portanto, se você fosse escrever seu próprio ambiente gráfico de área de trabalho, teria que descobrir para qual endereço enviar seus dados. O endereço necessário deve ser fornecido pelos drivers de qualquer G/IG/APU que você possui.

Responder2

Em duas partes principais:

  1. Depois que o MBR é carregado, seu código carrega um segundo estágio de código de inicialização chamado Windows Boot Manager ou GRUB no Linux. Este gerenciador/carregador de inicialização possui funções de texto e gráficos implementadas em código ou usa acesso direto ao BIOS para saída de texto.

  2. Após carregar o SO (Windows, Linux, etc.) utilizando qualquer linguagem de programação como C, C++, Java, Basic você tem acesso a funções implementadas no kernel e/ou bibliotecas que permitem escrever ou desenhar na tela. Toda linguagem de programação hoje possui algum IDE (ambiente de desenvolvimento integrado) que simplifica muito a escrita do código do usuário.

informação relacionada