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

Sistemas Operacionais II TrabalhoSO