Aulas Teóricas

Aula 1: 16.02.2016

Apresentação
Considerações gerais sobre o programa, bibliografia, funcionamento das aulas e método de avaliação.

Aula 2: 23.02.2016

Conceitos Básicos
O que é um sistema de operação e para que serve. Definições de sistema de operação. Principais componentes e serviços de um sistema de operação.

Aula 3: 26.02.2016

Conceitos Básicos
Interrupts por hardware e por software. Dispositivos de I/O, controladores, drivers e direct memory access (DMA). Multiprogramming e time sharing. Proteção do CPU. Operação em dual-mode: kernel mode versus user mode, bit de modo e chamadas ao sistema (system calls).

Aula 4: 01.03.2016

Conceitos Básicos
Evolução dos sistemas de operação. Tipos de sistemas de operação: estrutura simples, estrutura por camadas, microkernels, estrutura por módulos, sistemas híbridos e sistemas de máquinas virtuais.

Processos
Noção de processo. Distinção entre programa e processo. Process Control Block (PCB). Estados de um processo. Mudança de contexto de um processo.

Aula 5: 04.03.2016

Processos
Escalonamento de processos. Filas de processos. Árvore de processos. Criação de processos: o que envolve, potenciais custos e possíveis alternativas de criação. Terminação de processos: processos zombie e processos orfãos. Processos em UNIX/Linux: as chamadas ao sistema fork(), exec(), exit() e wait().

Aula 6: 08.03.2016

Processos
Princípios gerais de comunicação entre processos por memória partilhada e por troca de mensagens. Conceito de pipe. Pipes em UNIX/Linux. Resolução de exercícios.

Aula 7: 11.03.2016

Escalonamento de Processos
Escalonamento preemptivo versus não-preemptivo. Critérios de escalonamento. Algoritmos de escalonamento: First-Come First-Served (FCFS) e Round Robin (RR).

Aula 8: 15.03.2016

Escalonamento de Processos
Algoritmos de escalonamento: Shortest-Job-First (SJF), Shortest-Remaining-Time-First (SRTF), Priority Scheduling e Multilevel Queue (MLQ).

Aula 9: 18.03.2016

Escalonamento de Processos
Algoritmos de escalonamento: Multilevel Feedback Queue (MLFQ) e Completely Fair Scheduler (CFS). Resolução de exercícios.

Aula 10: 29.03.2016

Sincronização entre Processos
O problema do produtor-consumidor. Secções críticas e race conditions. Operações atómicas. Conceito de lock. Soluções para o "Too Much Milk Problem". Problema da secção crítica: conceitos e requisitos da solução.

Aula 11: 01.04.2016

Sincronização entre Processos
Algoritmo de Peterson. Soluções para exclusão mútua: inibição de interrupções, instruções atómicas test_and_set() e compare_and_swap(). Mutex locks e spinlocks.

Aula 12: 05.04.2016

Sincronização entre Processos
Implementação de locks minimizando o tempo de espera ativa em máquinas uniprocessador e em máquinas multiprocessador. Semáforos. Implementação de semáforos minimizando o tempo de espera ativa. Starvation (inanição) versus deadlock (impasse). Inversão de prioridade. Problemas clásicos de sincronização: problema do buffer limitado.

Aula 13: 08.04.2016

Sincronização entre Processos
Problemas clásicos de sincronização: problema dos escritores-leitores, problema do jantar dos filósofos. Requisitos para a ocorrência de deadlocks. Grafo de alocação de recursos. Técnicas para prevenir e evitar deadlocks.

Aula 14: 12.04.2016

Sincronização entre Processos
Técnicas para detetar e recuperar de deadlocks. Resolução de exercícios.

Threads
Noção de thread. Distinção entre processo e thread. Processos com múltiplas threads. Principais benefícios e implicações da utilização de processos multithreaded. Thread Control Block (TCB).

Aula 15: 15.04.2016

Threads
Thread-specific data. Estados de uma thread. Mudança de contexto com threads. User threads versus kernel threads. Bibliotecas user-level versus kernel-level. Biblioteca Pthreads: criação, terminação e cancelamento de threads. Semântica das chamadas ao sistema exec() e fork() com threads. Resolução de exercícios.

Aula 16: 19.04.2016

Sistema de Ficheiros
Conceito de sistema de ficheiros. Ficheiros: atributos, tipos de ficheiros comuns, permissões de acesso, partilha de ficheiros. Organização em partições e em volumes. Estrutura e hierarquia de diretórios. Estrutura e camadas de um sistema de ficheiros.

Aula 17: 22.04.2016

Sistema de Ficheiros
Gestão de ficheiros abertos: system-wide open-file table, per-process open-file table, file control block, file descriptors. Montar um sistema de ficheiros. Sistema de ficheiros virtual. Implementação de sistemas de ficheiros. Acesso sequencial versus acesso aleatório a ficheiros. Alocação de espaço em disco: alocação contígua, alocação em listas ligadas, alocação em listas ligadas com File-Allocation Table (FAT).

Aula 18: 26.04.2016

Sistema de Ficheiros
Alocação de espaço em disco: alocação indexada, alocação indexada de múltiplos níveis, alocação indexada com inodes. Gestão de espaço livre: bit vectors, listas ligadas e contagens. Resolução de exercícios.

Dispositivos de Armazenamento
Discos HDD e SSD: hardware e organização em blocos e setores. Tempos de latência em operações de I/O.

Aula 19: 29.04.2016

Dispositivos de Armazenamento
Algoritmos de acesso ao disco: First-Come First-Served (FCFS), Shortest Seek Time First (SSTF), algoritmo do elevador (SCAN) e versões do algoritmo do elevador (C-SCAN, LOOK e C-LOOK). Resolução de exercícios.

Aula 20: 10.05.2016

Gestão de Memória
Espaço de memória e mecanismos de proteção de memória. Tradução de endereços em tempo de compilação, em tempo de carregamento e em tempo de execução. Espaço de endereçamento lógico e físico. Memory Management Unit (MMU). Dynamic loading/linking (recolocação).

Aula 21: 13.05.2016

Gestão de Memória
Swapping. Alocação contígua de memória: partições de tamanho fixo e de tamanho variável. Algoritmos de alocação first-fit, best-fit e worst-fit. Fragmentação interna versus fragmentação externa. Segmentação: conceito, arquitetura, vantagens e desvantagens. Tabela de segmentos. Segmentos partilhados.

Aula 22: 17.05.2016

Gestão de Memória
Paginação: conceito, arquitetura, vantagens e desvantagens. Tabela de páginas. Páginas partilhadas. Tamanho das páginas.

Aula 23: 19.05.2016

Gestão de Memória
Paginação com múltiplos níveis. Tabela de páginas com hashing. Tabela de páginas invertidas. Translation Look-aside Buffer (TLB). Segmentação com paginação.

Aula 24: 20.05.2016

Gestão de Memória
Revisões. Resolução de exercícios.

Aula 25: 24.05.2016

Memória Virtual
Espaço de endereçamento virtual. Paginação a pedido. Page fault. Anomalia de Belady. Algoritmos de substituição de páginas: First-In First-Out (FIFO), página ótima (OPT), Least Recently Used (LRU).

Aula 26: 31.05.2016

Memória Virtual
Algoritmos de substituição de páginas: segunda tentativa, relógio, Not Recently Used (NRU), Least Frequently Used (LFU), Aging (envelhecimento). Alocação de frames. Copy-on-Write. Trashing.

Aula 27: 03.06.2016

Memória Virtual
Modelo working set. Modelo page-fault frequency. Resolução de exercícios.