Meu sonho de sistema operacional foi destruído

Prefácio : Todo programador pode ter um sonho de sistema operacional: escrever seu próprio sistema operacional, mas poucas pessoas são realmente bem-sucedidas. 

Eu não fui exceção.Eu também estudei MINIX quando comecei a trabalhar, mas não cumpri e meu sonho foi destruído.

Por isso, invejo os alunos que têm tempo para discutir sobre o sistema operacional. Por um lado, eles podem entender o conhecimento do sistema operacional e hardware, por outro lado, é a sensação de realização do programador. Claro, você também pode discutir mais profundamente com o entrevistador quando estiver procurando um emprego.

Hoje, gostaria de compartilhar com vocês as aventuras do sistema operacional da Sun:

Quão difícil é escrever um sistema operacional

Deixe-me falar bobagem: não é difícil para quem se encontra e não para quem é difícil .

Arranque a frio

É difícil para pessoas com conhecimento zero, mesmo aquelas sem conhecimento de informática. A dificuldade não está na quantidade de código do sistema operacional em si, mas no dilema encontrado no desenvolvimento inicial de qualquer coisa, a inicialização a frio .

Não sei qual livro devo ler como um livro introdutório, nem mesmo sei se devo ler um livro ou um artigo na Internet ou encontrar um líder para conduzi-lo à introdução. Estou até discutindo se faz sentido construir um sistema operacional sozinho. Emaranhado.

Muitas pessoas perderam a paciência durante esse período de inicialização a frio.

Você pode ter a sorte de encontrar um livro introdutório. Acontece que a escrita e as idéias do autor foram mais do seu apetite, então você passou do período de inicialização a frio.

Mas você também pode ter azar e encontrar um livro difícil de ler, ou um excelente trabalho que simplesmente não se ajusta ao seu apetite, então você começa a desistir.

Eu fui o primeiro livro desta iluminação, é " sistema operacional self-made de 30 dias ", o primeiro livro de um monte de gente, isso também pode ser porque o título do livro escrito em palavras do sistema operacional caseiro Zhichuo local , e um olhar Nossa, isso pode ser feito em 30 dias, tanta gente que não ousa dar o primeiro passo tem confiança.

Este livro tratará o leitor como um novato que não tem nenhum conhecimento de informática, portanto, muitos lugares são muito amigáveis ​​e, ao segui-lo, você poderá atravessar completamente o período de inicialização a frio.

Mas este livro também tem alguns pontos que fazem as pessoas quererem desistir no meio do caminho, por exemplo, fico muito irritado com esses lugares. Uma é que o código-fonte baixado do site oficial é anotado em japonês . Naquela época, pedi a meus amigos que traduzissem para mim em muitos lugares. A outra é que as ferramentas que ele usou foram todas escritas pelo próprio autor , o que é incrível, mas eu me pergunto se é impossível fazer um sistema operacional sem nem mesmo uma ferramenta pronta comumente usada na indústria. Eu aprendi sua ferramenta. Universalidade. Além disso, o autor passa muito tempo nas páginas seguintes explicando como fazer a interface gráfica e como desenhar caixas como janelas na tela, sem afetar umas às outras. Isso varia de pessoa para pessoa. Não acho que seja necessário gastar tanto espaço. Este não é o problema para quem deseja escrever sistemas operacionais.

Em suma, por meio de um livro, ou artigo, ou sob a liderança de um líder, você deu o primeiro passo, passou o período da inicialização a frio e chegou ao início .

inicial

Você segue a cabaça e desenha um furo, mas não ousa modificar um único comando. Finalmente, de acordo com o código do livro, você consegue ver "hello world" em uma máquina virtual ou real, ou pode ver os caracteres impressos alternadamente no modo de troca de thread AAABBB. corda.

Neste momento, seu medo de escrever o sistema operacional se foi, mas você não está satisfeito com o status quo, porque esse "hello world" não é seu, você nem sabe o que o código dentro é, talvez fosse apenas uma cópia naquele momento .

Você não precisa mais de um livro manual para ensiná-lo; muitos são os livros que apresentam princípios gerais e ideias de sistema operacional.

Meu livro neste período é " Operating System Truth Recovery " ( Recuperação da verdade do sistema operacional) , este livro traz algumas questões que você pode ficar confuso quando ele surgir.

