TempOS: faça seu próprio sistema operacional à mão, e do zero! Renê de Souza Pinto Instituto de Ciências Matemáticas e de Computação - ICMC Universidade de São Paulo - USP - São Carlos Abril / 2013 Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 1 / 32 Agenda 1 Motivação Disciplinas de SO 2 Trabalhos Relacionados 3 Projeto TempOS 4 A Plataforma TempOS Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 2 / 32 Origem Curiosidade em desvendar o funcionamento do PC. Engenharia de computação: O curso abrange desde o mais baixo nı́vel do hardware (construção de transistores) até o mais alto nı́vel de software com a abstração das linguagens de alto nı́vel. Sistema Operacional (SO): Elo entre Hardware e Software. Implementar um SO possibilita entender como a teoria é realizada na prática, compreender efetivamente esse elo. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 3 / 32 Motivação Décadas de 1960/70: Intenso desenvolvimento de SO na indústria. Décadas de 1980/90: Hegemonia de produtos proprietários. Disciplina de SO: Caráter de fundamentação teórica. Décadas de 2000/10: Evolução de arquiteturas embarcadas capazes de executar Sistemas Operacionais sofisticados (como o Linux). Demanda de profissionais para desenvolvimento de SO. Disciplina de SO: Caráter de fundamentação teórica + Capacitação técnica para atuação na área Cenário propı́cio: Proliferação de sistemas embarcados em aplicações de consumo. Proliferação de sistemas embarcados crı́ticos (novos desafios). Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 4 / 32 Motivação O que é um Sistema Operacional? Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 5 / 32 Motivação Necessidade de uma ferramenta de estudo factı́vel aos alunos (sistemas muito complexos são difı́ceis de se estudar). Exame das ementas dos cursos de SO em diversas universidades no Brasil1 e no exterior mostrou que geralmente um curso de SO é dividido em duas disciplinas: SOI e SOII. 1 USP, UNICAMP, UFSCAR, UFES, entre outras. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 6 / 32 Trabalhos Relacionados Nachos[2] http://www.cs.washington.edu/homes/tom/nachos/. System/161[3] - http://www.eecs.harvard.edu/~syrah/os161/. GeekOS - http://code.google.com/p/geekos/. Minix[4] - http://www.minix3.org/. Xinu. Topsy. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 7 / 32 Nachos Desenvolvido pela Universidade de Berkeley, CA. O núcleo do Nachos executa em cima de outro Sistema Operacional (um SO “hospedeiro”), simulando uma arquitetura MIPS R2000/3000. Caso o SO hospedeiro seja de uma arquitetura diferente (IA-32, por exemplo), é necessário fazer uma compilação cruzada para compilar os aplicativos que serão executados no simulador do Nachos. Na utilização descrita, os estudantes recebem apenas um esqueleto do código, e durante as práticas vão desenvolvendo as funcionalidades não implementadas. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 8 / 32 System/161, OS/161 Desenvolvido pela Universidade de Harvard. Fornece um simulador para uma arquitetura de hardware (MIPS) e um Sistema Operacional para executar neste simulador (OS/161). Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 9 / 32 GeekOS Desenvolvido pela Universidade Marryland, College Park. Suporta arquitetura IA-32 (x86), podendo executar tanto no hardware real quanto em emuladores (bochs). É basicamente um esqueleto de SO, nas disciplinas de laboratório os alunos desenvolvem funcionalidades através de práticas individuais durante o perı́odo de um semestre. A ultima versão já deixou de ter o pretexto exclusivamente educacional. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 10 / 32 Minix Escrito por Andrew S. Tanenbaum entre 1984 e 1987. Projeto mais notável na área. Clássico livro texto “Operating Systems Design and Implementation” que aborda o Minix. Versão 3 do Minix deixou de ter intuito educacional. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 11 / 32 Projeto TempOS Objetivo: Elaborar uma plataforma para ensino e treinamento em desenvolvimento de Sistemas Operacionais. Metodologia: Abordagem de aprendizado baseado em projeto. Desenvolvimento integral de um SO simples, porém funcional. Plataforma constituı́da de uma especificação de arquitetura de SO com estrutura de implementação simples (na medida do possı́vel). Roteiro baseado em módulos teóricos sequencialmente conectados com a arquitetura e implementação. Sintetizar o material para que seja viável sua utilização em cursos universitários. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 12 / 32 Projeto TempOS No que o projeto proposto difere dos trabalhos relacionados? Plataforma de ensino e treinamento voltada à capacitação para Desenvolvimento de SO. Metodologia baseada em projeto e implementação completa de um SO simples, porém funcional. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 13 / 32 Projeto TempOS Por que não utilizar projetos já existentes como base, por exemplo, kernel Linux ou Minix? Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 14 / 32 Projeto TempOS Sistemas Operacionais atuais (Minix, kernel Linux) possuem códigos fortemente acoplados com diversos conceitos teóricos: Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 15 / 32 Projeto TempOS O objetivo é fornecer um código sequenciado com os conceitos: Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 16 / 32 Plataforma de Ensino A Plataforma TempOS Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 17 / 32 TempOS Plataforma TempOS (lê-se têm-pos), composta por: TempOS: TempOS is an educational and multi purpose Operating System, é o SO exemplo da plataforma. Especificação da Arquitetura do SO: Segue o modelo do Unix. Kernel monolı́tico. Padrão POSIX: chamadas ao sistema, aplicativos de usuário, Shell, etc. O foco da plataforma é o desenvolvimento do kernel. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 18 / 32 TempOS Roteiro de referência (passo a passo) para a implementação. Vasta documentação do kernel, definição da API completa de todas as funções auto-gerada através da ferramenta doxygen, o que permite sincronismo com o código fonte mais atual. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 19 / 32 TempOS - Arquitetura Geral Aplicações Usuário Sistema Gráfico Modo Usuário Modo Kernel Shell ls cp who rm ..... Bibliotecas chamadas ao sistema KERNEL Figura : Arquitetura TempOS (monolı́tica): Visão Geral. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 20 / 32 TempOS - Arquitetura do Kernel Figura : TempOS: Arquitetura do Kernel. Adaptado de Bach[1]. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 21 / 32 TempOS - Arquitetura do Kernel Composta por seis módulos principais: Interface de Chamadas ao Sistema Camada de Sistemas de Arquivo Virtual (VFS) Cache de Blocos Drivers de Dispositivo Subsistema de Controle de Processos Controle de Hardware Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 22 / 32 TempOS TempOS: TempOS is an educational and multi purpose Operating System. Sı́tio do projeto: http://tempos-project.org. Escrito exclusivamente em Linguagem C e Assembly (sintaxe AT&T). Desenvolvido totalmente no GNU/Linux e com ferramentas livres. Possui um sofisticado sistema de compilação, pode ser compilado e emulado sem a necessidade de permissões de super-usuário (root). Executa em um PC comum e em emuladores (qemu). Licenciado sob a GNU GPLv2 - GNU General Public License, versão 2. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 23 / 32 TempOS: Mascote Mascote: Figura : Astolfo, mascote oficial do TempOS. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 24 / 32 TempOS: Mascote Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 25 / 32 TempOS Segue a especificação de Multiboot (bootável pelo GRUB). Funções da Biblioteca C implementadas (strcat, memcpy, printf, etc). Tipos de dados padronizados (uint32 t, ulong t, etc). Paginamento de memória permitindo implementação de swap. Realocação dinâmica do Kernel (0-3GB para usuário / 3-4GB para Kernel). Sistema de compartilhamento de IRQs. Drivers para Video (modo texto), Teclado, Temporizador (PIT) e Controlador de Interrupções (PIC). Mecanismo de chamadas ao sistema. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 26 / 32 TempOS Gravação e leitura de setores do disco pelo driver PATA (IDE). Leitura de partições primárias e estendidas do disco. Sistema de Arquivos EXT2: Suporte parcial (ainda somente leitura). Cache de blocos do disco. Suporte completo à Threads de Kernel e processos de usuário. Escalonador de processos: Polı́tica round-robin. Camada VFS (Virtual File System) com suporte parcial ao EXT2. Código integralmente documentado com doxygen. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 27 / 32 Resultados: TempOS - Executando no QEMU Figura : TempOS executando no QEMU. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 28 / 32 Resultados: TempOS - Executando em um notebook Figura : TempOS executando em um hardware real. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 29 / 32 Obrigado. Dúvidas? Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 30 / 32 Referências I Maurice J. Bach. The design of the Unix Operating System. Prentice-Hall, 1986. W.A. Christopher, S.J. Procter, and T.E. Anderson. The Nachos instructional operating system. In Proceedings of the USENIX Winter 1993 Conference Proceedings on USENIX Winter 1993 Conference Proceedings, page 4. Usenix Association, 1993. D.A. Holland, A.T. Lim, and M.I. Seltzer. A new instructional operating system. In Proceedings of the 33rd SIGCSE technical symposium on Computer science education, pages 111–115. ACM, 2002. A.S. Tanenbaum. A UNIX clone with source code for operating systems courses. ACM SIGOPS Operating Systems Review, 21(1):29, 1987. Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 31 / 32 Referências II Renê de Souza Pinto ([email protected]) TempOS Abril / 2013 32 / 32