Objetivos / Competências
A disciplina de Sistemas Operativos (SO) tem como objetivo possibilitar a formação em vários aspectos relacionados com os SO, reconhecida que é a importância desta componente dos sistemas computacionais: (1) Conhecer os conceitos fundamentais subjacentes aos SO, com ênfase nos seus mecanismos e algoritmos, assim como a estrutura interna dos SO mais relevantes; (2) Programar, ao nível do sistema, usando todas as funcionalidades dos SO tendo em conta os modelos de programação sequencial e concorrente.
Um desses aspetos é a própria compreensão do SO do ponto de vista da sua utilização. Na medida do possível, concretizar-se-á este ponto pelo estudo de SO(s) considerado(s) pedagogicamente relevante(s).
Outro aspeto tem a ver com a compreensão dos mecanismos internos dos SO, colocando ênfase nas diferentes soluções encontradas para as diversas componentes da respetiva arquitectura.
Conteúdos programáticos resumidos
Componente Teórica:
- História, Evolução e Filosofia
- Processos e Tarefas
- Escalonamento e Despacho
- Sincronização entre Processos
- Interblocagem (Deadlocks)
- Comunicação entre Processos
- Gestão de Memória
- Gestão de Dispositivos
- Sistemas de Ficheiros
- Acontecimentos Assíncronos e Exceções
- Núcleo do Sistema Unix
Componente Prática/Teórico-prática:
Utiliza-se como principal base de trabalho o ambiente UNIX. As primeiras aulas consistem na exploração do UNIX ao nível do interpretador de comandos. A partir daí, as aulas constam no desenvolvimento de exercícios (em linguagem C) que vão cobrindo cada um dos vários aspetos relacionados com a programação do sistema que abaixo se mencionam.
- Sistema Operativo UNIX - Nível de Utilização
- Sistema Operativo UNIX - Nível de Programação
- Sistema de ficheiros
- Processos
- Operações de entrada/saída recorrendo às chamadas ao sistema (baixo nível)
- Comunicação e sincronização entre processos
Metodologias de ensino e critérios de avaliação
Salientar as principais dificuldades dos exercícios; sugerir metodologias de resolução.
A avaliação é efectuada tendo em conta a seguinte média ponderada:
• Assistência às aulas Teórico-Práticas e Práticas - 5% (1/20)
• Avaliação teórica - realização de um teste escrito (frequência e/ou exame) - 40% (8/20)
• Avaliação prática - trabalhos laboratoriais realizados nas aulas práticas - 55% (11/20)
Condições de admissibilidade à realização do teste escrito (em frequência, época normal, de recurso ou outra qualquer época especial de avaliação):
• Obtenção de um mínimo de 25% na componente prática
O aluno considera-se dispensado de exame (ou Aprovado, no caso de já se ter sujeitado a exame) se cumprir os requisitos mínimos referidos anteriormente, e no conjunto das componentes de avaliação somar pelo menos 9,5 valores (9,5/20).
Para ser admitido à frequência, o aluno tem que participar, pelo menos, em 2/3 das aulas teórico-práticas e práticas (1/3 para os trabalhadores estudantes).
Bibliografia resumida
Documentação elaborada pelo docente da cadeira e disponível na plataforma de e-learning nas componentes teórica e prática.
MARQUES, José et al. Sistemas Operativos. 2ª Ed. FCA – Editora de Informática, 2012. ISBN 978-972-722-756-3
TANENBAUM, Andrew S; BOS,Herbert , "Modern Operating Systems (4th Edition)", Pearson Prentice-Hall, 2014. ISBN 978-0133591620
Silberschatz, Abraham; Galvin, Peter: Gagne, Greg, Operating Systems Concepts Essentials, 2nd edition, Wiley, 2014
DAMAS, Luís. Linguagem C. 13ª ed FCA- Editora de Informática, 1999. Cota 004.43 C DAM LIN
GRAY, John Shapley. Interprocess Communication in UNIX: the Nooks and Crannies, Prentice-Hall, 98, 2ª ed, 0-13-899592-3 Cota 004.45 GRA
HAVILAND, K.; Gray, D.; B Salama. Unix System Programming, Addison-Wesley, 99, 2ªed, 0-201-87758-9
KERNIGHAN, Brian W.; Ritchie, Dennis M.. The C programming Language (2nd ed.), Prentice Hall, 88, 0-13-110362-8 Cota 004.43 KER PRO