Conhecimentos de Base Recomendados
O conhecimento das matérias abaixo indicadas é absolutamente essencial e necessário:
- Programação em C (Introdução À Programação, Programação, 1º ano)
- Arquitecturas e tecnologias de computadores (Tecnologias e Arquitecturas de Computadores, 1º ano)
Métodos de Ensino
As aulas são teóricas e práticas. Nas aulas teóricas, é utiIizada uma metodologia expositiva para a apresentação dos fundamentos teóricos da matéria com exempIos de aplicação, sendo incentivada a participação dos alunos com vista a um ensino participativo. Nas aulas práticas os alunos aplicam os conhecimentos das aulas teóricas, desenvolvendo aplicações, com a supervisão dos docentes, sendo necessária a participação dos alunos na aula. Fora das aulas, os alunos desenvolvem, em grupos de dois, um projecto para aplicação e aprofundamento dos assuntos das aulas, sendo o projeto alvo de avaliação.
Resultados de Aprendizagem
Competências a adquirir e desenvolver pelos alunos nesta unidade curricular:
- Compreender, explicar e justificar o funcionamento interno dos sistemas operativos modernos
- Compreender, explicar e planear a operação e gestão de sistemas Unix/Linux
- Compreender, planear, desenvolver, explicar, e justificar o desenvolvimento de aplicações em C para a plataforma Unix
- Planear e elaborar documentação técnica sobre projetos de software para sistemas.
Programa
O programa da unidade curricular está organizado em 3 temas:
- Introdução e funcionamento do sistema e ambiente Unix e sua operação.
- Desenvolvimento de aplicações Unix em C.
- Fundamentos teóricos de sistemas operativos.
Introdução e funcionamento do sistema e ambiente Unix e sua operação:
- Conceitos básicos e mecanismos subjacentes ao funcionamento do Linux do ponto de vista de configuração.
- Arranque e início de funcionamento do sistema. Partições e sistemas de ficheiros. Sistema de ficheiros típico Unix. Proteção e permissões de utilizadores e de ficheiros em Unix. Mecanismos sudo e bit setuid. Configuração de aspetos básicos de Linux.
- Comandos Unix e programação em Bash – Introdução ao sistema e tópicos de utilização do sistema Unix/Linux em linha de comando do ponto de vista do utilizador e do administrador.
- Introdução ao sistema Unix do ponto de vista do utilizador. i) Arquitetura e componentes principais, ii) Arranque do sistema, iii) processo de login, iv) Sistema de ficheiros
- Comandos Unix para i) manipulação de ficheiros e diretorias, ii) Gestão de processos, iii) Gestão de utilizadores iv) Extração e manipulação de informação em ficheiros de texto estruturados, v) Redireccionamento.
- Introdução a programação em Shell Script (Bash)
Desenvolvimento de aplicações Unix em C. Aspetos introdutórios e de carácter fundamentais de desenvolvimento de aplicações para ambiente Unix.
- Processo de compilação. Ficheiros fonte, objeto, biblioteca e executável. Funções biblioteca e funções sistema.
- Programas e processos. Criação de processos. Mecanismos fork e exec. Gestão de processos. PID.
- Sinais. Mecanismos simples de sincronização com sinais. Exemplos de aplicação
- I/O em Unix. Ficheiros e tabela de ficheiros. Redirecionamento e pipes anónimos. Introdução a funções de manipulação do sistema de ficheiros
- Named pipes em Unix. Aplicações em modelo cliente servidor. Funcionamento síncrono e assíncrono.
- Programação multithreaded em Unix
- Sincronização simples com semáforos binários e variáveis condicionais
Fundamentos teóricos de sistemas operativos. Conceitos de carácter teórico de sistemas operativos abrangendo 1) tópicos de carácter geral, 2) a arquitetura, 3) tópicos de implementação, 4) gestão de processos, 5) a gestão de memória.
- 1 Conceitos gerais.
- Objetivos dos sistemas operativos. Programas, processos e threads. Tipos de sistemas. Arquitetura de sistemas operativos. Núcleo de sistemas operativos.
- 2 Tópicos de programação multi-tarefa e de sicronização
- Programação multi-tarefa. Instrodução a sincronização: Trincos lógicos e mutexes. Variáveis condicionais.
- 3 Tópicos de implementação de sistemas
- Implementação de processos. Modos de execução. Espaço núcleo e espaço utilizador. Controlo de interrupções e respetiva aplicação. Implementação de chamadas ao sistema. Implementação de trincos lógicos e mutexes. Tópicos de programação em modo núcleo.
- 4 Gestão de processos
- Tipos e algoritmos de escalonamento. Estado e ciclo de vida dos processos. Indicadores de desempenho de escalonamento.
- 5 Gestão de memória
- Conceitos fundamentais de gestão de memória. Endereçamento virtual. Tipos de endereçamento virtual. Algoritmos de gestão de memória virtual.
Docente(s) responsável(eis)
João António Pereira Almeida DurãesMétodos de Avaliação
Existem quatro componentes de avaliação:
i) Exame escrito,
ii) Construção de ambiente de trabalho
iii) Trabalho prático
iv) Avaliação em aula teórica
- Exame escrito: peso de 13,6 valores, de carácter obrigatório. Esta prova inclui as matérias das aulas teóricas e práticas.
- A prova é sem consulta exceto materiais que venham a ser indicados explicitamente pelos docentes.
- Poderá ser necessária inscrição prévia no exame via plataforma eletrónica da disciplina. No caso de ser dada essa indicação, essa inscrição é condição necessária para aceder à prova. A inscrição aqui referida não substitui a inscrição nos serviços académicos.
- O exame tem mínimos de 35%. A não obtenção dos mínimos implica a reprovação.
- Este exame escrito é o único componente de avaliação que é feito em épocas de exame (época normal, de recurso, especial, etc.). Os restantes componentes são feitos unicamente ao longo das aulas ou no final das aulas.
- Construção do ambiente de trabalho: peso de 0,4 valores, sem mínimos.
- O ambiente de trabalho consiste num ambiente de desenvolvimento Unix cujo detalhes e instruções pormenorizadas são disponibilizados na primeira semana. O ambiente deve ser construído e configurado, e depois demonstrado na aula prática da terceira semana do semestre. No caso dos trabalhador-estudantes com estatuto reconhecido, a demonstração poderá ser feita em data e hora a combinar, na mesma semana.
- A concretização demonstrada do ambiente de trabalho na aula da terceira semana é avaliada com até 0,4 valores. O não cumprimento deste objetivo tem como efeito a perda desses 0,4 valores, não havendo forma de os recuperar.
- A construção do ambiente de trabalho é uma tarefa individual.
- Trabalho prático: peso de 4 valores, sem mínimos.
- O trabalho deve ser feito em grupos de até dois alunos. A constituição do grupo é obrigatoriamente definida em plataforma eletrónica, até à data limite especificada no enunciado, após a qual os alunos que não se registaram farão o trabalho individualmente.
- O trabalho é realizado ao longo do semestre, sendo entregue no final das aulas na data especificada no enunciado. Não existe nenhuma temporização alternativa nem forma de substituição. Se não for realizado, a sua cotação é perdida.
- O trabalho é sujeito apresentação e defesa individual obrigatória. A defesa pode afetar bastante a nota atribuída ao aluno.
- É aproveitado o trabalho efetivamente realizado no ano imediatamente anterior, independentemente da nota obtida, mas desde que realmente realizado no ano anterior e não sendo resultado de aproveitamento de anos anteriores.
- Avaliação em aula teórica: peso de 2 valores, sem mínimos.
- Em algumas aulas teóricas será uma questão a responder de forma escrita por cada aluno. O conjunto das questões é valorizado para 2 valores, sendo o valor efetivamente obtido pelo aluno proporcional ao número de questões corretamente respondidas face ao total de questões colocadas.
- A única calendarização das aulas em que serão colocadas questões é: a) na primeira semana não será colocada nenhuma questão; b) haverá no máximo 10 aulas com questão, podendo ser menos. Por semana, um aluno pode aceder, no máximo, a uma questão.
- Podem responder às questões os alunos que estiverem presentes na aula e nela estiverem inscritos. Os alunos que tiverem o estatuto de trabalhador-estudante reconhecido podem, em alternativa, responder a uma questão adicional no exame da época normal, sendo esta alternativa mutuamente exclusiva: a resposta a uma questão na aula exclui o acesso do trabalhador-estudante à questão adicional no exame.
- Excluindo o cenário do trabalhador-estudante já referido atrás, as questões em aula teórica não são opcionais: quem não responder perde os valores correspondentes sem qualquer forma de os recuperar.
A nota final da disciplina é o somatório do exame escrito, da construção do ambiente de trabalho, do trabalho prático e da avaliação em aulas teóricas.
Os atos de avaliação são presenciais.
Estágio(s)
NAO
Bibliografia
Referências principais
Marques, J. A., Guedes, P. (1998). Fundamentos de Sistemas Operativos (4rd ed.), Editorial Presença – 1A-3-114
Silberschatz, A., Galvin, P. B., Gagne, G. (2009). Operating Systems Concepts (8th ed.), Wiley & Sons – 1A-3-137
Matthew, N., Stones R., (1999). Beginning Linux Programming (2nd ed.), Wrox press – 1A-3-155
Referências complementares
Stallings, W. (2017). Operating Systems: Internals and Design Principles (9th ed.), Pearson
Marques, J. A., Ferreira, P., Ribeiro, C., Veiga, L., Rodrigues, R. (2012). Sistemas Operativos (2nd ed.), FCA
Wirzenius L., (2021). The Linux System Administrators’ Guide, The Linux Documentation Project, online: https://tldp.org/