TempOS: faça seu próprio sistema operacional à mão, e do...

32
TempOS: fa¸ca seu pr´ oprio sistema operacional ` a m˜ ao, e do zero! Renˆ e de Souza Pinto Instituto de Ciˆ encias Matem´ aticas e de Computa¸ ao - ICMC Universidade de S˜ ao Paulo - USP - S˜ ao Carlos Abril / 2013 Renˆ e de Souza Pinto ([email protected]) TempOS Abril / 2013 1 / 32

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: Mascote

Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 25 / 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

Obrigado. Duvidas?

Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 30 / 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

Referencias II

Rene de Souza Pinto ([email protected]) TempOS Abril / 2013 32 / 32