0.1 Qual é o sistema operacional

0.2 Quão longe você quer estudar

0.3 Escrevendo o sistema operacional, o que eu preciso fazer

0.4 Como o software acessa o hardware

0,5 O que é um aplicativo e como funciona com o sistema operacional

0.6 Por que é chamado de "preso" no kernel

0.7 Por que a segmentação do acesso à memória

0.8 O que é um modelo plano

Dei uma olhada neste catálogo, caramba, não é essa a questão que levantei depois de ler "30 dias de sistema operacional feito por você mesmo"! Portanto, pode-se dizer que este livro é o livro mais legal que já li nessa estrada. Cada pergunta é respondida neste livro, uma por uma.

Mas, na verdade, acho que este livro pode ser usado como o primeiro livro no período de inicialização a frio para pessoas que têm base em computador e não são ruins.

Este livro não durará 30 dias. Não será 30 dias. É muito engraçado. Por exemplo, 30 dias é um livro engraçado. Ele ensina como usar o teclado para pressionar 512 zeros. Diga que se você tem um gatinho em casa, pode ser ótimo. Portanto, a extensão deste livro se concentrará em algumas questões-chave reais.

Depois de ler este livro, combinado com as informações na Internet e sua própria prática prática, você já pode usar seu livre arbítrio para ajustar o sistema operacional do Gourd Painter. Neste ponto, você passou com sucesso o estágio inicial e começou a avançar para o estágio intermediário !

Mas não leia uma frase para concluí-la, você pode desistir no meio, porque a quantidade de conhecimento neste livro sozinho é muito grande, se você nunca o contatou antes, tentar digeri-lo não é uma questão simples.

Por exemplo, nesta fase, desisti duas ou três vezes na metade, porque sempre quis pular alguns capítulos que achava "inúteis" , mas muitas vezes eu via o verso e me virava para preencher a frente. Às vezes é porque é obviamente o mesmo que o livro, mas meu programa apenas relatou um erro, o que impossibilitou prosseguir mais tarde. O sistema operacional é assim: as etapas anteriores de carregamento do carregador, configuração de interrupção, configuração de paginação segmentada e entrada no modo protegido são seriais e cada etapa não pode causar um pequeno erro, caso contrário, as etapas a seguir serão interrompidas pelas etapas anteriores. Não há como pular a questão, assim como você tem que fazer um teste de matemática, você deve fazer a última questão na ordem a partir da primeira questão, e você pode continuar fazendo depois que a anterior estiver correta.

A máquina virtual travou ...

Médio prazo

Depois de todas as dificuldades chegarem a médio prazo, pode não haver muitas pessoas aqui, mas aqui você conhecerá um grande número de pessoas que estão lutando como você, a porta para o novo mundo pode ser aberta, então para você, na verdade, você vai Acho que muitas pessoas fazem o sistema operacional, e o mestre é como uma nuvem.

Porque embora você possa seguir os seus próprios terá escrito alguns ajustes finos do sistema operacional, mas também ter uma vaga compreensão das várias partes do sistema operacional, mas nem sempre abriu o livro que você está olhando para a sombra, simplesmente não é Insight .

Naquela época, eu estava confortável com o pensamento do sistema operacional em "Restauração da Verdade do Sistema Operacional". Sempre pensei que o kernel deveria ser mapeado para o espaço de alta tecnologia da memória, e a tabela de páginas deveria ser projetada de forma inteligente. Resumindo, é menos conhecido, porque conheço apenas uma forma de implementação, então sinto que todos os sistemas operacionais do mundo são assim.

Porque, de qualquer forma, há um pouco de conhecimento. Nesse estágio, algumas vacas grandes no campo do sistema operacional (de qualquer maneira, pessoas que são muito melhores do que você) vão lhe dar um pouco de atenção, e o tom pode mudar do preto original para " Oh ", e então para o atual" umh ".

Estação b do desenvolvedor do sistema operacional Xbook Chamo-me Xiaogutou

Você também participará de alguns grupos ou comunidades e conhecerá mais figurões. Você descobrirá que o sistema operacional em seus olhos é apenas um dos métodos muito convencionais ou desatualizados em seus olhos. Como resultado, sob a influência da lentidão, você também abriu sua mente e decidiu aprender mais sobre sistemas operacionais.

