MC104 - SISTEMAS OPERACIONAIS

Projetos da Disciplina - 2º Semestre 2002

 

Descrição do Relatório Técnico

Cada projeto constitui uma atividade que precisa ser completada através de duas tarefas básicas. A primeira se refere à compilação e entendimento de um programa exemplo que trata de assuntos cobertos em sala de aula e na teoria. A segunda se refere à implementação de uma modificação sobre o exemplo. Cada projeto deve ser acompanhado de um relatório (conforme instruções) no formato de Artigo Técnico.

O relatório redigido na forma de um Artigo Técnico (pitch 10 ou 11; espaçamento simples; margens laterais, superior e inferior de 2cm e máximo de 20 pgs. não incluindo o programa fonte) deverá conter os tópicos abaixo discriminados:

Seções poderão ser adicionadas quando necessárias, embora o formato acima descrito seja suficiente. A descrição deve focar nas informações coletadas pelo estudante quando da execução do programa exemplo e do modificado, bem como de uma análise detalhada dos resultados. As lições aprendidas durante o experimento deverão ser incluídas na Conclusão.

 

Entrega do Relatório Técnico

A entrega de cada Projeto deve ocorrer segundo o cronograma previamente estabelecido para cada um e se dará através do Relatório Técnico impresso e de um e-mail contendo informações adicionais em um arquivo "tar.gz" ou "tgz". Este arquivo contempla informações imprescindíveis tais como:

A falta de qualquer elemento, tais como: relatório e e-mail com informações adicionais do projeto, bem como entrega/envio dos mesmos após a data previamente estabelecida implica na perda de 40% da nota correspondente. Somente duas exceções serão consideradas: o fechamento do laboratório durante o período de realização do experimento; e problema de doença avisado com antecedência mínima de dois dias antes da data da entrega.

Laboratório cheio, quedas de máquinas, falta de linha telefônica ou problemas pessoais não serão aceitos como desculpas por atrasos. Por isso, recomenda-se fortemente que o início do trabalho ocorra o mais rapidamente possível.

 

1º Projeto - Ambiente com Suporte à Multiprogramação

Este Projeto explora dois assuntos importantes em Sistemas Operacionais. O primeiro é o da criação de processos. O segundo está relacionado ao conceito de tempo e engloba vários fatores importantes que precisam ser percebidos sobre a duração da execução de um programa em um ambiente multitarefa.

 

2º Projeto - Conceito de Tempo em "Real-Time Systems"

A grandeza tempo exerce um papel crítico em todos os experimentos que estão por vir, assim, uma breve apresentação de tempo real se faz necessária. Isto pode ser constatado pela detalhes contemplados no projeto anterior. Este projeto tem por objetivo dar-lhes o conhecimento necessários para desenvolvimento de experimentos que exijam grandezas de tempo real bem como irá introduzir um importante conceito de tempo real, "time".

 

3º Projeto - Comunicação entre Processos: Filas de Mensagens

IPC (Inter-Process Communication), ou comunicação entre processos, consiste de um conjunto de mecanismos que possibilitam processos no Sistema Operacional Unix se comunicarem. Há uma variedade relativamente grande de mecanismos para sincronização e comunicações entre processos. Dentre as variantes, destacamos: filas de mensagens, compartilhamento de memória, pipes, semáforos e sockets. Vamos explorar neste projeto a comunicação entre processos através das filas de mensagens com auxílio de primitivas suportadas pelo UNIX.

 

4º Projeto - Comunicação entre Processos: Memória Compartilhada e Sinais

IPC (Inter-Process Communication), ou comunicação entre processos, consiste de um conjunto de mecanismos que possibilitam processos no Sistema Operacional Unix se comunicarem. Há uma variedade relativamente grande de mecanismos para sincronização e comunicações entre processos. Dentre as variantes, destacamos: filas de mensagens, compartilhamento de memória, pipes, semáforos e sockets. Vamos explorar neste projeto a comunicação entre processos através do compartilhamento de memória com auxílio de primitivas suportadas pelo UNIX.

 

5º Projeto - Sincronização entre Processos: Solução de Dekker e Peterson

