Sistemas Operativos
2
2025-2026
01000158
Informática
Português
Presencial
Semestral
6.0
Obrigatória
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ãoPrograma
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.