Sistemas Operacionais, 10 semestre/2004

Experimento # 7

Fontes e Executáveis do Winux

1. Introdução

Os experimentos anteriores devem ter permitido ao aluno familiarizar-se com a criação de processos, threads e mecanismos de IPC em ambiente Linux. Este experimento é bem diferente dos anteriores, pois envolve outro ambiente, o Windows, e um sistema operacional simulado, o Winux.

Deseja-se neste experimento que o aluno entre em contato com rotinas de um SO simplificado, as entenda, especifique, projete, desenvolva e teste mudanças nesse SO, além de estar trabalhando com a linguagem de programação Delphi.

Este exercício foi definido especialmente para as aulas de Sistemas Operacionais, na Faculdade de Engenharia de Computação, na PUC-Campinas, com a ajuda de bolsistas do Professor Ricardo Freitas.

2. Objetivos

A seguir estão os objetivos deste experimento com relação ao aluno:

·        Perceber que um SO é um conjunto de programas, com certo grau de dificuldade, porém programas como outros quaisquer.

·        Perceber que é capaz de fazer mudanças nos fontes de um SO.

·        Relembrar partes da matéria vista na teoria.

·        Entrar em contato com uma forma de desenvolver esforços de programação de maneira organizada.

·        Perceber o grau de dificuldade para se realizar manutenção de software.

·        Conhecer e utilizar a linguagem Delphi.

3. Teoria

A parte teórica deste experimento foi vista em sala de aula e diz respeito a:

 

·        Mecanismos para obtenção de exclusão mútua, mais especificamente, as primitivas SEND e RECEIVE.

·        Estratégias para escalonamento de processos, em especial a SJF (Shortest Job First).

·        Estratégias para substituição de páginas, em especial Segunda Chance.

 

Recomenda-se que os alunos utilizem as notas de aula e um dos livros referência para relembrar a parte teórica.

4. Resultado

Este experimento constitui uma atividade que precisa de ser completada através de duas tarefas básicas, que se referem ao entendimento e à modificação e compilação do Winux, o qual trata de assuntos relacionados com aqueles cobertos em sala de aula.

Este experimento deve ser acompanhado de um relatório com as seguintes partes obrigatórias:

Introdução, indicando, em não mais do que 20 linhas, quais os objetivos do experimento;

Especificação do que foi implementado;

Projeto do que foi implementado;

Plano de testes e resultados do que foi implementado.

Conclusão indicando o que foi aprendido com o experimento.

A entrega do trabalho deve ocorrer através do envio de um e-mail "Encaminhando programa 7", de acordo com o cronograma previamente estabelecido. A data e hora limites correspondem à segunda-feira às 24:00, da semana marcada para entrega e apresentação. Anexos a esse e-mail devem constar:

os programas fonte modificados,

os correspondentes executáveis,

o relatório final do trabalho e

uma imagem do comando ls -l sobre os arquivos usados no experimento ao final do mesmo.

A falta de qualquer elemento no e-mail ou a perda da data de entrega implica na perda da nota correspondente. Somente duas exceções serão consideradas, o fechamento do laboratório durante o período disponibilizado para a realização do experimento, ou 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, problemas pessoais ou "blackouts" 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.

Tarefas

As tarefas para este experimento são:

1.      Quantos e quais são os comandos Assembly do SOMAT?

2.      É possível realizar operações sobre números reais no SOMAT?

3.      Qual o tipo de escalonamento de processos implementado no SOMAT?

4.      Qual o tipo de gerência de memória implementado no SOMAT? Caracterize essa gerência definindo estratégia de substituição e tamanho da memória.

5.      Como é caracterizado um programa (job) no SOMAT? Identifique e estabeleça limites para cada parte de um programa (job).

Especificação

A partir desta etapa começa o trabalho de laboratório propriamente dito. Deseja-se modificar e incluir algumas das características do Winux.