Quanto a mim, a escolha na hora foi ler o código fonte do Linux e tentar copiar um (a última etapa de cópia foi abandonada).

código fonte do linux0.11

Eu sinto que, contanto que sua escolha nesta etapa seja entender um sistema operacional clássico, o que mais você pode escolher? Só pode ser linux, haha.

Existem muitos livros neste período. Minhas palavras são para usar " A Arte do Design do Kernel do Linux " para entender brevemente todo o processo e contexto do Linux e, em seguida, usar " Notas Completas do Kernel do Linux " para coordenar o código-fonte do Linux para focar no código-fonte linha por linha. Entenda, eu também me comuniquei com o autor de um livro de sistema operacional de código aberto para entender melhor os problemas que um sistema operacional maduro precisa considerar.

bookos-xbook2 executando captura de tela (do site oficial do autor)

Depois de alguma compreensão do Linux, podemos aprofundar ainda mais nosso conhecimento copiando-o. Mas a imitação foi finalmente abandonada, porque mesmo o código-fonte do linux0.11 é muito complicado e leva tempo para imitar completamente. Portanto, simplifiquei o trabalho que considerava puro coolie.Por exemplo, o Linux divide a área de memória de acordo com o tamanho da memória, e eu escrevi diretamente a memória de 32M. Outro exemplo é que o número de discos rígidos suportados pelo Linux muda dinamicamente. Eu suporte diretamente apenas um disco rígido. Dessa forma, muitos arrays e loops for são expandidos. Eu acho que essas tarefas não são importantes para a compreensão de um sistema operacional.

Aqui está um episódio, lendo o código-fonte do Linux, às vezes quase não me irritou. Linus é muito travesso, e muitos comentários são escritos neste estilo. / * _ emm, eu não sei o que é útil aqui, mas vamos escrever primeiro, estou feliz, hehe_ / Para mim, que estou lutando para entender o código-fonte, é simplesmente hostil

Aqui está um trecho do código-fonte do Linux, de main.c

/*
 * Yeah, yeah, it's ugly, but I cannot find how to do this correctly
 * and this seems to work. I anybody has more info on the real-time
 * clock I'd be interested. Most of this was trial and error, and some
 * bios-listing reading. Urghh.
 */

#define CMOS_READ(addr) ({ \
outb_p(0x80|addr,0x70); \
inb_p(0x71); \
})

#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)

