Sistemas Operativos

Ano
2
Ano lectivo
2021-2022
Código
01000158
Área Científica
Informática
Língua de Ensino
Português
Modo de Ensino
Presencial
Duração
Semestral
Créditos ECTS
6.0
Tipo
Obrigatória
Nível
1º Ciclo - Licenciatura

Conhecimentos de Base Recomendados

Programação em C, Tecnologia da Informática, Arquitetura de Computadores

Métodos de Ensino

As aulas teóricas recorrem a meios audiovisuais para expor os conceitos, princípios e teorias fundamentais dos SO, e mostrar exemplos práticos elementares que exemplificam a sua aplicação em sistemas reais e atuais. As aulas teórico-práticas permitem a exposição e demosntração detalhada de aspectos práticos do denvolvimento de aplicações de sistema em Linux. Nas aulas práticas-laboratoriais pretende-se que os alunos desenvolvam vários trabalhos laboratoriais que promovam a aprendizagem dos conceitos lecionados e o raciocínio crítico face a problemas mais complexos.

Resultados de Aprendizagem

Esta unidade curricular constitui um curso básico de Sistemas Operativos (SO). Um SO deve suportar um ambiente para o desenvolvimento e execução de programas, um conjunto de métodos de acesso aos serviços de um sistema computacional (API de programação) e deve gerir recursos computacionais de hardware e software (processadores, memória, periféricos, dados e programas armazenados no sistema de ficheiros).

O objetivo desta disciplina é dar a conhecer o funcionamento dos SO modernos e ao mesmo tempo dotar os estudantes das capacidades necessárias para desenvolverem aplicações de sistema que façam uso direto do interface de programação do sistema operativo e que explorem as capacidades de concorrência e multi-programa. A disciplina pretende promover a aquisição de competências em análise e síntese, resolução de problemas, aplicação prática de conhecimentos teóricos, aprendizagem autónoma, comunicação oral e escrita, raciocínio crítico e capacidade de decisão.

Estágio(s)

Não

Programa

1. Funções de um Sistema Operativo

2. Processos e threads

3. Sincronização de processos e threads

4. Deadlocks

5. Escalonamento do CPU

6. Gestão de memória

  a) Memória principal

  b) Memória virtual

7. Entrada/saída e gestão do armazenamento

8. Sistema de ficheiros

9. Segurança

10. Virtualização

11. Programação Concorrente

  a) Programação C em Linux;

  b) Comandos Linux e Shell scripting;

  c) Funções de sistema do Linux;

  d) Programação multi-processo e multi-thread;

  e) Comunicação entre processos

    i) Memória partilhada; Sinais; Pipes; Named Pipes; Select; Filas de Mensagens; Ficheiros mapeados em memória;

  f) Sincronização

    i) Exclusão mútua (mutexes), Semáforos, Variáveis de condição;

    ii) Deadlocks e Race Conditions.

Docente(s) responsável(eis)

Vasco Nuno Sousa Simões Pereira

Métodos de Avaliação

Avaliação
Mini Testes: 25.0%
Projecto: 35.0%
Exame: 40.0%

Bibliografia

Operating System Concepts: 8th Edition, by Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. John Wiley & Sons, ISBN 9780470233993.

 

Operating Systems: Internals and Design Principles 8th Edition, by William Stallings. Prentice Hall, ISBN 9781292061351.

 

Unix Systems Programming: Communication, Concurrency and Threads 2nd Edition, by Kay Robbins, Steve Robbins. Prentice Hall, ISBN 0130424110.

 

Advanced Programming in the UNIX Environment Second Edition, by W. Richard Stevens, Stephen A. Rago. Addison-Wesley.