USP – Universidade de São Paulo ICMC – Instituto de Ciências Matemáticas e de Computação Sistemas Operacionais II Prof. Dr. Francisco José Monaco Renê de Souza Pinto TrabalhoSO Gabriel Garcia Bim - 5654318 Leandro de Goes Proença Júnior - 5654194 Marcos Vinicius Cracco Bozza - 5653940 Vinicius Bassani Peracini - 5654322 Introdução Neste trabalho para a disciplina de Sistemas Operacionais II foi desenvolvido um Sistema Operacional em modo protegido baseado nas aulas e código fonte do TempOS, de Renê de Souza Pinto. A partir dos conceitos básicos apresentados o grupo estendeu as funcionalidades do Sistema, implementando o gerenciamento de memória, drivers de teclado, vídeo e outras funções para o bom funcionamento do código e para a demonstração das funcionalidades aqui citadas. Comandos Foram implementados alguns comandos para demonstrar a implementação de determinadas funcionalidades do Sistema Operacional: edit - quando este comando é executado abre-se uma espécie de editor de texto na tela onde o usuário poderá digitar algum texto e este será exibido na tela mem - este comando exibe a quantidade de memória disponível e a quantidade de memória total do Sistema Operacional alloc - este comando aloca 5 Megabytes na memória do Sistema Operacional ALT + Fn - Tem o objetivo de alterar o tty (teletypewriter), permitindo que o usuário obtenha um novo terminal, porém como o Sistema Operacional ainda não implementa um sistema multi-tarefa este comando serve apenas para demonstrar que o terminal anterior foi gravado na memória para depois ser restaurado shutdown - este comando tem como objetivo de preparar o computador para ser desligado help - este comando tem o objetivo de mostrar os comandos aqui descritos para o usuário do Sistema Operacional Funcionalidades implementadas Gerenciamento de memória Para o gerenciamento de memória foi implementado o algoritmo de alocação first fit, no qual é mantida uma lista encadeada de blocos livres e quando uma alocação é feita a lista é percorrida procurando o primeiro bloco grande o suficiente para atender o pedido. Se o bloco encontrado for muito maior que o necessário ele é dividido e o restante é adicionado na lista de blocos livres. Driver de teclado A tecla acionada é capturada pelo driver de teclado implementado pelo grupo. Este driver reconhece a tecla apertada através de uma interrupção e de um scan code, e a converte em código ASCII para que possa ser escrita na memória de vídeo e exibida na tela. Driver de vídeo Foram implementadas no Sistema Operacional várias funções relativas ao vídeo no arquivo tty.c. Nesse arquivo foi definida uma struct para armazenamento das teclas pressionadas e que são mostradas na tela, desta forma pode-se trocar de channel sem que nenhuma informação seja perdida. Este channel possibilita abrir um outro terminal totalmente independente de outro terminal. Existem outras funções que foram implementadas, por exemplo, para mover o cursor para uma posição específica da tela, para escrever uma mensagem na tela (tty_write) e outras implementações para um bom funcionamento do código. String Foi criada a biblioteca string.h que implementa diversas funções para tratar strings como, por exemplo, funções para comparar uma string com a outra e para checar se um carácter é uma letra ou não.