quinta-feira, abril 13, 2006

Inicialização do Linux

Um dos projetos no qual estava trabalhando antes de ficar sem tempo é um inicializador novo para o Linux. A idéia é rodar os processos em paralelo quando possivel, diferentemente do que se faz hoje, de rodar eles em série.

Bom, a idéia é bastante simples, em um diretório dentro de /etc ficam alguns arquivos que descrevem um grafo. Cada um destes arquivos define um alvo e nós comuns. Todos os nós têm uma lista de dependências, que podem conter alvos ou nós comuns, e o inicializador recebe o nome de um alvo de init.

Isso é simples, em dois dias eu pude criar um programa em Perl que fazia isso (não pretendo mudar o processo init), mas é em Perl... O Miguel tem um artigo sobre Perl no Log4Dev :) mas o problema não é esse não. Perl cai tão bem no problema que o código ficou mais legivel e fácil de se manter do que em qualquer outra linguagem que eu pensei na época. O problema é que Perl é interpretado, e nem sempre se tem um interpretador de Perl em mãos antes de começar rcS... Existe um compilador de Perl, mas ele ainda esta bem instável, e não consegue rodar o meu código, assim, até agora eu estava esperando o problema desaparecer :)

Mas então eu percebi que posso fazer o programa em Mercury! Afinal, eu preciso de grafos, e interpretar os arquivos de configuração, e usar um named fifo. Nada que seja dificil de fazer em Mercury, e vou ter um programa para aprender a linguagem direito :)

Daí, depois de tudo pronto, eu vou poder começar a parte dificil, que é traduzir as configurações do sistema atual para o novo. Isso sim vai dar trabalho.

Nenhum comentário: