Sistemas Operativos
2
2021-2022
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 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ãoPrograma
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.