static void time_init(void)
{
 struct tm time;

 do {
  time.tm_sec = CMOS_READ(0);
    ...
    ...

Fim do episódio, de volta ao assunto.

Neste momento, encontrar livros não é mais um problema para você. Você encontrará espontaneamente os livros de que precisa e todos querem se concentrar em diferentes pontos, e você também encontrará diferentes focos para aprender mais. Por exemplo, não há módulo de rede na versão inicial do Linux, então se o foco estiver na programação de rede, procure livros como " Linux Kernel Network Model ". Às vezes, alguns drivers e alguns sistemas operacionais melhores tornam-se hábitos de programação. Também irei fortalecê-los em alguns capítulos de livros como " A implementação de um sistema operacional de 64 bits ".

E neste estágio, você não está mais sozinho, haverá muitos companheiros de viagem com você e muitos novatos lhe fazendo perguntas.

Tarde

Nesse ponto, você já deve ter descoberto a estrutura de um sistema operacional, mas não pode entrar em todos os detalhes. Neste momento, não é uma questão de persistência, mas sim de escolha. Você quer que seu sistema operacional suporte não apenas x86, mas também arm? Você quer aperfeiçoar todos os tipos de drivers? Você quer uma bela interface gráfica? Quer aprender mais sobre programação gráfica? Você quer se juntar ao exército de fazer sistemas operacionais domésticos?

Minha escolha é não, então eu paro aqui, porque eu estou

Porque quando decidi entrar no buraco, foi para ter uma compreensão mais profunda do trabalho que estou fazendo agora. Sou um engenheiro de software, um programador Java e não um profissional especializado em desenvolvimento embarcado e kernel. Então eu acho que não há problema em ir mais fundo, mas não é mais necessário focar no poder de fogo no meio do período anterior, mas usar o tempo ocioso para entender o máximo possível e aprender conforme necessário.

Claro, você também pode optar por continuar.Acho que é bom parar por aqui ou continuar a descer.

Resumo da minha experiência

  • Inicialização a frio : "sistema operacional self-made de 30 dias"

  • Estágio inicial : "Restauração da verdade do sistema operacional"

  • Meio do período : "A arte do design do kernel do Linux", "Notas completas do kernel do Linux" + código-fonte do linux0.11

  • Estágio tardio : parar

O que escrever nesta série

Para escrever um tutorial mínimo de sistema operacional, leve você ao poço.

Se pertencer a algum dos tutoriais mencionados acima, acho que está no estágio de inicialização a frio , porque seja uma inicialização a frio, estágio inicial ou intermediário, há pontos que fazem as pessoas desistirem, e este tutorial minimalista no estágio de inicialização a frio permite Nos estágios acima, não é tão fácil desistir.

Já escrevi essa série antes, mas sempre estabeleço grandes objetivos no início. Espero que os leitores possam concluir a produção de um sistema operacional de acordo com meu tutorial sem ler nenhuma informação, exceto para minha série de artigos. É irreal e desnecessário, não é o que uma série de artigos deveria fazer. A seguir está a série que joguei no jardim do blog ...

A série de artigos não pode ser detalhada o suficiente, apenas livros grandes podem fazer isso. Mas cada um dos livros acima é realmente muito grande e é fácil para as pessoas desistirem e, portanto, perderem um bom livro e uma oportunidade de entrar no buraco. Desisti de cada livro duas ou três vezes. Na Internet, artigos simples de sistema operacional feitos por você mesmo são muito simples para permitir que as pessoas alcancem o padrão de pitting.

Portanto, para resolver esse ponto problemático, decidi refletir sobre algumas das deficiências dos tutoriais que escrevi com base na minha própria experiência, combinada com o conhecimento dos livros, e produzir uma série de tutoriais minimalistas cuja densidade de conhecimento está entre os grandes livros e a Internet Entre os artigos .

O objetivo principal deste tutorial é permitir que os leitores conheçam o processo principal de fazer um sistema operacional , o conhecimento que deve ser dominado , o processo que precisa ser vivenciado e os obstáculos psicológicos que precisam ser superados , para que eles possam saber bem, não ter mais medo e fazer operações self-made A postura correta do sistema. E no processo de estudo aprofundado, haverá um feedback positivo constante de "Oh, o xxx original desta série significa isso", o que é muito importante.

Um motivo para desistir no processo de aprendizagem da tecnologia é que não há interesse suficiente , e outro motivo é que o feedback positivo de "Eu entendo" não é suficiente. Para essa série, espero que no processo de seu estudo aprofundado de acompanhamento, a sombra desta série sempre o acompanhe, dando-lhe esse feedback positivo e motivação para continuar. Claro, é melhor aumentar o seu interesse, mesmo Deixe que as pessoas que não querem fazer o sistema operacional sozinhas também abram a porta para esse novo mundo.

Originalmente, eu queria escrever um catálogo, mas pensei nisso depois, e o pensamento do meio provavelmente será ajustado de acordo com a situação real, assim como uma expectativa para todos.

Vou dar-lhe um presente

Pode ser toda a rede da Demo do sistema operacional mais simples , o que não é competente, eles aceitam parâmetros de teclado para imprimir na tela. O ponto mais tentador é que, se você for um sistema operacional Windows, poderá baixar o código-fonte diretamente, clicar em run.bat e executá-lo sem instalar nenhum ambiente . Esta pode ser uma demonstração com a qual muitos amigos sonham. O endereço é:

https://gitee.com/sunym1993/flash-4th-os.git

captura de tela em execução do flash-4-so

Por que é o flash-4th-os? Porque meu nome em inglês é Flash, e desisti nas três primeiras vezes que escrevi.Este é o quarto que escrevi, hahaha.

Bem-vindo a prestar atenção à conta oficial do WeChat " programação de baixa concorrência ". Se você tiver alguma dúvida, responda à conta oficial a qualquer momento. Vou verificar e responder com freqüência. Se quiser conversar em particular, você também pode deixar seu WeChat na conta oficial e eu o adicionarei. 

Acho que você gosta

Origin blog.csdn.net/coderising/article/details/109881880
Recomendado
Clasificación