Você está na página 1de 23

O Diário do Desenvolvimento de um Sistema Operacional

Escrito por : Miraldino Paulo Dória


Olá, meu nome é Miraldino Paulo Dória, nasci
aos ( 28/01/2003 ), e eu estou escrevendo esse
livro aos ( 31/01/2022 ), então isso quer dizer
que estou com 19 anos atualmente. Sou estudante do
ensino médio e estou na 12ª Classe Cursando como
Técnico Médio Informático.Estou escrevendo isso
porque senti que é importante documentar pequenas
coisas que sentimos que são 100% importantes p’ra
nós.

E desenvolver um Sistema Operacional é algo


muito significativo p’ra mim, já já vou contar o
porquê.

Eu nunca escrevi um livro, nunca editei nenhum


e nem me considero um grande escritor (hahahaha),
então esse livro vai ta feio em edição, mas bonito
em palavras.

Bom, como essa é a introdução desse meu


diário, eu vou contar aqui “como eu aprendi a
programar e porquê que eu decidi fazer isso”.

Então, eu decidi aprender a programar depois


que vi pela primeira vez o jogo ( GTA 5 ), eu
fiquei tão emocionado com a adrenalina do jogo que
falei pra mim mesmo que ia fazer algo parecido
(hahahah)...

Isso foi em 2017, mas eu só aprendi a


programar em 2018, e eu nem era informático na
altura, eu era um Técnico Médio de Construção
Civil.

E como eu vi que estava 100% na área errada,


eu mudei de curso e até o momento sinto que foi
uma das melhores escolhas que eu já fiz em toda
minha vida.

Minha primeira Linguagem de Programação foi


“Python”, na verdade o que me levou a estudar
“Python” foi o Hacking, eu queria é começa a criar
ferramentas que hackers podessem utilizar.

Com o tempo, eu fui aprendendo outras


linguagens como ( C, C#, Bash Shell Script, PHP,
SQL, Perl e Ruby ), as duas últimas só aprendi a
fazer uns programas bem simples que rodam no
Linux.

Então, antes de tudo eu quero que você, meu


