Sistemas Operativos

Ano
2
Ano lectivo
2017-2018
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, 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ã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
    1. Memória virtual
    2. Memory-Mapped Files
  7. Multi-threading
  8. Programação Concorrente
    1. Programação em C em Linux; Comandos Linux; Funções de Sistema Linux
    2. Programação Multi-processo e multi-threaded
    3. Comunicação entre processos
      1. Sinais; Pipes; Named Pipes; Select; Memória partilhada; Filas de Mensagens
    4. Sincronização
      1. Exclusão mútua (mutexes), Semáforos,Variáveis de condição
      2. Deadlocks e Race Conditions
  9. 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.