Sistemas Operativos

Ano
2
Ano lectivo
2012-2013
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, Tecnologia de Computadores, Arquitectura de Computadores

Métodos de Ensino

Aulas teóricas com exposição detalhada 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 com exposição detalhada do ambiente de desenvolvimento de aplicações de sistema em Linux. Realização de demonstrações de programação e resolução de problemas. Aulas práticas-laboratoriais em que se pretende que os alunos desenvolvam vários trabalhos laboratoriais (projetos) de grupo que promovam 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 gerir recursos computacionais de hardware e software: Processadors, Memória, Periféricos; Informação (dados e programas) armazenada no sistema de Ficheiros. O objectivo 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 directo 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. Sistemas de Ficheiros
3. Entrada/Saída e escalonamento de disco
4. Gestão de Processos
5. Escalonamento de processos
6. Gestão de memória
a. Memória virtual
b. Memory-Mapped Files
7. Multi-threading
8. Programação Concorrente
a. Programação em C em Linux; Comandos Linux; Funções de Sistema Linux
b. Programação Multi-processo e multi-threaded
c. Comunicação entre processos
i. Sinais; Pipes; Named Pipes; Select; Memória partilhada; Filas de Mensagens
d. Sincronização
i. Exclusão mútua (mutexes), Semáforos,Variáveis de condição
ii. Deadlocks e Race Conditions
9. Segurança
10. Virtualização

Docente(s) responsável(eis)

Bruno Miguel Brás Cabral

Métodos de Avaliação

Avaliação
A avaliação compreende duas componentes: um exame final com um peso de 65% na nota final e o trabalho prático de grupo com um peso de 35% na nota final. Porém, a sua defesa é individual e o acesso a exame obriga a uma classificação mínima de 47.5%. O exame tem mínimos de 47.5%: 100.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