caro(a) leitor(a), saiba o significado de alguns
termos que eu vou utilizar aqui, e o significado
de alguns desses termos ou informações eu peguei
no site da Wikipédia ( https://pt.wikipedia.org ).

Atenção : Se você já tiver conhecimentos sobre


o significado dos termos, pode pular se quiser.

S.O ( Sistema Operacional ) : Segundo a


( Wikipédia ), Um Sistema Operacional é um
programa ou um conjunto de programas cuja função é
gerenciar os recursos do sistema (definir qual
programa recebe atenção do processador, gerenciar
memória, criar um sistema de arquivos, etc.),
fornecendo uma interface entre o computador e o
usuário ou utilizador. Embora possa ser executado
imediatamente após a máquina ser ligada, a maioria
dos computadores pessoais de hoje o executa
através de outro programa armazenado em uma
memória não-volátil ROM chamado BIOS num processo
chamado "bootstrapping", conceito em inglês usado
para designar processos autossustentáveis, ou
seja, capazes de prosseguirem sem ajuda externa.
Após executar testes e iniciar os componentes da
máquina (monitores, discos, etc), o BIOS procura
pelo sistema operacional em alguma unidade de
armazenamento, geralmente o Disco Rígido, e a
partir daí, o sistema operacional "toma" o
controle da máquina. O sistema operacional reveza
sua execução com a de outros programas, como se
estivesse vigiando, controlando e orquestrando
todo o processo computacional.

Kernel : Segundo a ( Wikipédia ), Em


computação, o núcleo ou kernel é o componente
central do sistema operativo da maioria dos
computadores; ele serve de ponte entre aplicativos
e o processamento real de dados feito a nível de
hardware. As responsabilidades do núcleo incluem
gerenciar os recursos do sistema (a comunicação
entre componentes de hardware e software).
Geralmente como um componente básico do sistema
operativo, um núcleo pode oferecer a camada de
abstração de nível mais baixo para os recursos
(especialmente processadores e
dispositivos de entrada/saída) que softwares
aplicativos devem controlar para realizar sua
função. Ele tipicamente torna estas facilidades
disponíveis para os processos de aplicativos
através de mecanismos de comunicação entre
processos e chamadas de sistema.

Hardware : Segundo a ( Wikipédia ), O hardware


( pronúncia: 'rarduér') é um termo técnico (e
anglicismo de engenharia eletrônica) que foi
traduzido para a língua portuguesa como
equipamento, e pode ser definido como um termo
geral da língua inglesa, que se refere à parte
física de computadores e outros sistemas
microeletrônicos. No âmbito eletrônico, o termo
"hardware" é bastante utilizado, principalmente na
área de engenharia de computação, e se aplica à
unidade central de processamento, à memória e aos
dispositivos de Equipamentos de computadores.
entrada e saída, bem como a todos os componentes
físicos de computadores. O termo "hardware" é
usado para fazer referência a detalhes específicos
de um dado equipamento eletrônico, incluindo-se
seu projeto lógico pormenorizado bem como a
tecnologia de seus componentes.

BIOS : Segundo a (Wikipédia), O ou a BIOS (um


acrônimo de Basic Input/Output System, em
português Sistema Básico de Entrada/Saída, e
também conhecido como System BIOS, ROM BIOS ou PC
BIOS) é firmware, gravado em uma memória não
volátil, usado para realizar a inicialização do
hardware durante o processo de inicialização (por
meio do botão de inicialização da máquina) e para
fornecer serviços de tempo de execução para
sistemas operacionais e programas. O firmware BIOS
vem pré-instalado na memória permanente da placa
mãe do computador e é o primeiro software a ser
executado quando se liga a máquina. O nome origina
do Sistema Básico de Entrada/Saída usado no
sistema operacional CP/M em 1975.

Bootloader : O Bootloader ou Inicializador é o


primeiro programa a ser carregado e executado no
computador, ele possui a responsabilidade de
organizar e levantar o Sistema Operacional.

Software : Software é um termo técnico (e


anglicismo de tecnologia da informação) que foi
traduzido para a língua portuguesa como suporte
lógico e trata-se de uma sequência de instruções a
serem seguidas e/ou executadas, na manipulação,
redirecionamento ou modificação de um dado
(informação) ou acontecimento. "Software" também é
o nome dado ao comportamento exibido por essa
sequência de instruções quando OpenOffice.org
writer executada em um computador ou máquina
semelhante, além de um produto desenvolvido pela
engenharia de software e inclui não só o programa
de computador, propriamente dito, mas, também,
manuais e especificações. Para fins
contabilísticos e financeiros, o software é
considerado um bem de capital.

Assembly : Segundo a (Wikipédia), Assembly ou


linguagem de montagem é uma notação legível por
humanos para o código de máquina que uma
arquitetura de computador específica usa,
utilizada para programar códigos entendidos por
dispositivos computacionais, como
microprocessadores e microcontroladores. O código
de máquina torna-se legível pela substituição dos
valores em bruto por símbolos chamados mnemónicos.

Linguagem C : Segundo a (Wikipédia), C é uma


linguagem de programação compilada de propósito
geral, estruturada, imperativa, procedural,
padronizada pela Organização Internacional para
Padronização (ISO), criada em 1972 por Dennis
Ritchie na empresa AT&T Bell Labs para
desenvolvimento do sistema operacional Unix
(originalmente escrito em Assembly). C é uma das
linguagens de programação mais populares e existem
poucas arquiteturas para as quais não existem
compiladores para C. C tem influenciado muitas
outras linguagens de programação (por exemplo, a
linguagem Java), mais notavelmente C++, que
originalmente começou como uma extensão para C.
Linux : Segundo a (Wikipédia), Linux é um
termo popularmente empregado para se referir a
sistemas operacionais que utilizam o Kernel Linux.
O núcleo (ou kernel, em Inglês) foi desenvolvido
pelo programador finlandês Linus Torvalds,
inspirado no sistema Minix.

Windows : É uma saga de Sistemas Operacionais


criados pela Microsoft, e atualmente está na sua
versão 11.

Bom, agora eu vou contar p’ra você como tudo


começou...

“Eu lembro que quando eu tinha 16 anos, eu era


desenvolvedor de Softwares de Gestão com Banco de
Dados, como ‘aqueles programas que encontramos nas
escolas, universidades, super-mercados, farmácias
e etc‘, utilizando a Linguagem de Programação C#
(C-Sharp).

Eu gostava das coisas que eu fazia na altura,


gostava tanto que certo dia eu pensei que ‘Em vez
de Desenvolver Pequenos ou Simples Programas de
Gestão, eu poderia desenvolver um Sistema
Operacional de Gestão.’, Algo como por exemplo o
Sistema Operacional Windows ou Linux mas 100%
focado só no Gerenciamento de Escolas, Super-
Mercados, Universidades e etc.”

E foi mais ou menos assim que surgiu o meu


desejo por criação de Sistemas Operacionais.

Eu vou ter que admitir aqui que a ideia que eu


tive na altura é meio que ousada ou ambiciosa,
porque você já imaginou um garoto de 16 anos
criando um Sistema Operacional completo focado só
em gestão ? Se grandes Softwares de gestão são
complicados de desenvolver imagina um Sistema
Operacional ? Hahahaha...

Então com isso, eu falei p’ra mim mesmo na


altura que, antes dos 25 anos, eu teria um Sistema
Operacional.

Isso quer dizer que não importa se vai ser um


S.O p’ra Gestão, um S.O de Servidor ou até mesmo
um pequeno S.O, mas desde que seja considerado um
Sistema Operacional, p’ra mim já é o suficiente
(hahahaha)...

Então, “o mais importante pra mim, é cumprir


com a promessa de fazer um Sistema Operacional
antes mesmo de completar 25 anos de idade”.

Então, em 2021, eu consegui um Curso de


Segurança da Informação da Desec Security, uma
empresa que forma Pentesters e Presta Serviços de
Invasão também. E nesse mesmo curso tinha uma
parte que só falava sobre Assembly x86/x64 para
Windows e para Linux, Mas infelizmente eu fiquei
olhando os vídeos e da primeira vez eu disse “Não
vou perder meu tempo aprendendo Assembly.”, Isso
porque eu estava tão apegado a Segurança da
Informação que meu foco p’ra Desenvolvimento de
Sistemas Operacionais não existia mais.

Mas aconteceu que alguns meses depois, eu


fiquei procurando por livros que falavam sobre
Assembly e Desenvolvimento de Sistemas
Operacionais, e na sua maioria eu só encontrava
livros em inglês, excepto um, mas o código era
100% escrito em Assembly, e eu não sabia nada de
Assembly por negligência minha.

Então eu deixei passa, eu parei de procurar, e


voltei a me concentrar só em Segurança da
Informação.

Depois de alguns meses, acontece que eu


descobri que um de meus colegas de classe tinha
uma série que eu gostava muito e até hoje ainda
gosto, chamada “Pessoa de Interesse.”, eu não sei
se você já assistiu, mas nunca assistiu, eu
aconselho muito você a assistir (hahahaha)…

A série conta que depois dos ataques de 11 de


Setembro de 2001, nos Estados Unidos da América,
um programador junto de seu amigo decidiram criar
uma Máquina ou um Sistema para detectar atos de
terrorismos antes que eles podessem acontecer, só
que essa mesma máquina conseguia ver tudo, desde
atos de terrorismo até pequenos assassinatos
premeditados.

Agora talvez você esteja se perguntando...


“Mas o que isso têm haver com você ?”, e minha
resposta é : A Máquina.

A Máquina era um Sistema Operacional junto de


uma Inteligência Artificial, isso porque ela
conseguia aprender e interpretar palavras e ações.

E isso despertou novamente o meu desejo por


criar um Sistema Operacional. E uma outra coisa me
fez chegar até aqui foi o jogo ( Watch Dogs ).

O jogo conta que em 2013, a cidade de Chicago


decidiu implementar um Sistema para gerenciar a
cidade, esse Sistema é conhecido como ( ctOS ). E
segundo uma descrição, diz que...

“O Sistema Operacional Central abreviado como


ctOS, pois em inglês é The Central Operating
System, é um software de computador que controla
toda a rede de informações de uma cidade,
incluindo todos os dados pessoais. O ctOS dessa
cidade não apenas armazena e registra cada momento
da vida digital do cidadão, e é controlado por
empresas privadas que usam o software para seus
próprios ganhos, e pode usar as informações
obtidas contra as pessoas para vender produtos e
influenciar visões de mundo.
Em 2016, o ctOS 2.0 substituiu este sistema, sendo
implementado primeiramente em São Francisco.”

E esse Sistema controla : “Bloqueadores e


Espinhos, Controle de Pontes, Grade Elétrica,
Luzes/Controle das Luzes do Tráfego, O Trem L,
Sistemas de Tubos de Vapor, Sistema de Prevenção
de Crimes, Câmeras de Segurança, ATMs/Contas
bancárias, TVs e alertas de vídeo, Informações
privadas de cidadões, Comunicações de celulares,
Serviços conectados a internet, Reconhecimento
facial, Faróis, Veículos, Celulares/Telefones.”

Eu sei que nesse instante você falou que “Olha


só, você nunca vai criar esse Sistema.”
(hahahaha)... Eu sei que você falou isso, porque
eu já disse isso p’ra mim várias vezes também
(hahaha).

Mas o foco aqui é novamente o ( Sistema ), e é


exatamente isso que me impressiona e me motiva a
estudar mais sobre ( Sistemas Operacionais ) e (
Desenvolvimento de Sistemas Operacionais ).
E uma outra coisa, pessoa ou personagem posso
assim dizer que faz eu acordar e falar “Ta hora de
Estudar Sobre S.O”, é um personagem do jogo (
Watch Dogos ) chamado, ( Raymond Kenney ) ou ( T-
Bone ) , quem me conhece sabe que eu nunca ia
deixar passa essa (hahahaha), e segundo o jogo, a
sua história é a seguinte :

“T-Bone era um dos engenheiros de software


contratados pela Blume para construir o ctOS, já
que ele possui extremo conhecimento sobre o
sistema mas ele começou a achar que aquilo era
errado pois isso acabaria com a privacidade das
pessoas, então a Blume o demitiu.
Ele foi tentando acabar com a Blume indiretamente
mas ela o descobriu e foi atrás dele, atê que ele
causou um apagão em 2003 que matou onze pessoas.
Ele teve que sair de Chicago e deixar tudo para
trás.”

E esse é o Perfil de T-Bone ou Raymond Kenney


Então foi desse jeito que meu antigo desejo
por ter um “Sistema Operacional”, voltou.

E em Novembro de 2021, esse desejo ficou ainda


mais forte e isso me levou a compilar um Kernel
muito simples, mas que em seguida mudou muita
coisa na minha vida.

Foi no dia 16 de Novembro de 2021, eu fui até


o Google e pesquisei por ( Simple Kernel Github ),
e isso fez com que os Bots do Google fossem até ao
site do Github que também foi criado pelo mesmo
criador do Kernel Linux, ou seja Linus Torvalds,
fazer uma busca por alguns kernels bem pequenos e
muito simples, e nessa mesma busca por pequenos
kernels um deles chamou muito a minha atenção, é
um Kernel bastente simples que tinha sido
desenvolvido utilizando C e Assembly(
https://github.com/debashisbarman/Simple-Kernel-
in-C-and-Assembly ) e nesse mesmo dia, eu compilei
o código desse Kernel, executei ele e no mesmo
instante mostrou isso pra mim :
Eu posso chega a afirmar que essa foi a melhor
coisa que um computador já exibiu pra mim até hoje
(hahahaha)… brincadeira, mas foi muito importante
p’ra mim, posso dizer que foi como para os
Americanos o homem ter dado o primeiro passo na
Lua.

E no mesmo mês de Novembro, mas agora no dia


19, eu escrevi o mesmo código desse Kernel
simples, executei ele e funcionou do mesmo jeito.
Eu fiz isso porque nos dias 17 e 18, eu fiquei
estudando sua estrutura e tentando entender como
aquilo funcionava, e pra falar verdade eu não
tinha entendido a 100% na altura, mas já era
alguma coisa (hahahaha)...

E um dia depois, ou seja no dia 20 de


Novembro, eu consegui escrever meu primeiro
Bootloader usando a Linguagem de Programação
Assembly, e ele era tão simples que mostrava
apenas uma mensagem dizendo “Hello World”, isso
porque eu estava fazendo um Curso de
Desenvolvimento de S.O com ( Wender Francis )
usando Assembly.

E depois disso eu continue estudando,


estudando e estudando sem parar...

E agora no dia 04 de Janeiro de 2022, depois


de ter estudado como um escravo trabalhando sem
descanso (nem tou exagerando)... Eu escrevi
oficialmente o meu primeiro Kernel usando
Linguagem C, isso porque eu tinha encontrado
alguns tutoriais explicando sobre como criar um
Kernel usando C e Assembly do zero, mas esses
mesmos tutoriais estavam em inglês, daí eu usei o
Google Tradutor e fui estudando. É o que eu sempre
digo, um autodidata de verdade nunca vê
dificuldades quando quer aprender alguma coisa.

E esse mesmo Kernel que eu fiz do Zero, eu


lembro que levei o código fonte junto de uma foto
em folhas do tipo A4, p’ra escola no primeiro dia
que as aulas do 2º trimestre retornaram e eu
entreguei as folhas A4 p’ro meu antigo Professor
de Programação, alguém que eu admiro muito e tenho
muita consideração e respeito, o “Engenheiro
Gaspar”.

A imagem do meu primeiro Kernel :


Agora na madrugada do mesmo dia que eu decidi
escrever esse livro, ( 31/01/2022 ), eu meio que
fiz uma coisa que acho que precisava ser feito.
Bom, se você não sabe, um Sistema Operacional é
dividido por partes, e uma das partes muito
importante é parte dos ( Drivers ). Eu vou tenta
te explica rápido sobre isso, então, você consegue
escrever coisas em um computador pelo Teclado
certo ? Você também consegue usar o Mouse ou
comumente chamado de Rato, certo ?

Então se suas respostas foram “SIM”, isso


significa que você está utilizando os Drivers de
“Teclado” e de “Mouse”, e existe outros Drivers
por aí.

Bom, eu te expliquei isso primeiro porque, um


Kernel sem um Driver de Teclado só vai exibir
mensagens e nada mais, você pode fica clicando em
qualquer tecla que você quiser ele só vai fica
parado e olhando p’ra você, tal como o meu
primeiro Kernel.

Então olha que eu estava cansado de ter um


Kernel que só olhava pra mim e nada mais, eu
queria pode escrever alguma coisa na tela, e foi
isso que eu fiz, eu implentei um Driver de Teclado
(hahaha), porém o código nem é meu, e até o
momento nem faço ideia de como escrever um Driver
de Teclado, isso porque eu não tenho conhecimento
nenhum sobre ( IRQ, PIC, GDT, IDT e ISRs ).

E você deve ta se perguntando “Mas o que falta


p’ra você aprender essas coisas ?”, nada,
simplesmente a teoria sobre isso é um pouco pesada
p’ra mim até o momento.
Mas eu não fiz uma implementação do tipo “As
Cegas”, eu sabia do que estava fazendo, só não
entendi ainda o código, mas a lógica eu fiz certo
e está como na imagem da capa deste livro. “O que
foi ? Achou que aquilo se escreveu sozinho ?”
(hahaha)...

Então, eu posso dizer que estou meio que feliz


e meio que triste, tou feliz porque meu
Kernelzinho está funcionando até o momento e está
com suporte de um simples Driver de Teclado, e
estou triste porque o código não é meu e nem faço
ideia de como escrever algo parecido.

Bom, até o momento é isso aí, eu penso em


fazer desse livro um pequeno diário no momento, e
quem sabe algum dia se torne um livro de
inspiração para outras pessoas que desejarem
mergulhar no mundo do ( Desenvolvimento de S.O ).
Então estou na madrugada do dia 01 de Fevereiro de
2022, Graças a Deus, e apartir de hoje tudo que
será escrito aqui vai ser considerado uma nova
experiência dessa minha aventura no mundo do (
Desenvolvimento de Sistemas Operacionais ).

Hoje é 04 de fevereiro de 2022, e são 03:10,


eu não tou com insônia, mas algo tirou o meu sono
nessa madrugada, “Um Kernel com Suporte a Teclado,
sem configuração de IDT”.
Eu não sei se isso é normal, porque até o
momento ainda não estudei ou vi algo parecido com
isso. Então, durante esses dias que se passaram eu
fiquei estudando sobre ( IDT, IRQ, PIC ) e outras
coisas ligadas a Interrupções.

Segundo o site ( http://wiki.osdev.org/ ), que


na realidade é como um lugar para se estudar (
Desenvolvimento de Sistemas Operacionais ), diz
que :

“Interrupções são sinais de um dispositivo,


como um teclado ou um disco rígido, para a CPU,
dizendo para parar imediatamente o que estiver
fazendo no momento e fazer outra coisa. Por
exemplo, um controlador de teclado pode enviar uma
interrupção quando uma tecla de caractere é
pressionada. Então o sistema operacional pode
exibir o personagem na tela imediatamente, mesmo
que a CPU estivesse fazendo algo completamente não
relacionado antes, e retornar ao que estava
fazendo depois. Quando surge uma interrupção
específica, a CPU procura uma entrada para essa
interrupção específica em uma tabela fornecida
pelo sistema operacional. No modo protegido x86, a
tabela é chamada de Interrupt Descriptor Table
(IDT)e pode ter até 256 entradas, mas o nome desta
tabela e o número máximo de entradas que ela pode
ter podem variar de acordo com a arquitetura da
CPU. Depois que a CPU encontra a entrada para a
interrupção, ela pula para o código para o qual a
entrada aponta. Esse código executado em resposta
à interrupção é conhecido como rotina de serviço
de interrupção (ISR) ou um manipulador de
interrupção .”
Então por padrão, ou pelo o que eu achei
normal até o momento, para se utilizar por exemplo
o Driver de Teclado, é necessário fazer a
configuração do ( IDT ) e escrever alguns códigos
para configurar também o ( IRQ ), porque o ( IRQ )
é o responsável pelas Requisições de Interrupção.

Então, se por padrão é necessário fazer essas


configurações, “Como esse Kernel ta com suporte a
Teclado sem tais configurações ?”, é exatamente
isso que tira o meu sono e o meu socego nesse
exato momento.

Existe um ditado na programação que diz que


“Se tiver funcionando, não mexa.”, eu não gosto
desse ditado, porque é como que se o autor
estivesse dizendo o seguinte... “O código sendo
seu ou não, se tiver funcionando e tudo estiver
correndo na perfeição, não mexa.”, só que têm um
problema, eu quero mexer, eu gosto de mexer e eu
quero entender porquê que tah funcionando desse ou
daquele jeito, porque eu sou assim.

Eu vou ter que admitir que o código desse


Kernel ai é baste simples e elegante, eu nunca vi
nada parecido até agora, e na verdade o código é
de um Tutorial que mostra ( Como Criar um Kernel
utilizando Linguagem C e Assembly ).

O Tutorial é em inglês, mas eu utilizei uma


extensão que eu baixei no meu navegador para
Traduzir todos conteúdos de um outro idioma p’ra
Português. “Ideia da minha amiga Patrícia :3”
(https://www.codeproject.com/Articles/1225196/
Create-Your-Own-Kernel-In-C-2)

Esse tutorial passa toda base necessária para


se criar um Simples Kernel com Suporte a Teclado
sem muitas configurações, só alguns códigos pra
imprimir alguns caracteres na tela, colocar cor de
fundo, configurar o teclado e etc, coisas simples,
que no final acabaram por apresentar um resultado
assustador pra mim.

Mas como diz na descrição, na realidade esse


Kernel ou Kernel completo têm muitas outras
funcionadalidades, como ( Exibir números, Teclado
E/S, Caixa de Desenho e Tic-Tac-Toe).

E agora você provavelmente deve tah se


perguntando, “Isso te poupa de estuda muita coisa,
então não era p’ra você ta feliz ?”.

Minha resposta p’ra essa pergunta é : Não!


E tal como meu irmão “Elias” sempre diz, “O
barato custa caro.”.

Eu poderia simplesmente adaptar esse código,


até porque ele é simples e funcional não é ? mas
agora suponhamos que eu queira fazer uma outra
operação que exige uma nova requisição de
interrupção ? Não tenho um IDT configurado, não
tenho o ISR configurado, e depois ? Como vai ser ?

Daí eu penso que questões como essas devem ser


analisadas primeiro, e eu penso que é por isso que
minha mente não aprovou esse código na hora tal
como ela fez com o primeiro que deu suporte ao
Driver de Teclado mesmo ele sendo bastente
simples. E quando eu digo aprovar, não quer dizer
que o código não ta bom ou algo parecido, o
aprovar que eu digo aqui é como se o código
estivesse perfeito mas, não é o adequado p’ra mim,
talvez seja p’ra você, p’ra seu colega de turma
(de escola, faculdade, trabalho) ou sei lá pra
quem for, mas p’ra mim não é.

Então, esses 2 ou 3 dias que se passaram, eu


fiquei estudando muito sobre (como fazer as coisas
do jeito certo) hahahaha... ou seja eu procurei
saber mais sobre a teoria por trás do ( IDT, GDT,
ISR, IRQ, ... ), e como configurar o IDT para da
suporte de teclado no Kernel, e penso que daqui a
mais uma ou 3 semanas no máximo, eu vou ter um
Kernel com suporte ao meu próprio Driver de
Teclado.

“Isso sim é algo que me deixa feliz :).”


Hoje é 06 de Fevereiro de 2022, 14:58, e
decidi escrever aqui mais um dos acontecimentos
“Históricos” pra mim, dessa minha aventura no
mundo do Desenvolvimento de S.O, então é nada mais
nada menos que o Driver de Teclado.

Então, finalmente eu tou conseguindo entender


sobre as configurações do IDT, o conceito por trás
dos IRQ e o resto das coisas ligadas no
desenvolvimento de um Driver de Teclado Simples no
caso.

E como esses conhecimentos não são só p’ra


deixar na teoria, hoje eu decidi criar um Driver
de Teclado primeiramente se baseando no código do
primeiro Driver de Teclado que eu encontrei.

E como resultado :

Ele funciona, porém com alguns erros :)

