Como o computador sabe como exibir texto e GUI na tela?

3

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

  • O BIOS inicia a CPU e o restante 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 carregador de inicialização
  • o kernel selecionado é executado
  • etc.

Minha pergunta é: Se não há 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 interface gráfica básica. Como eles fazem isso? O BIOS / bootloader diz à CPU (GPU?) Que ele tem que exibir um pixel azul na digamos posição (0,0), então um pixel branco em (1,0) etc?

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

Do que eu vi as funções assembly para imprimir texto são específicas para cada sistema operacional, então 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 trabalho como o KDE ou o GNOME? Digamos que eu queira criar um ambiente de desktop completamente novo para o Linux. Por onde eu começo? Não há funções em C / C ++ ou qualquer outra linguagem de alto nível para exibir um prixel n cor na posição (x, y). Em que idioma o programa exibe o dekstop? Cria o desktop pixel por pixel? Como bibliotecas como o GTK ou o Qt funcionam? 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 estiverem claras. Inglês não é minha primeira língua.

    
por M0rning 03.09.2014 / 21:15

2 respostas

1

Basicamente, há um chip ROM (read only memory) na placa-mãe que informa como exibir qualquer interface gráfica de que precise. Você acha que não tem software, mas vem pré-instalado do fabricante. Na verdade, é mais provável que você chame esse "firmware", já que é um software que é ligado ao chip.

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

    
por 06.03.2015 / 07:48
0

Em duas partes principais:

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

  2. Depois de carregar o SO (Windows, Linux, etc.) usando 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.

por 04.09.2014 / 10:42