E aí? Deu Boston?

2 de May de 2007 - Fernando Roberto

Como comentei em meu último post, participei do seminário de desenvolvimento de drivers File System para Windows promovido pela OSR em Boston. Neste post vou comentar um pouco sobre como foram as coisas por lá.

Para começar, ninguém menos que Tony Mason para dar este seminário que foi muito, mas muito proveitoso. Para quem não conhece, Tony Mason é um dos quatro sócios da OSR. Ele trabalha com drivers a mais de 20 anos, e particularmente com File Systems a partir de 1989. Começou a trabalhar com File Systems para Windows NT em 1993, mas já desenvolvia File Systems para UNIX antes disso. Tony Mason também é a pessoa responsável por revisar e atualizar o conteúdo do livro Windows NT File System Internals escrito por Rajeev Nagar e publicado em 1997. O livro hoje é referência no assunto e sua edição revisada, que ainda não tem data prevista, trará assuntos novos que foram implementados no Windows 2000, XP e Vista. Também comentei um pouco sobre isso neste post.

Podem me chamar de “paga pau”, mas é lindo ver como ele simplesmente sapateia nos detalhes de implementação de File Systems Drivers (FSD) e File Systems Filters (FSF). Adivinha se meu exemplar do livro foi autografada por ele. Agora vou poder guardar esse autógrafo em minha agenda ao lado da embalagem do meu primeiro absorvente. Eu adoraria poder mostrar aqui, mas como temos uma assinatura envolvida, não acho que seria uma boa idéia colocar isso na Internet.

Na turma éramos em quinze alunos, onde doze eram norte-americanos, um romeno, um canadense e um brasileiro. Tive a oportunidade de ser o primeiro brasileiro a fazer este curso na OSR. Haviam pessoas de várias idades. O mais novo tinha aproximadamente 25 anos enquanto que o mais velho tinha os cabelos completamente brancos. Imagino que a idade média da classe ficava perto dos 40 anos. Me conforta a certeza de que nesta área de desenvolvimento, não corremos o risco de ser substituídos pela garotada que acabou de sair da universidade simplesmente por menores preços de mão de obra. Fala a verdade! Quantos programadores de 40 anos você conhece? Eu disse programadores, não gerentes. Pois é, felizmente o desenvolvimento de drivers ainda vai exigir muito arroz com feijão dessa galera.

Pasmem, uma mulher (aproximadamente 43 anos e parecia mulher mesmo!) também fazia parte do grupo. Não é machismo. Vocês sabem o quanto é incomum ver uma mulher (que não parece homem) programando, e programando Kernel ainda por cima. Outro indivíduo desta espécie rara é Molly Brown, programadora responsável pelo NT Cache Manager. Confira aqui.

Como era de se esperar, o ritmo do seminário foi acelerado. Afinal de contas o conteúdo é bem denso. Tivemos uma visão geral de IoManager, memória virtual, multi-thread, multi-processamento e Object Manager só para começar. Esses assuntos ainda fazem parte apenas do sistema operacional e não específicamente de FSD. Começamos a ver o conteúdo de File System própriamente dito lá pela metade do segundo dia. Todo o conteúdo foi muito bem distribuído, e para cada ponto explicado, recebíamos os comentários focando no desenvolvimento de FSD, FSF, e Redirectors. Interessante ver como cada ponto era discutido com direito aos comentários sobre as diferenças de implementação entre as diversas versões do Windows.

Em nosso grupo havia pelo menos uma pessoa que iria desenvolver um Redirector, outra que iria desenvolver um File System, mas o público em geral aprimorava seus conhecimentos para desenvolver anti-virus, anti-malware, controle de acesso e até sistemas de replicação de dados. Todos implementados como FSF.

Replicação de dados? Não seria melhor desenvolver replicação de dados com um filtros de disco? É, eu também acho. A interface de File System é muito mais complexa que a interface de discos, mas vai explicar isso pro fulano lá. Meus sinceros votos de boa sorte a ele.

