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

Propaganda
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
Download