TempOS: faça seu próprio sistema operacional à mão, e do...
Transcript of TempOS: faça seu próprio sistema operacional à mão, e do...
TempOS: faca seu proprio sistema operacional a mao, edo zero!
Rene de Souza Pinto
Instituto de Ciencias Matematicas e de Computacao - ICMCUniversidade de Sao Paulo - USP - Sao Carlos
Abril / 2013
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 1 / 32
Agenda
1 MotivacaoDisciplinas de SO
2 Trabalhos Relacionados
3 Projeto TempOS
4 A Plataforma TempOS
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 2 / 32
Origem
Curiosidade em desvendar o funcionamento do PC.
Engenharia de computacao: O curso abrange desde o mais baixo nıveldo hardware (construcao de transistores) ate o mais alto nıvel desoftware com a abstracao das linguagens de alto nıvel.
Sistema Operacional (SO): Elo entre Hardware e Software.
Implementar um SO possibilita entender como a teoria e realizada napratica, compreender efetivamente esse elo.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 3 / 32
Motivacao
Decadas de 1960/70: Intenso desenvolvimento de SO na industria.
Decadas de 1980/90: Hegemonia de produtos proprietarios.
Disciplina de SO: Carater de fundamentacao teorica.
Decadas de 2000/10: Evolucao de arquiteturas embarcadas capazesde executar Sistemas Operacionais sofisticados (como o Linux).
Demanda de profissionais para desenvolvimento de SO.
Disciplina de SO:
Carater de fundamentacao teorica+ Capacitacao tecnica para atuacao na area
Cenario propıcio:
Proliferacao de sistemas embarcados em aplicacoes de consumo.Proliferacao de sistemas embarcados crıticos (novos desafios).
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 4 / 32
Motivacao
O que e um Sistema Operacional?
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 5 / 32
Motivacao
Necessidade de uma ferramenta de estudo factıvel aos alunos(sistemas muito complexos sao difıceis de se estudar).
Exame das ementas dos cursos de SO em diversas universidades noBrasil1 e no exterior mostrou que geralmente um curso de SO edividido em duas disciplinas: SOI e SOII.
1USP, UNICAMP, UFSCAR, UFES, entre outras.
Rene 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.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 7 / 32
Nachos
Desenvolvido pela Universidade de Berkeley, CA.
O nucleo do Nachos executa em cima de outro Sistema Operacional(um SO “hospedeiro”), simulando uma arquitetura MIPSR2000/3000. Caso o SO hospedeiro seja de uma arquitetura diferente(IA-32, por exemplo), e necessario fazer uma compilacao cruzada paracompilar os aplicativos que serao executados no simulador do Nachos.
Na utilizacao descrita, os estudantes recebem apenas um esqueleto docodigo, e durante as praticas vao desenvolvendo as funcionalidadesnao implementadas.
Rene 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) eum Sistema Operacional para executar neste simulador (OS/161).
Rene 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 hardwarereal quanto em emuladores (bochs).
E basicamente um esqueleto de SO, nas disciplinas de laboratorio osalunos desenvolvem funcionalidades atraves de praticas individuaisdurante o perıodo de um semestre.
A ultima versao ja deixou de ter o pretexto exclusivamenteeducacional.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 10 / 32
Minix
Escrito por Andrew S. Tanenbaum entre 1984 e 1987.
Projeto mais notavel na area.
Classico livro texto “Operating Systems Design and Implementation”que aborda o Minix.
Versao 3 do Minix deixou de ter intuito educacional.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 11 / 32
Projeto TempOS
Objetivo:
Elaborar uma plataforma para ensino e treinamento emdesenvolvimento de Sistemas Operacionais.
Metodologia:
Abordagem de aprendizado baseado em projeto.
Desenvolvimento integral de um SO simples, porem funcional.
Plataforma constituıda de uma especificacao de arquitetura de SO comestrutura de implementacao simples (na medida do possıvel).Roteiro baseado em modulos teoricos sequencialmente conectados coma arquitetura e implementacao.Sintetizar o material para que seja viavel sua utilizacao em cursosuniversitarios.
Rene 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 a capacitacao paraDesenvolvimento de SO.
Metodologia baseada em projeto e implementacao completa de umSO simples, porem funcional.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 13 / 32
Projeto TempOS
Por que nao utilizar projetos ja existentes como base, por exemplo, kernelLinux ou Minix?
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 14 / 32
Projeto TempOS
Sistemas Operacionais atuais (Minix, kernel Linux) possuem codigosfortemente acoplados com diversos conceitos teoricos:
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 15 / 32
Projeto TempOS
O objetivo e fornecer um codigo sequenciado com os conceitos:
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 16 / 32
Plataforma de Ensino
A Plataforma TempOS
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 17 / 32
TempOS
Plataforma TempOS (le-se tem-pos), composta por:
TempOS: TempOS is an educational and multi purpose OperatingSystem, e o SO exemplo da plataforma.
Especificacao da Arquitetura do SO:
Segue o modelo do Unix.Kernel monolıtico.Padrao POSIX: chamadas ao sistema, aplicativos de usuario, Shell, etc.
O foco da plataforma e o desenvolvimento do kernel.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 18 / 32
TempOS
Roteiro de referencia (passo a passo) para a implementacao.
Vasta documentacao do kernel, definicao da API completa de todasas funcoes auto-gerada atraves da ferramenta doxygen, o que permitesincronismo com o codigo fonte mais atual.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 19 / 32
TempOS - Arquitetura Geral
chamadas ao sistemachamadas ao sistema
KERNELKERNEL
BibliotecasBibliotecasAplic
açõ
es
Aplic
açõ
es
Modo Kernel
Modo Usuário
ShellShellSistema GráficoSistema Gráfico
ls cp who rm .....
UsuárioUsuário
Figura : Arquitetura TempOS (monolıtica): Visao Geral.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 20 / 32
TempOS - Arquitetura do Kernel
Figura : TempOS: Arquitetura do Kernel. Adaptado de Bach[1].
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 21 / 32
TempOS - Arquitetura do Kernel
Composta por seis modulos 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
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 22 / 32
TempOS
TempOS: TempOS is an educational and multi purpose OperatingSystem.
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 compilacao, pode ser compilado eemulado sem a necessidade de permissoes de super-usuario (root).
Executa em um PC comum e em emuladores (qemu).
Licenciado sob a GNU GPLv2 - GNU General Public License, versao 2.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 23 / 32
TempOS: Mascote
Mascote:
Figura : Astolfo, mascote oficial do TempOS.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 24 / 32
TempOS
Segue a especificacao de Multiboot (bootavel pelo GRUB).
Funcoes da Biblioteca C implementadas (strcat, memcpy, printf, etc).
Tipos de dados padronizados (uint32 t, ulong t, etc).
Paginamento de memoria permitindo implementacao de swap.
Realocacao dinamica do Kernel (0-3GB para usuario / 3-4GB paraKernel).
Sistema de compartilhamento de IRQs.
Drivers para Video (modo texto), Teclado, Temporizador (PIT) eControlador de Interrupcoes (PIC).
Mecanismo de chamadas ao sistema.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 26 / 32
TempOS
Gravacao e leitura de setores do disco pelo driver PATA (IDE).
Leitura de particoes primarias e estendidas do disco.
Sistema de Arquivos EXT2: Suporte parcial (ainda somente leitura).
Cache de blocos do disco.
Suporte completo a Threads de Kernel e processos de usuario.
Escalonador de processos: Polıtica round-robin.
Camada VFS (Virtual File System) com suporte parcial ao EXT2.
Codigo integralmente documentado com doxygen.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 27 / 32
Resultados: TempOS - Executando no QEMU
Figura : TempOS executando no QEMU.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 28 / 32
Resultados: TempOS - Executando em um notebook
Figura : TempOS executando em um hardware real.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 29 / 32
Referencias 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 Proceedingson USENIX Winter 1993 Conference Proceedings, page 4. UsenixAssociation, 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 Computerscience 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.
Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 31 / 32