Informações Gerais

Horário: Terça-feira, 18:10 – 21:30
Local: P1-104 (Lab 4)


Descrição

Se você já utilizou um computador, um smartphone ou um tablet você certamente já lidou com algum sistema operacional. Desses sistemas, você provavelmente conhece a porção mais externa, geralmente apresentada através de uma interface gráfica intuitiva. Entretanto, por baixo dos panos, quase de forma imperceptível (ao menos gostaríamos que fosse assim), os sistemas operacionais estão atuando para permitir que diversas aplicações executem ao mesmo tempo (ou quase) de forma isolada (sem interferirem uma com as outras) obtendo sua porção justa dos recursos necessários para sua execução (processador, memória, etc). Além disso, o sistema operacional também cria diversas abstrações que facilitam a nossa vida como usuários ou desenvolvedores de aplicações e estendem os recursos físicos providos pelo hardware. Nesse curso, nós vamos explorar os mecanismos e as políticas empregadas pelos sistemas operacionais para atingir tais objetivos.


Bibliografia Básica

  1. Remzi H. Arpaci-Dusseau e Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces (Disponível em https://pages.cs.wisc.edu/~remzi/OSTEP/)
  2. Russ Cox, Frans Kaashoek e Robert Morris, xv6: a simple, Unix-like teaching operating system (Disponível em xv6)
  3. Anderson, Thomas e Dahlin, Michael, Operating Systems Principles and Practice – 2ª edição, Volumes 1-4, Recursive Books
  4. TANENBAUM, Andrew S., Sistemas Operacionais Modernos, 4a edição, Editora Pearson Prentice Hall, 2016.

Cronograma

O cronograma abaixo é uma estimativa e pode variar no decorrer do curso.


Avaliações

O processo de avaliação da disciplina utilizará 2 tipos de instrumento: provas e projetos.

Provas

As provas serão utilizadas para avaliar o aluno nos conceitos teóricos abordados na disciplina. No total serão três provas:

  • AV1: aplicada no meio do semestre letivo e cobre a metade do conteúdo do curso;
  • AV2: aplicada no final do semestre letivo e cobre a segunda metade do conteúdo do curso;
  • AV3: aplicada no final do semestre letivo apenas para os alunos que faltarem a AV1 ou AV2 (substituindo a nota da avaliação faltante).

A média aritimética das provas será denotada por MAV.

Projetos
Os projetos têm o objetivo de avaliar a compreensão do aluno sobre o conteúdo e sua capacidade de aplicar esse conteúdo em um sistema operacional real. O número de projetos será determinado durante o curso. À cada projeto será atribuído gráu de 1 a 10 e ao final do semestre será calculada a média aritmética dos projetos, denotada por MPROJ.

A nota final (NF) do aluno será calculada pela média aritmética entre MAV e MPROJ.

  • Se NF < 3 => aluno reprovado;
  • Se 3 <= NF < 7 => aluno fará prova final;
  • Se NF >= 7 => aluno aprovado.

Projetos

Nesta disciplina utilizaremos os projetos propostos pelo prof. Remzi H. Arpaci-Dusseau, disponíveis em OSTEP Projects. Para realizar os projetos, você precisará de uma distribuição Linux. Eu já preparei uma máquina virtual (virtualbox) Ubuntu configurada com todos os softwares necessários para a execução dos projetos (baixar máquina virtual)). O login na máquina virtual pode ser feito utilizando o nome de usuário: aluno e a senha: P@ssw0rd. Caso novas necessidades surjam, novos softwares podem ser instalados sob demanda.

Boa parte dos projetos que desenvolveremos são baseados no sistema operacional xv6. O xv6 é um sistema desenvolvido com propósitos educacionais, mas trata-se de um sistema operacional completo e funcional. Para maiores informações sobre o funcionamento do xv6 consulte a bibliografia básica número 2.

Todos os projetos devem ser compilados com as seguintes flags do gcc: -Wall -Werror. Além de compilar, o projeto deve ser executado utilizando o framework de testes desenvolvido pelo autor, cuja descrição pode ser acessada pelo link Framework de Testes.