Fundamentos de Sistemas de Operação

Objetivos

Saber: - as funcionalidades dos sistemas de operação (SO), suas interfaces de utilização e programação; - as abstracções do SO para a execução de programas e gestão de recursos; - os princípios da programação concorrente e da coordenação de processos; - os princípios de concepção e de organização interna de um sistema de operação.

Saber fazer: - Relacionar os aspectos teóricos e os aspectos práticos e melhorar a capacidade de realização de trabalhos práticos laboratoriais; - Utilizar o ambiente e as ferramentas de apoio ao desenvolvimento e gestão da execução de programas, ao nível das interfaces do sistema de operação, e com os modelos de programação ao nível das chamadas ao sistema de operação, envolvendo concorrência, comunicação e sincronização entre processos.

Caracterização geral

Código

11155

Créditos

9.0

Professor responsável

Paulo Orlando Reis Afonso Lopes, Pedro Abílio Duarte de Medeiros

Horas

Semanais - 5

Totais - 68

Idioma de ensino

Português

Pré-requisitos

Recomenda-se ter aprovação às unidades curriculares IP e AC.

Bibliografia

PRINCIPAL:

Remzi Arpaci-Dusseau, Andrea Arpaci-Dusseau, Operating Systems: Three Easy Pieces, 2015 v0.9*, http://pages.cs.wisc.edu/~remzi/OSTEP/

COMPLEMENTAR:

Modern Operating Systems, 4th Ed, A. Tanenbaum, H. Bos, Pearson, 2014 

Computer Systems: A Programmer´s Approach, R.Bryant, D. O´Hallaron, Pearson, 3rd Ed 2015

The C Programming Language, B. W. Kernighan, D. M. Ritchie, 2nd Edition, Prentice Hall, 1988

Método de ensino

As aulas teóricas têm por objectivo a apresentação dos principais temas e discutir as questões mais relevantes. Os estudantes devem, de preferência antes das aulas, estudar a bibliografia recomendada.
As sessões laboratoriais têm por objectivo permitir ao estudante i) desenvolver aplicações que usam chamadas de sistema num ambiente controlado (máquinas virtuais), onde por vezes são requeridos privilégios de administração e ii) usar ferramentas de monitorização que requerem esses mesmos privilégios.

Método de avaliação

A avaliação tem duas componentes:
Componente teórico-prática (a.k.a. “Teóricas”)
Componente laboratorial (a.k.a. “Práticas”)

Frequência, garantida pelas “Práticas”
Nota tem de ser igual ou superior a 8,5 valores
Estudantes com frequência em 2017/18 ou 2018/19 estão dispensados da avaliação laboratorial, mas podem repeti-la, funcionando como “melhoria”. Nesse caso têm de declarar essa intenção logo no início.

Avaliação Teórica: 2 testes, 1 exame de recurso
Nota da Componente Teórica (CompT)
CompT = 0,5 T1 + 0,5 T2
Para obter aprovação por testes: CompT ≥ 8,5

Avaliação Laboratorial
3 trabalhos individuais de pequena dimensão; 1 Projecto (P) em grupo de 2 alunos
Nota da Componente Laboratorial: CompL = 0,4*(NTP1+NTP2+NTP3)/3 + 0,6*NP
Para obter aprovação: CompL ≥ 8,5

Nota final NF = 0,7*(CompT ou nota do exame) + 0.3*CompL

Naturalmente, NF ≥ 9,5
 

Conteúdo

1. Introdução aos sistemas de operação (SO): Serviços do sistema:  ficheiro e processo como principais abstracções suportadas,  chamadas ao sistema.

2. Gestão dos CPUs: suporte da abstracção de processo pelo SO; processos leves: Algoritmos de escalonamento dos CPUs

3. Gestão da memória: espaço de endereçamento de um processo;  transformação de endereços reais em virtuais usando páginas; memória virtual usando paginação; algoritmos de substuição de páginas.

4. Programação concorrente: fundamentos, comunicação e sincronização em memória partilhada e em memória distribuída. Processos leves - API pthreads.

5. Ficheiros e dispositivos de entrada/saída: organização e operações do sistema de ficheiros; características dos dispositivos que suportam o sistema de ficheiros; consistência do sistema de ficheiros. Gestão de dispositivos de entrada / saída. Estrutura de um device driver.

6. Máquinas virtuais

Cursos

Cursos onde a unidade curricular é leccionada: