Sistemas Operativos

Ano
2
Ano lectivo
2025-2026
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-práticas recorrem a meios audiovisuais para expor os conceitos, princípios e teorias fundamentais dos SO, e mostram exemplos práticos elementares que exemplificam a sua aplicação em sistemas reais e atuais. Permitem também a exposição e demonstração detalhada de aspetos 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/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ção. 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. Conceitos base de Sistemas Operativos

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: 20.0%
Projecto: 40.0%
Exame: 40.0%

Bibliografia

Tanenbaum, A.S., Bos, H. (2023). Modern Operating Systems (5th ed.). Pearson.

Arpaci-Dusseau, R.H., Arpaci-Dusseau, A.C. (2023). Operating Systems: Three Easy Pieces (1.10 ed.).

Silberschatz, A., Galvin, P.B., Gagne, G. (2018). Operating System Concepts (10th ed.). Wiley.

Stallings, W. (2017). Operating Systems: Internals and Design Principles (9th ed.). Pearson.

Robbins, K., Robbins, S. (2015). Unix Systems Programming: Communication, Concurrency and Threads (2nd ed.). Prentice Hall.

Stevens, W.R., Rago, S.A. (2013). Advanced Programming in the UNIX Environment (3rd ed.). Addison-Wesley.

Kerrisk, M. (2010). The Linux Programming Interface. No Starch Press.