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.