Aulas Teóricas
Aula 1: 12.02.2018
Apresentação
Considerações gerais sobre o programa, bibliografia, funcionamento das
aulas e método de avaliação.
Aula 2: 19.02.2018
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. Multiprogramming e multitasking (time sharing). Interrupts
por hardware e por software.
Aula 3: 20.02.2018
Conceitos Básicos
Dispositivos de I/O, controladores, drivers e direct memory access
(DMA). Proteção do CPU. Operação em dual-mode: kernel mode, user mode
e bit de modo. Chamadas ao sistema (system calls).
Processos
Noção de processo. Distinção entre programa e processo. Process
Control Block (PCB). Estados de um processo.
Aula 4: 26.02.2018
Processos
Mudança de contexto de um processo. 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 5: 27.02.2018
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.
Escalonamento de Processos
Escalonamento preemptivo versus não-preemptivo.
Aula 6: 05.03.2018
Escalonamento de Processos
Critérios de escalonamento. Algoritmos de escalonamento: First-Come
First-Served (FCFS), Round Robin (RR), Shortest-Job-First (SJF),
Shortest-Remaining-Time-First (SRTF) e Priority Scheduling.
Aula 7: 06.03.2018
Escalonamento de Processos
Algoritmos de escalonamento: Multilevel Queue (MLQ), Multilevel
Feedback Queue (MLFQ) e Completely Fair Scheduler (CFS). Resolução de
exercícios.
Aula 8: 12.03.2018
Sincronização entre Processos
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. Algoritmo de Peterson.
Aula 9: 13.03.2018
Sincronização entre Processos
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. Implementação de locks minimizando o tempo de espera ativa
em máquinas uniprocessador e em máquinas multiprocessador.
Aula 10: 19.03.2018
Sincronização entre Processos
Semáforos. Implementação de semáforos minimizando o tempo de espera
ativa. Starvation (inanição) versus deadlock (impasse). Problemas
clásicos de sincronização: problema do buffer limitado, problema dos
escritores-leitores.
Aula 11: 20.03.2018
Sincronização entre Processos
Problemas clásicos de sincronização: problema do jantar dos
filósofos. Requisitos para a ocorrência de deadlocks. Grafo de
alocação de recursos. Técnicas para prevenir, evitar, detetar e
recuperar de deadlocks. Resolução de exercícios.
Aula 12: 03.04.2018
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). Estados de uma
thread. Mudança de contexto com threads. Bibliotecas user-level versus
kernel-level. Biblioteca Pthreads: criação, terminação e junção de
threads. Semântica das chamadas ao sistema exec() e fork() com
threads. Resolução de exercícios.
Aula 13: 09.04.2018
Sistema de Ficheiros
Conceito de sistema de ficheiros. Ficheiros: atributos, tipos de
ficheiros comuns, partilha de ficheiros e permissões de
acesso. Organização em partições e em volumes. Estrutura e hierarquia
de diretórios. 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.
Aula 14: 10.04.2018
Sistema de Ficheiros
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), alocação indexada, alocação indexada de
múltiplos níveis, alocação indexada com inodes. Resolução de
exercícios.
Aula 15: 16.04.2018
Dispositivos de Armazenamento
Discos HDD e SSD. Tempos de latência em operações de I/O. 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 16: 17.04.2018
Gestão de Memória
Espaço de memória e mecanismos de proteção de memória. Espaço de
endereçamento lógico e físico. Memory Management Unit (MMU). Alocação
dinâmica e registo de recolocação. 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.
Aula 17: 23.04.2018
Gestão de Memória
Fragmentação interna versus fragmentação externa. Segmentação:
conceito, arquitetura, vantagens e desvantagens. Tabela de
segmentos. Segmentos partilhados. Paginação: conceito, arquitetura,
vantagens e desvantagens. Tabela de páginas.
Aula 18: 24.04.2018
Gestão de Memória
Páginas partilhadas. Tamanho das páginas. Implementação da tabela de
páginas. Paginação com múltiplos níveis.
Aula 19: 30.04.2018
Gestão de Memória
Translation Look-aside Buffer (TLB). Segmentação com
paginação. Resolução de exercícios.
Aula 20: 14.05.2018
Gestão de Memória
Revisões. Resolução de exercícios.
Aula 21: 15.05.2018
Memória Virtual
Espaço de endereçamento virtual. Paginação a pedido. Page
fault. Algoritmos de substituição de páginas: First-In First-Out
(FIFO), página ótima (OPT), Least Recently Used (LRU).
Aula 22: 21.05.2018
Memória Virtual
Algoritmos de substituição de páginas: segunda tentativa, relógio, Not
Recently Used (NRU), Least Frequently Used (LFU), Aging
(envelhecimento).
Aula 23: 22.05.2018
Memória Virtual
Alocação de frames. Trashing. Modelo working set. Modelo page-fault
frequency. Resolução de exercícios.