Deverá ser entregue um documento que apresente O QUE vai ser implementado ou modificado. Algo como um manual do usuário, explicando o funcionamento dos mecanismos do ponto de vista do usuário. Algo parecido com o que existe nos manuais do Winux. Não esquecer de estabelecer as entradas e saídas de cada nova instrução, incluindo os resultados e possíveis erros (se existirem mensagens de erro, apresentá-las).

Projeto

Nesta etapa do trabalho são exploradas questões de COMO será implementado aquilo que está documentado na especificação.

Na documentação a ser entregue deve-se apresentar:

·         Quais as rotinas serão modificadas ou incluídas e quais os parâmetros e resultados dessas rotinas (parâmetros retornados, valor retornado e erros).

·         Estruturas de dados que serão criadas e as operações que podem ser realizadas sobre as mesmas. Todas as estruturas devem ter tipo e valores válidos para seus campos.

·         Algoritmos em pseudo código.

Plano de Teste

Nesta atividade deve-se explorar a forma como será testada a implementação (que ainda não foi realizada). Para isso são considerados os dois documentos já criados (especificação e projeto).

Na documentação a ser entregue, deve-se incluir casos de teste, tantos quantos sejam necessários para cobrir toda a implementação.

Um caso de testes tem quatro partes:

·         A condição a ser testada. Por exemplo, digamos que uma instrução numérica a ser implementada seja a exponencial. Condições a serem testadas seriam o zero elevado a algum inteiro, algum inteiro elevado a zero, algum inteiro elevado a um negativo, um inteiro elevado a um grande inteiro, um inteiro elevado a um inteiro. Repare que estamos estabelecendo situações críticas quando escolhemos o zero como parâmetro da instrução. Não se pode esquecer de cobrir as situações de erro definidas na especificação.

·         A maneira de fazer ocorrer a condição, ou seja, a escolha dos dados de entrada de maneira a fazer a condição ocorrer. Por exemplo, para a condição inteiro elevado a um inteiro, escolho 2 e 3. Para a condição zero elevado a um inteiro, escolho 10 (o zero já estava estabelecido). Se for necessário (e vai ser), deve-se mostrar todo o programa (job) em Assembly que deve ser executado para a ocorrência da condição.

·         O resultado esperado, ou seja, aquilo que deve ser exibido ou que deve ocorrer dentro do Winux. Por exemplo, na condição inteiro elevado a um inteiro com valores 2 e 3, o resultado deve ser um 8. No caso da implementação da nova estratégia de escalonamento, dependendo da condição a ser testada e dos valores de entrada, deve-se indicar os valores que devem resultar nas estruturas de dados envolvidas.

·         Como observar o resultado esperado, ou seja, é necessário para a pessoa que vai realizar o teste de perceber visualmente o resultado esperado. No exemplo da exponenciação, o resultado 8 vai ficar no acumulador da máquina virtual, para ser exibido, pode-se usar o comando de impressão. No caso do escalonamento, vai ser necessário incluir código no Winux para mostrar o conteúdo das estruturas de dados.

Implementação

A implementação deve ser realizada usando o Delphi em ambiente Intel/Windows.

Após terminada a codificação e os testes que acharem necessários, deve-se executar o plano de testes. Caso algum caso de testes apresente resultado final diferente do esperado, deve-se procurar e resolver o erro.

5. Apresentação

O resultado do experimento será apresentado em sala de aula no dia de aula prática da semana marcada para a entrega, com a presença obrigatória de todos os alunos, de acordo com o cronograma previamente estabelecido.

Serão escolhidos alunos para a apresentação e discussão do resultado. A critério do professor pode, inclusive, ocorrer o convite a qualquer dos alunos não escolhidos para que façam essa apresentação.

Todos os alunos que completaram o experimento devem preparar para a apresentação:

·        O Winux;

·        A introdução,

·        A especificação,

·        O projeto,

·        Os fontes modificados,

·        Os resultados dos testes, e

·        A conclusão.

Durante a apresentação deverão ser respondidas perguntas do Professor e de colegas.