Vou dizer que o nível da turma era médio. Bom, eu já lí o livro do Rajeev algumas vezes e já tive a oportunidade de trabalhar com FSFs. Eu estava ciente que não ia desperdiçar esta oportunidade de estar lá aprendendo coisas que um livro poderia me ensinar, mas não foi bem assim que uma parte do grupo pensou. Talvez eles foram pensando que seria fácil. Era engraçado quando tínhamos nossos Coffe-Breaks e eles comentavam que o assunto era muito profundo e com muitos detalhes. Sem dúvida que é! Alguns deles nunca tiveram contato com FSD antes. Posso dizer que aproveitou bem o curso quem já teve contato com o assunto e pôde desfrutar dos detalhes de interação entre o FSD e outros componentes do sistema como o Cache Manager, Memory Manager ou mesmo o Lan Manager Server. Teve gente que ficou meio que travando nos comentários de IoMarkIrpPending e Completion Routines. Fala sério! Não que este assunto seja trivial, mas precisava deixar para aprender isso em um seminário de FSD?

Tinha gente muito boa lá também. Perguntas e discussões faziam Tony abrir os fontes do FASTFAT, CDFS ou do RDR para mostrar como as coisas são implementadas no mundo real. E eu achei que era só a referência que considerava fonte de exemplo como parte da documentação. Você já procurou alguma informação sobre IRP_MN_MDL na referência? Bom, consegui encontrar uma pista na parte que fala sobre IRP_MJ_READ, onde eles listam esta entre outras opções e dizem:

“For more information about handling this IRP, study the CDFS and FASTFAT samples that are included in the Windows Driver Kit (WDK).”

Segundo Tony, desenvolver um FSD requer muito conhecimento e experiência, mas ao contrário que muitos pensam, desenvolver filtros é ainda pior. Todos começam com a falsa impressão de que é necessário alterar apenas uma pequena parte do filtro de exemplo do WDK (SFilter) que já estaria tudo bem. Mas um efeito colateral acaba exigindo mais uma alteração aqui, outra alí, e quando se percebe, temos uma complexidade maior que a de um projeto de FSD. Um argumento forte que ele usou foi que quando você implementa um FSD, você sabe de tudo que acontece, mas quando você desenvolve um filtro, você está na interface de duas caixas pretas, o Sistema Operacional e o FSD, e qualquer alteração de comportamento gerada pelo seu filtro pode gerar as mais estranhas, intrigantes e inesperadas situações a serem depuradas em ambas as caixas pretas.

A OSR nos forneceu um fichário com todos os PPT’s utilizados no seminário, também nos deu uma maleta da OSR, uma edição da NT Insider e para a surpresa de alguns, uma mola maluca. Uma mola maluca? Bom, resumidamente é uma mola, só que maluca.

Se quiser saber mais sobre File System Drivers, uma excelente fonte de informação são as listas de discussões da OSR. Vale a pena dar uma olhada. Obviamente vou comentar mais sobre este assunto por aqui.

Até a próxima. 🙂

2 Responses to “E aí? Deu Boston?”

  1. Blogger Alberto Fa31ano says:

    Legal cara; este tipo de empreitada a gente nunca esquece!
    Livros são livros, cursos são cursos; penso que para o domínio de um assunto, estas duas modalidades de estudo se complementam e é sempre bom ampliar o network participando de eventos com instrutores altamente gabaritados.
    Espero que que você compartilhe muita coisa que você viu no curso aqui no seu blog…

    []s++;

    • Olá Alberto,

      Não se preocupe quanto a compartilhar conhecimento. Tenho tentado fazer isso (quando o tempo me permite) a algum tempo já. Já comentei que as vezes é difícil falar do difícil sem passar pelo fácil, mas acredito que cada tópico pode ter seu público alvo. Alguns tópicos podem parecer complicados e até inúteis quanto a File System, mas podemos pensar que: Muitas peças inúteis montam uma grande máquina.

      []s.

Deixe um comentário