Este Projeto tem por objetivo explorar 02 mecanismos que possibilitam a sincronização entre processos: os Algoritmos de Dekker e de Peterson. Ambos algoritmos constituem mecanismos de Espera Ocupada, ou seja, os processos estão a todo momento verificando se o recurso solicitado está disponível. Mecanismos contemplando Espera Bloqueada podem também ser utilizados e, para isso, necessitamos de mecanismos de Comunicação entre Processos (IPC - Inter Process Communication).

 

6º Projeto - Sincronização entre Processos: Mecanismo de Semáforos

IPC (Inter-Process Communication), ou comunicação entre processos, consiste de um conjunto de mecanismos que possibilitam processos no Sistema Operacional Unix se comunicarem. Há uma variedade relativamente grande de mecanismos para sincronização e comunicações entre processos. Dentre as variantes, destacamos: filas de mensagens, compartilhamento de memória, pipes, semáforos e sockets. Vamos explorar neste projeto o uso dos semáforos através de primitivas suportadas pelo UNIX.

 

7º Projeto - Scheduling, Priorities, and Priority Inversion

Escalonamento é o termo utilizado para referenciar o método pelo qual processos são executados no Sistema UNIX. Neste experimento, os métodos pelos quais processos podem ser escalonados são examinados e alterados com manutenção ou não da prioridade atribuída aos processos. Adicionalmente, algumas situações "raras" do escalonamento serão evidenciadas. O programa Exemplo contempla uma dessas situações raras, a inversão de prioridade.

 

8º Projeto - Interfacing with an External Device

Um aspecto importante dos Sistemas de Tempo Real é que eles interagem com o mundo exterior e, assim, necessitam de processar, armazenar, mostrar e analisar informações recebidas dos dispositivos externos. Esta interação gera um novo conjunto de problemas, dentre eles: como se comunicar com dispositivos externos, que formato de dados deve ser lido, que controle o dispositivo aceita, etc. Neste projeto enfatizamos a troca de informações com um destes dispositivos, a porta serial presente na grande maioria de microcomputadores.

 

9º Projeto - Cliente/Servidor p/ Base de Dados via Interface Serial

O Modelo Cliente/Servidor serve de base para o desenvolvimento de serviços no âmbito dos Sistemas Operacionais de Rede. O papel básico do servidor consiste em atender vários clientes que desejam requisitar serviços sobre um recurso compartilhado gerenciado pelo servidor. Neste projeto enfatizamos a troca de informações entre dois processos desenvolvido segundo o Modelo Cliente/Servidor para manutenção e gerenciamento de uma base de dados. Tanto o cliente quanto o servidor são instanciados na mesma máquina e devem se comunicar através da porta serial.

 

10º Projeto - Cliente/Servidor p/ Base de Dados com API de Sockets

O Modelo Cliente/Servidor serve de base para o desenvolvimento de serviços no âmbito dos Sistemas Operacionais de Rede. O papel básico do servidor consiste em atender vários clientes que desejam requisitar serviços sobre um recurso compartilhado gerenciado pelo servidor. Neste projeto enfatizamos a troca de informações entre dois processos desenvolvido segundo o Modelo Cliente/Servidor para manutenção e gerenciamento de uma base de dados. Tanto o cliente quanto o servidor são instanciados na mesma máquina e devem se comunicar através da API (Application Programming Interface) de Sockets.

 

11º e 12º Projetos - Cancelados para dar lugar aos Seminários

 

Seminários - Tópicos Especiais de Sistemas Operacionais

Para concluir o tema abordado ao longo do Curso, propõe-se um conjunto de seminários acerca de temas relacionados à disciplina e que explorem aspectos não contemplados na mesma. Dentre os temas merecem destaque: Processos no Windows, Gerenciamento de Memória no Windows, Sistemas de Arquivo e Entrada/Saída no Windows, Introdução aos Sistemas Distribuídos, Segurança em Sistemas Operacionais e Escalonamento em Sistemas Multiprocessados e de Tempo Real.

 


Luís Fernando Faina
Last modified: Tue Dec 17 12:44:51 2002