Sistemas Operativos

Conhecimentos de Base Recomendados

Muito embora não existam precedências definidas, é de todo desejável que o aluno tenha conhecimentos base em várias áreas, nomeadamente em algoritmos e programação, arquitetura de computadores, e lógica matemática, interpretação de problemas, modelação e representação algorítmica (pelo menos procedimental/estruturada) de soluções de problemas.

Métodos de Ensino

As aulas são lecionadas em regime teórico-prático, com recurso à utilização de computadores e ferramentas digitais. Será utilizado um processo dinâmico de ensino-aprendizagem, fundamentalmente interativo, com suporte a ferramentas digitais e baseado nas metodologias “Scrum” e “Flipped Classroom” (tipo de “Blended learning”), centrados no aluno, disponibilização antecipada dos materiais de ensino, desenvolvimento de atividades e aulas quase integralmente destinadas à aplicação dos conceitos.

Resultados de Aprendizagem

Estudo dos sistemas operativos, incluindo sua organização, serviços fornecidos e sua programação. Mais concretamente, gestão de processos, comunicação entre processos, situações de impasse, escalonamento de processos, gestão de memória, sistemas de ficheiros, gestão de entradas e saídas e proteção e segurança. Introdução à programação Shell script e programação multitarefa cooperativa.

Aquisição de conhecimentos fundamentais utilizados na conceção dos sistemas operativos modernos.

Identificação das potenciais situações de risco inerentes à programação concorrente e utilização dos mecanismos de controlo apropriados.

Aquisição de conhecimentos práticos sobre sistemas operativos baseados em Linux e capacidade de utilização dos principais serviços disponibilizados pelo sistema operativo para o desenvolvimento de aplicações, abrangendo a programação multitarefa cooperativa.

Aquisição de conhecimentos de programação em Shell Script.

Programa

1. Funções de um Sistema Operativo
2. Estrutura dos Sistemas Operativos
3. Processos e Threads
   3.1 Escalonamento da CPU
   3.2 Programação concorrente
   3.3 Comunicação e Sincronização de Processos
   3.4 Deadlocks
4. Gestão de memória
   4.1 Memória principal
   4.2 Memória virtual
5. Gestão de armazenamento de dados
   5.1 Estrutura de armazenamentos massivos
   5.2 Entrada/Saída
   5.3 Sistema de ficheiros
6. Segurança e Proteção
7. Sistemas Distribuídos e Virtualização

Docente(s) responsável(eis)

Estágio(s)

NAO

Bibliografia

1. A. Silberschatz, G. Gagne, and P. B. Galvin (April 2018) “Operating System Concepts”, 10th Ed., John Wiley & Sons, Inc., ISBN: 978-1119320913

2. W. Stallings (2018) “Operating Systems: internals and design principles”, 9th Ed., Pearson ISBN-13: 978-0134670959

3. K. A. Robbins, S. Robbins (2015) “UNIX SYSTEMS Programming: Communication, Concurrency, and Threads”, 2nd Ed., Pearson ISBN-13: 978-0134424071

4. R. Love (2013) “Linux System Programming”, 2nd Ed., O’Reilly & Media Inc. ISBN: 978-1449339531

5. Pedro Costa (2023) “Apontamentos Teóricos e Práticos de Sistemas Operativos”, Coimbra Business School | ISCAC, Polytechnic of Coimbra.