Sistemas Operativos
2
2019-2020
01000158
Informática
Português
Presencial
Semestral
6.0
Obrigatória
1º Ciclo - Licenciatura
Conhecimentos de Base Recomendados
Programação, Tecnologia de Computadores, Arquitetura de Computadores.
Métodos de Ensino
Aulas teóricas fazem uma exposição detalhada, recorrendo a meios audiovisuais, dos conceitos, princípios e teorias fundamentais dos Sistemas Operativos, acompanhada de exemplos práticos elementares que exemplifiquem a sua aplicação em sistemas reais e atuais. Aulas teórico-práticas permitem a exposição detalhada do ambiente de desenvolvimento de aplicações de sistema em Linux e a realização de demonstrações de programação e resolução de problemas. Nas aulas práticas-laboratoriais pretende-se que os alunos desenvolvam vários trabalhos laboratoriais (projetos) de grupo que promovam o raciocínio crítico face a problemas mais complexos. Estas aulas servirão também para a realização de defesas dos projetos desenvolvidos.
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 e 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; Informação (dados e programas) armazenada no sistema de Ficheiros. O objetivo desta disciplina é dar a conhecer aos estudantes o funcionamento dos SO modernos e ao mesmo tempo dotar os estudantes das devidas capacidades 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
- Funções de um Sistema Operativo
- Sistemas de Ficheiros
- Entrada/Saída e escalonamento de disco
- Gestão de Processos
- Escalonamento de processos
- Gestão de memória
- Memória virtual
- Memory-Mapped Files
- Multi-threading
- Programação Concorrente
- Programação em C em Linux; Comandos Linux; Funções de Sistema Linux
- Programação Multi-processo e multi-threaded
- Comunicação entre processos
- Sinais; Pipes; Named Pipes; Select; Memória partilhada; Filas de Mensagens
- Sincronização
- Exclusão mútua (mutexes), Semáforos,Variáveis de condição
- Deadlocks e Race Conditions
- Segurança
Virtualização
Docente(s) responsável(eis)
Vasco Nuno Sousa Simões Pereira
Métodos de Avaliação
Avaliação
Trabalho prático de grupo: 35.0%
Exame: 65.0%
Bibliografia
Operating System Concepts: 7th Edition, by Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. John Wiley & Sons, ISBN 0471694665.
Operating Systems: Internals and Design Principles 5th Edition, by William Stallings. Prentice Hall, ISBN 0131479547.
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.