na verdade são só 2 erros, e o primeiro é que


a função que limpa a tela, não ta funcionando do
jeito normal, em vez de ele limpar só os primeiros
textos padrão que é isso ai ( SeaBIOS ... ) e o
resto, ele acaba limpando tudo, incluindo as
coisas que vêm depois da função ser chamada, o
segundo erro é que ele escrever com “espaços”,
porque como você pode ver, a cada caractere
acrescentado, ele coloca um “espaço”.

“Estou triste ?”, Não!

Eu estou é super feliz, porque esses erros,


podem ser corrigidos se eu prestar mais atenção, e
eu estou super feliz porque finalmente consigo
inserir dados no Kernel usando Teclado, com um
código que eu finalmente entendo e eu mesmo posso
escrever.

O foco que tah fazendo eu escrever essas


coisas aqui é exatamente essa, é de documentar os
erros e os acertos durante o desenvolvimento, é
como se eu estivesse escrevendo uma história, e na
verdade isso é uma história contada na primeira
pessoa e em tempo real.

Então eu estou feliz, porque sinto que é um


passo a mais na minha jornada na área de
Desenvolvimento de Sistemas Operacionais.

Hoje é dia 07 de Fevereiro de 2022, e olha que


hoje eu estou mais feliz em relação a ontem.
Porque finalmente, o Drive de Teclado foi escrito.

Lembra quando eu falei que tinha 2 erros que


estavam atrapalhando a execução ? “Então eu
corrigi eles!”

Acontece que eu estava usando apenas uma


variável p’ra executa as funções p’ra limpar e
escrever na mensagens na tela, o erro foi ter
inicializado a variável como global.
Eu comecei a escrever tudo do zero na
magrugada de hoje, especificamente as 03:19, e
como eu sei isso ? “Normalmente quando eu começo a
escrever um código importante, no topo do arquivo
eu coloco a data e hora”.

Então eu apresento a vocês, o Kernel com


Suporte a Teclado escrito porque finalmente eu
entendi todo drama por trás do ( IDT, IRQ, ISR e
outras coisas ligadas a Interrupções ).

De momento eu estou sem ideas em relação aos


próximos passos, mas vou fica talvez um tempo sem
mexer no Projecto, penso em surfar em novas ondas,
tou com plano de estuda um pouco sobre
Inteligência Artificial e criar alguns Joguinhos
2D em Python.

Você também pode gostar