As tarefas a serem executadas ao longo da disciplina deverão estar adequadas aos perfis e interesses dos estudantes. O material que temos disponível na Internet sobre o tema da disciplina é riquíssimo e você será protagonista do seu processo de aprendizagem. Utilize as recomendações a seguir como base e escolha vídeos/textos para analisar durantes as próximas duas semanas.
O próximo relatório será um resumo e visão crítica do material analisado, podendo ser uma entrega individual ou em grupo. O formulário estará disponível em breve no Google Classroom. Note que suas respostas serão úteis não só para documentar o seu aprendizado, mas também para o aprimoramento deste guia de referências.
Se você classificou sua base teórica como Fraca ou Ausente, pode ser uma boa ideia investir um tempo para o entendimento de conceitos básicos. Você pode começar
pelas aulas da UNIVESP
Curso de Sistemas Operacionais - Prof. Jó Ueyama ou
pela leitura dos capítulos iniciais de um dos livros indicados, como o
A. Silberschatz, P. Galvin, G. Gagne, Operating Systems Concepts, 10th edition, Wiley, 2018
Se você considera que tem bons conhecimentos, mas precisa de uma pequena revisão, pode seguir para as próximas etapas e deixar para fazer um estudo mais aprofundado do subtema específico que será abordado no seu projeto.
Se sua base é Muito boa ou Excelente: vamos estudar as comunidades e o código!
Para ter sucesso em uma comunidade de desenvolvimento de software, não basta entender apenas os detalhes técnicos. É importante entender tambĂ©m a dinâmica de desenvolvimento, o poder associado aos grandes projetos, as influências das grandes empresas, as relações de hierarquia, etc. Tudo isso sem esquecer de aspectos éticos e dos direitos dos usuários.
Free Software, Free Society, TEDxGeneva
Richard Stallman fez inúmeras palestras ao redor do mundo explicando os conceitos de Software Livre. Indicada acima, temos uma palestra curta, clara e objetiva, feita no formado TEDxTalk e com legendas em Português.
Se você tiver curiosidade para ver como foi a palestra dele no Ciclo Básico da Unicamp em 2017, veja: Parte I, Parte II e Parte III. Repare na aglomeração em períodos pré-COVID.
SECOMP 2020: Open Source: o novo normal
Gustavo Padovan, ex-aluno do IC-UNICAMP, conta um pouco sobre sua trajetória desde o primeiro patch em uma disciplina de Sistemas Operacionais até ser sócio e líder estratégico na Collabora e um dos idealizadores da conferência linuxdev-br. Ele mostra um panorama bastante atual e um contexto mais amplo das comunidades Open Source.
Documentário antigo (2001), mas que apresenta vários pontos interessantes da história do movimento Software Livre, da iniciativa Open Source e do Linux.
Já conhece bem estes conceitos e está interessado em se aprofundar? Gostou do tema "Impactos sociais/políticos do uso de Software Livre"? Procure um texto/vídeo mais avançado sobre o assunto e faça a sua análise.
Se você ainda não teve nenhum ou pouquíssimo contato com o código, sugiro o experimento inicial proposto pelo LKCamp. É provável que tenhamos uma participação especial de um membro deste grupo no horário da disciplina. Aguarde!
Se você gostaria de fazer um miniexperimento mais elaborado, sugiro a escrita de um pseudo device driver, como o descrito em Linux Device Drivers.
Outra opção para guiar os experimentos iniciais é este curso gratuito da Linux Foundation Training: A Beginners Guide to Linux Kernel Development.
Já fez experimentos deste porte e gostaria de saber um pouco mais sobre o ciclo de desenvolvimento do Kernel? Veja esta palestra do Gustavo Padovan em 2016 no FISL 17. Talvez o Linus Torvalds tenha perdido um pouco do seu poder desde então... se tiver interesse pesquise um pouco mais sobre o assunto.
A maior parte dos alunos matriculados indicou familiaridade com os conceitos de sistemas de controle de versões, em particular com o git. Se você nunca usou, indico a princípio o git tutorial do tutorialspoint, mas pretendo colocar outras referências aqui em breve...
Você sabia que o git foi idealizado pelo Linus Torvalds em 2005 para auxiliar o desenvolvimento do Kernel Linux? E foi o próprio Linus que escreveu a primeira versão deste software? Se quiser conhecer um pouco mais sobre esta história, veja o artigo The History of Git: The Road to Domination in Software Version Control.
Se o seu projeto inclui um experimento com o Kernel Linux e a declaração a seguir parece grego para você, pode ser interessante investir em aprender um pouco mais sobre esta linguagem.
struct file_operations {
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
/* ... */
}
Você sabia que o Kernel é escrito em C mas se beneficia dos conceitos de orientação a objetos? Você acha que códigos que contenham goto são de baixa qualidade? Pesquise um pouco sobre Design Patterns no Kernel Linux. Em particular, você pode ler sobre Object-oriented design patterns in the kernel.
Já tem uma boa base para realizar o projeto, mas não tem nenhuma ideia? Veja algumas conferências da área para saber sobre problemas e propostas recentes:
Muitas pesquisas científicas são feitas utilizando o Kernel Linux. Veja, por exemplos, artigos e vídeos publicados na Usenix.
Tem mais alguma referência interessante ou crítica sobre o material apresentado? Coloque no mural do Classroom que depois eu atualizo aqui...