Sistemas Operativos
Processos, concorrência, memória e ficheiros, com programação de sistema em C e UNIX.
Um processo que lança uma compilação precisa de criar um filho, escolher o programa que esse filho executa e recolher o estado de saída. Se várias compilações correm ao mesmo tempo, o sistema reparte CPU e memória entre elas. Guardar o resultado acrescenta outra obrigação: conferir quantos bytes foram realmente escritos.
Este percurso liga a programação em C à gestão desses recursos. Precisas de funções, ciclos, arrays e estruturas. C avançado desenvolve apontadores e tempo de vida antes das chamadas de sistema.
Percurso de estudo
A ordem das apresentações oficiais é part1 a part6, a começar em C avançado. O percurso abaixo mantém os tópicos, mas começa na utilização (introdução e shell) antes da programação, porque as fichas TP f0–f7 seguem essa progressão e os exemplos de processos usam fork/exec com programas C. Consulta o mapa curricular no arquivo privado para a correspondência exata entre cada part e cada lição.
- Introdução aos sistemas operativos e shell UNIX explicam os recursos, as chamadas de sistema e os comandos que vais usar no terminal.
- C avançado e programar ficheiros e diretórios ligam a memória do programa às duas interfaces de I/O, a biblioteca C e os descritores do núcleo.
- Processos e escalonamento mostram como criar fluxos de execução e decidir qual usa o processador.
- Comunicação entre processos, programação concorrente e impasses tratam a troca de dados e a sincronização.
- Memória virtual e paginação por procura explicam a tradução de endereços, as faltas de página e a gestão da RAM.
- Ficheiros e entrada/saída e implementação de ficheiros seguem um pedido desde a aplicação até aos blocos do dispositivo.
A cheat sheet reúne fórmulas e condições para consulta. As lições têm exercícios próprios associados, com pistas e resolução. São prática dos tipos de raciocínio da cadeira, não reproduções de perguntas de uma prova. Os aprofundamentos de impasses e banqueiro e as notas sobre a evolução do escalonador Linux estão assinalados como complemento: só contam para avaliação se os materiais do ano os pedirem.
Como praticar
Antes de correr um programa, escreve o resultado que esperas e as ordens de saída que são possíveis. Em seguida, compila com avisos, testa uma entrada normal e um caso limite, como ficheiro vazio, argumentos em falta ou todos os números negativos. Se o resultado variar, procura que acessos ou eventos não têm uma ordem imposta.
Os exemplos C portáteis podem correr no editor da página. fork, exec, sinais, sockets e Pthreads precisam de um terminal num sistema UNIX. Para acompanhar as aulas, usa Linux, por exemplo numa máquina virtual ou no ambiente indicado pelos docentes. O executor do navegador não implementa um sistema Linux completo e não serve para esses exemplos.
Avaliação em 2026/27
A ficha oficial de 2026/27, consultada a 3 de outubro de 2026, indica avaliação distribuída com dois testes de 10 valores. Cada um cobre sensivelmente metade da matéria teórica e dos exercícios TP, incluindo programação em computador. Com frequência, a classificação final é .
Para obter frequência, é necessário assistir a pelo menos 50% das aulas TP da turma. A assiduidade tem validade no ano letivo seguinte; quem a obteve no ano anterior pode pedir dispensa através do formulário dos docentes. Os regimes especiais previstos na ficha têm dispensa de presença nas condições aí descritas.
O recurso cobre toda a matéria teórica e prática e dá acesso aos reprovados com frequência e aos inscritos para melhoria. A melhoria também cobre toda a matéria. A ficha proíbe dispositivos eletrónicos na avaliação, salvo os autorizados pelos docentes ou previstos num estatuto aplicável. Confirma datas, instruções e qualquer alteração no Moodle de 2026/27.
Materiais e bibliografia
A base de ensino são os materiais do Moodle de 2025/26: apresentações teóricas part1 a part6, capítulos 9, 10, 12, 13 e 14, fichas práticas f0 a f7 em português e inglês e notas dos docentes sobre erros no primeiro teste. As versões PT/EN das fichas repetem os mesmos exercícios. O documento de funcionamento os2526 está datado de 1 de setembro de 2025. A nota sobre tempos UNIX é de novembro de 2024, embora esteja disponibilizada nessa edição.
As apresentações de Silberschatz identificam a 10.ª edição, de 2018; os2526 recomenda a 9.ª edição. A numeração dos capítulos depende da edição. O programa de 2026/27 foi comparado com esta base, mas os ficheiros do Moodle de 2026/27 não foram revistos. Estes apontamentos não substituem novos materiais que os docentes acrescentem.
- Silberschatz, Galvin e Gagne, Operating System Concepts, bibliografia obrigatória na ficha. Os slides locais usam a 10.ª edição.
- Stevens e Rago, Advanced Programming in the UNIX Environment, 3.ª edição, para a API de UNIX.
- Kernighan e Pike, The Practice of Programming, para programação e tratamento de erros.
- Arpaci-Dusseau e Arpaci-Dusseau, Operating Systems: Three Easy Pieces, complemento para virtualização, concorrência e persistência.
- Linux man-pages, referência de argumentos, retornos e erros das funções. Consulta
SYNOPSISpara saber os cabeçalhos necessários. - Documentação do VFS no núcleo Linux, para a interface comum e o encaminhamento para cada sistema de ficheiros.
- Documentação do núcleo Linux sobre CFS e EEVDF, para distinguir os modelos estudados da evolução do escalonador real.
As explicações e os exercícios foram escritos para estas páginas. Os resumos históricos SofiaViP são referências complementares, não a autoridade para a avaliação atual. As notas de erros orientaram os casos de prática, mas afirmações sobre APIs foram conferidas com a sua documentação: abrir um ficheiro duas vezes é permitido, e cada abertura pode ter uma posição independente.