===== PingPongOS ===== {{:so:ppos_apresentacao.mkv |Video explicativo}} Este projeto visa construir, de forma incremental, um pequeno sistema operacional didático. O sistema é construído inicialmente na forma de uma biblioteca de threads cooperativas dentro de um processo do sistema operacional real (Linux, MacOS ou outro Unix). O desenvolvimento é incremental, adicionando gradativamente funcionalidades como preempção, contabilização, semáforos, filas de mensagens e acesso a um disco virtual. Essa abordagem simplifica o desenvolvimento e depuração do núcleo, além de dispensar o uso de linguagem de máquina. A estrutura geral do código a ser desenvolvido é apresentada na figura abaixo. Os arquivos em azul são fixos (fornecidos pelo professor), enquanto os arquivos em verde devem ser desenvolvidos pelos alunos. {{ :so:ppos.png |PingPongOS source files structure}} Os sub-projetos desenvolvidos são: * [[Biblioteca de filas]] (warm-up) * [[Trocas de contexto]] * [[Gestão de tarefas]] * [[Dispatcher]] * [[Escalonador por prioridades]] * [[Preempção por tempo]] * [[Contabilização]] * [[Tarefa main]] * [[Tarefas suspensas]] * [[Tarefas dormindo]] * [[Semáforos]] * [[Uso de semáforos]] * [[Operador Barreira]] * [[Filas de mensagens]] * [[Gerente de disco]] * [[Escalonamento de disco]] * [[Sistema de arquivos]] * [[Alocação de memória]] * [[Gestão de terminal]] * [[Interface de rede]] * [[Execução em um hardware real]]