Objectivos

Fornecer aos alunos os conceitos fundamentais da teoria e prática da organização e funcionamento de um sistema de operação e ser capaz de implementar partes de um sistema de operação e de escrever programas utilizando a API de um sistema de operação.

Programa

Conceitos Básicos
Organização, estrutura e funcionalidades típicas de um sistema de operação. Principais componentes e serviços de um sistema de operação. Tipos de sistemas de operação.

Processos e Threads
Noção de processo. Criação e terminação de processos. Escalonamento de processos. Pipes. Noção de thread. Principais benefícios e implicações da utilização de processos multithreaded. User threads versus kernel threads. Criação, terminação e cancelamento de threads.

Escalonamento e Sincronização de Processos
Escalonamento preemptivo versus não-preemptivo. Critérios de escalonamento. Algoritmos de escalonamento. Problema da secção crítica. Exclusão mútua. Locks e semáforos. Problemas clássicos de sincronização. Starvation e deadlocks.

Gestão de Memória e Memória Virtual
Espaço de endereçamento lógico e físico. Alocação contígua de memória. Fragmentação interna versus externa. Segmentação. Paginação. Espaço de endereçamento virtual. Algoritmos de substituição de páginas. Modelos de alocação de frames.

Sistema de Ficheiros e Dispositivos de Armazenamento
Organização, estrutura e camadas de um sistema de ficheiros. Ficheiros. Estrutura e hierarquia de diretórios. Alocação de espaço em disco. Gestão de espaço livre. Discos HDD e SSD. Algoritmos de acesso ao disco.

Bibliografia Principal

Operating Systems Concepts 9/E
A. Silberschatz, P. B. Galvin and G. Gagne. Wiley.

Advanced Programming in the UNIX Environment 3/E
R. W. Stevens and S. A. Rago. Addison-Wesley.

Bibliografia Complementar

Modern operating systems 4/E
Andrew S. Tanenbaum. Prentice Hall.

Operating Systems: Internals and Design Principles 8/E
W. Stallings. Prentice Hall.

Sistemas Operativos 2/E
J. Alves Marques, C. Ribeiro, R. Rodrigues, P. Ferreira and Luís Veiga. FCA.