Aulas Teóricas

Aula 1: 06.02.2017

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

Aula 2: 07.02.2017

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: 13.02.2017

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: 14.02.2017

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(). Resolução de exercícios.

Aula 5: 20.02.2017

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: 21.02.2017

Escalonamento de Processos
Critérios de escalonamento. Algoritmos de escalonamento: First-Come First-Served (FCFS), Round Robin (RR), Shortest-Job-First (SJF) e Shortest-Remaining-Time-First (SRTF).

Aula 7: 27.02.2017

Escalonamento de Processos
Algoritmos de escalonamento: Priority Scheduling, Multilevel Queue (MLQ) e Multilevel Feedback Queue (MLFQ). Resolução de exercícios.

Aula 8: 06.03.2017

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: 07.03.2017

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.

Aula 10: 13.03.2017

Sincronização entre Processos
Implementação de locks minimizando o tempo de espera ativa em máquinas multiprocessador. 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: 14.03.2017

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: 20.03.2017

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.

Aula 13: 21.03.2017

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. Resolução de exercícios.

Aula 14: 27.03.2017

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: 28.03.2017

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: 03.04.2017

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. Fragmentação interna versus fragmentação externa.

Aula 17: 04.04.2017

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

Aula 18: 18.04.2017

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

Aula 19: 24.04.2017

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

Aula 20: 02.05.2017

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 21: 15.05.2017

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.

Aula 22: 16.05.2017

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