Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
| ppos-v2:start [2026/07/29 18:06] – maziero | ppos-v2:start [2026/08/27 10:57] (atual) – [Entregas] maziero | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | ===== Ping-Pong OS - v2 ===== | ||
| + | |||
| + | O **Sistema Operacional Ping-Pong**, | ||
| + | |||
| + | Esta página descreve a versão 2 do PPOS. A versão 1 pode ser encontrada [[so: | ||
| + | |||
| + | Ao contrário de projetos similares, o PPOS executa inteiramente dentro de um processo do Linux. A maior vantagem em emular um SO dentro de um processo em modo usuário é a possibilidade de usar ferramentas padrão de depuração, | ||
| + | |||
| + | A versão atual do PPOS suporta múltiplas tarefas com preempção por tempo, escalonador baseado em prioridades, | ||
| + | |||
| + | O PPOS segue a estrutura típica de um RTOS (// | ||
| + | |||
| + | <note tip> | ||
| + | Eu estou preparando uma lista dos **cursos que usam este projeto**. Se você (ou seu professor) usa este projeto em suas aulas, peço a gentileza de me enviar um [[mailto: | ||
| + | |||
| + | Obrigado! | ||
| + | </ | ||
| + | |||
| + | ==== Projetos ==== | ||
| + | |||
| + | O desenvolvimento do PPOS está organizado em projetos incrementais relativamente simples, que visam implementar cada uma das funcionalidades do sistema, em sequência. Cada projeto geralmente depende das funcionalidades implementadas nos projetos anteriores. | ||
| + | |||
| + | Os projetos atualmente definidos são: | ||
| + | |||
| + | * [[Fila genérica]] | ||
| + | * [[Mapa genérico]] | ||
| + | * [[Trocas de contexto]] | ||
| + | * P1: [[Tarefas cooperativas]] | ||
| + | * P2: [[Despachante de tarefas]] | ||
| + | * P3: [[Escalonador por prioridades]] | ||
| + | * P4: [[Preempção por tempo]] | ||
| + | * P5: [[Relógio e contabilização]] | ||
| + | * P6: [[Tarefas que esperam]] | ||
| + | * P7: [[Tarefas que dormem]] | ||
| + | * P8: [[Spinlocks e semáforos]] | ||
| + | * P9: [[Sistema produtor-consumidor]] | ||
| + | * P10: [[Filas de mensagens]] | ||
| + | * P11: [[Alocador de memória]] | ||
| + | * P12: [[Acesso ao disco]] | ||
| + | * P13: [[Escalonador de disco]] | ||
| + | * P14: [[Cache de blocos]] | ||
| + | |||
| + | Projetos em estruturação: | ||
| + | |||
| + | * [[Gestão de inodes]] | ||
| + | * [[Diretórios]] | ||
| + | * [[Nomes de arquivos]] | ||
| + | * [[Acesso à rede]] | ||
| + | * [[Acesso ao terminal]] | ||
| + | * [[Execução nativa em Risc-V]] | ||
| + | |||
| + | ==== Código-fonte ==== | ||
| + | |||
| + | O {{ ppos-aluno.tgz |código-fonte do PPOS}} versão 2 tem a seguinte estrutura: | ||
| + | |||
| + | < | ||
| + | ppos/ | ||
| + | hardware/ | ||
| + | disk* : disco rígido | ||
| + | cpu.* : operações da CPU/chipset | ||
| + | serial.* | ||
| + | makefile | ||
| + | kernel/ | ||
| + | ppos.* | ||
| + | macros.h | ||
| + | ctx.* : trocas de contexto (assembly e C) | ||
| + | tcb.h : task control block (descritor de tarefa) | ||
| + | task.* | ||
| + | dispatcher.* : despachante de tarefas | ||
| + | scheduler.* | ||
| + | time.* | ||
| + | semaphore.* | ||
| + | mqueue.* | ||
| + | memory.* | ||
| + | block.* | ||
| + | syscall.h | ||
| + | makefile | ||
| + | lib/ | ||
| + | map.* : biblioteca de mapas genéricos | ||
| + | queue.* | ||
| + | pplibc.* | ||
| + | makefile | ||
| + | test/ | ||
| + | pingpong-*.c | ||
| + | pingpong-*.txt : saídas esperadas dos testes | ||
| + | makefile | ||
| + | makefile | ||
| + | </ | ||
| + | |||
| + | <note warning> | ||
| + | Alguns arquivos (sobretudo os // | ||
| + | </ | ||
| + | |||
| + | ==== Entregas ==== | ||
| + | |||
| + | Instruções para a entrega dos projetos: | ||
| + | |||
| + | **Como**: execute '' | ||
| + | |||
| + | **Onde**: na página Moodle da disciplina | ||
| + | |||
| + | **Quem**: apenas **um aluno** por grupo deve entregar. Para identificar os autores, inclua **comentários no início** de cada arquivo criado ou alterado pelos alunos, seguindo este modelo: | ||
| + | |||
| + | // GRR12345678 Homer Simpson | ||
| + | // GRR12345679 Marge Simpson | ||