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

Pedro Abílio Duarte de Medeiros, Vítor Manuel Alves Duarte

Horas

Semanais - 5

Totais - 60

Idioma de ensino

Português

Pré-requisitos

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

Bibliografia

PRINCIPAL:

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

COMPLEMENTAR:

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

Operating System Concepts. A. Silberschatz, et al, 10th Edition, 2018

Tutorias de C (exemplos):

https://www.geeksforgeeks.org/c-programming-language/
https://www.w3schools.com/c/
https://www.programiz.com/c-programming/

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”)

2 testes ou 1 exame de recurso

CompT = 0,5 T1 + 0,5 T2 ou CompT = Exame

Para obter aprovação: CompT ≥ 9,0

Testes e exame são presenciais. Nas avaliações da componente teórica o aluno pode usar, para consulta, uma página A4 manuscrita.

Nota: Estudantes com nota teórica igual ou superior a 9,0 valores, conseguida no ano lectivo anterior 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”)

3 trabalhos individuais de pequena dimensão (NTP1,2,3); 1 mini-projecto (NP) em grupo de 2 alunos

CompL = 0,35*(NTP1+NTP2+NTP3)/3 + 0,65*NP

A avaliação Laboratorial confirma a Frequência (admissão à avaliação). Para obter frequência: CompL ≥ 9,0

Nota: Estudantes com frequência conseguida nos dois anos lectivos anteriores a esta edição estão dispensados da avaliação laboratorial, valendo a nota que na altura obtiveram nesta componente. Note bem: a entrega de um trabalho para ser avaliado corresponde a abdicar (i.e, perder) da frequência anterior.

Nota final (após obter frequência)

Se cumprir a nota mínima em CompT, a nota final NF = round(0,7*CompT + 0.3*CompL). Senão NP = round(CompT) 

Cada parcela (i.e., NTP1,2,3, NP, T1, T2, Exame, CompT e CompL) vão valores arredondados às décimas.

Naturalmente, um aluno é aprovado se cumprir as notas mínimas de cada componente e NF ≥ 10

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: