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 e threads; 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; Desenvolver programas que exploram, ao nível das chamadas ao sistema de operação, diversos modelos de programação envolvendo concorrência, comunicação e sincronização entre processos ou threads.

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 - 6

Totais - 67

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, 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”)
Nota: Estudantes com nota teórica igual ou superior a 8,5 valores, conseguida nos dois anos lectivos anteriores a esta edição estão dispensados da avaliação teórica (testes e/ou exame). Note bem: a entrega de um teste ou exame corresponde a abdicar (i.e, perder) essa nota.
 
Componente laboratorial (a.k.a. “Práticas”)
Nota: Estudantes com frequência conseguida nos dois anos lectivos anteriores a esta edição estão dispensados da avaliação laboratorial. Note bem: a entrega de um trabalho para ser avaliado corresponde a abdicar (i.e, perder) da frequência.
 
 
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 ou exame: CompT ≥ 8,5
Testes e exame são presenciais (salvo se instituído um regime excepcional)Nota: nas avaliações da componente teórica pode ser usada para consulta uma folha A4 manuscrita

Avaliação Laboratorial (obtenção de Frequência)
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 (frequência): CompL ≥ 8,5

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

Para o cálculo de cada parcela (i.e., CompT e CompL) os arredondamentos intermédios são efectuados às décimas

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 e Containers

Cursos

Cursos onde a unidade curricular é leccionada: