Fundamentos de Sistemas de Operação (2021/2022) - Departamento de Informática
Descrição

Compreender as funcionalidades dos sistemas de operação dos computadores e as suas interfaces de utilização. Compreender as abstracções do sistema de operação para a execução de programas, o armazenamento (ficheiros), e a entrada/saída da informação. Compreender os modelos de programação de sistemas a nível das interfaces das chamadas ao sistema para o controlo de processos e o acesso a ficheiros. Compreender os princípios da programação concorrente e os mecanismos de sincronização e comunicação entre processos. Adquirir conhecimento dos aspectos teóricos e dos aspectos práticos, estes últimos através da realização de trabalhos práticos laboratoriais sobre o sistema UNIX. Breve introdução aos conceitos e mecanismos de virtualização ao nível do sistema de operação (contentores) e completa (máquinas virtuais)

Objectivos

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çãoenvolvendo concorrência, comunicação e sincronização entre processos ou threads.

Programa

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 umdevice driver.

6. Máquinas virtuais e Containers

Bibliografia Principal

PRINCIPAL:

Remzi Arpaci-Dusseau, AndreaArpaci-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

Requisitos Prévios

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

Esforço do Aluno
  Horas por crédito 28
  Horas p/ semana Semanas Horas
Aulas práticas e laboratoriais   28.0
Aulas teóricas   39.0
Avaliação   6.0
Estudo   135.0
Projectos e trabalhos   40.0
Total de Horas 248
ECTS 9.0