Sistemas Operativos
Código
01063070Créditos ECTS
6Objetivos
- A. Descrever as funções e a estrutura geral de um sistema operativo.
- B. Descrever o funcionamento dos componentes de um sistema operativo, a interação destes componentes e os algoritmos fundamentais usados na sua implementação.
- C. Explorar os mecanismos de comunicação entre processos e de sincronização entre threads.
- D. Usar um hipervisor para gerir máquinas virtuais.
- E. Desenvolver programas que explorem as API de um sistema operativo tipo-Unix.
Programa
1. Conceitos básicos sobre os sistemas operativos
1.1. Estrutura e funções de um sistema operativo
1.2. Evolução dos sistemas operativos
2. Processos
2.1. Ciclo de vida
2.2. Algoritmos de escalonamento
2.3. Algoritmos de sincronização
2.4. Mecanismos de comunicação
3. Threads
3.1. Mecanismos de sincronização - exclusão mútua e semáforos
3.2. Execução concorrente
4. Gestão de Memória
4.1. Segmentação e Paginação
4.2. Memória Virtual
5. Gestão de Armazenamento
5.1. Organização de um sistema de ficheiros
5.2. Indexação, Diretorias e Gestão de espaço livre
6. Entradas e saídas
6.1. Comunicação com os dispositivos periféricos
6.2. Gestão de interrupções
7. Virtualização
7.1. Máquinas virtuais e Contentorização
7.2. Benefícios e custos
8. O modelo computacional do Linux
8.1. Visão global do sistema
8.2. Programação em Shell
8.3. Programação em C
Métodos de Ensino
Nas aulas teórico-práticas são apresentados e discutidos os conceitos fundamentais de sistemas operativos com recurso a exemplos e demonstrações da utilização das interfaces de programação de um sistema tipo-Unix.
Os estudantes serão envolvidos em atividades de participação ativa e transmitindo feedback formativo em tempo real através de tecnologias educativas (Vevox).
Os conteúdos teóricos são disponibilizados previamente em formato digital na área Moodle da unidade curricular.
No sistema Moodle os estudantes estarão igualmente disponíveis atividades de avaliação como quizzes e de interação como fóruns.
As aulas práticas laboratoriais funcionam articuladas com as teórico-práticas e são preenchidas pela exploração das funcionalidades do sistema operativo Linux, nomeadamente a utilização da interface de linha de comandos, a construção de scripts em shell e a codificação de programas em linguagem C.
Cada estudantes cria a sua própria máquina virtual Linux para explorar as interfaces de programação e realizar os exercícios e os trabalhos práticos propostos, estes últimos em grupo.
Bibliografia
Essencial
Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. Operating System Concepts, 9th Edition. John Wiley & Sons. 2012
José Alves Marques, Paulo Ferreira, Carlos Ribeiro, Luís Veiga, Rodrigo Rodrigues. Sistemas Operativos. FCA. 2012.
Complementar
Andrew S. Tanenbaum. Modern Operating Systems, 4th Edition. Pearson. 2014.
Fernando Pereira, Rui Guerreiro. LINUX: Curso Completo. 7ª Edição. FCA. 2015
William Stallings; Operating Systems: Internals and Design Principles, 8th Edition, Prentice Hall, 2014.
