Sistemas Operativos

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ães

Métodos de Avaliação

A avaliação é constituída por três componentes: tarefa, exame e trabalho prático.

Tarefa:

  • Consiste na instalação e configuração do ambiente de trabalho para as aulas, sob a forma de uma máquina virtual, nos moldes e segundo as alternativas a determinar no respetivo enunciado.
  • A tarefa é validada numa aula laboratorial a indicar no enunciado da tarefa. A validação é realizada na aula do laboratório em que o aluno está inscrito. Não existe outra data nem horário alternativo, exceto para os trabalhadores-estudantes cujo estatuto esteja formalmente registado no NONIO, aos quais poderá ser disponibilizado um horário alternativo.
  • O cumprimento e validação da tarefa têm o valor de 0,4 valores. A não realização da tarefa acarreta a perda deste valor, sem possibilidade de recuperação.
  • Não existe a possibilidade de aproveitamento da tarefa do ano anterior.

Trabalho prático:

  • Pode ser realizado individualmente ou em grupos de dois alunos do mesmo laboratório.
  • É realizado exclusivamente durante o semestre. Os alunos que não realizarem o trabalho durante o semestre ficam definitivamente sem a classificação que lhe corresponde, não podendo substituí-lo por outros meios ou pelo exame, em nenhuma época de avaliação.
  • É descrito por um ou mais enunciados, que serão divulgados na altura própria e que conterão os detalhes dos requisitos e regras aplicáveis.
  • Está sujeito a dois momentos de acompanhamento e apresentação, a realizar em aulas indicadas no enunciado. Cada apresentação não realizada acarretará a perda definitiva de parte da valorização do trabalho, a especificar no enunciado. O acompanhamento e a apresentação são realizados na aula do laboratório em que o aluno está inscrito.
  • Os alunos com estatuto de trabalhador-estudante formalmente registado no NONIO podem optar por realizar os momentos de acompanhamento fora da aula, em horário a definir com o professor.
  • A valorização do trabalho pode ser feita segundo dois perfis alternativos: o perfil A, em que o trabalho vale 2,5 valores, e o perfil B, em que vale 4,5 valores. O exame valerá os restantes valores necessários para perfazer, juntamente com a tarefa, o total de 20 valores.
  • No perfil A, o trabalho vale 2,5 valores e a avaliação compreende apenas os dois momentos de acompanhamento, nos quais se verificam o progresso, o cumprimento dos requisitos e os aspetos de qualidade da solução, com maior ênfase no 2.º momento. Após o 2.º momento de avaliação, é comunicada a classificação ao aluno.
  • No perfil B, o trabalho vale 4,5 valores e implica uma defesa adicional, de natureza semelhante a uma avaliação oral, na qual se averigua detalhadamente o domínio da matéria envolvida. O resultado desta defesa pode baixar a classificação já obtida no 2.º momento de avaliação.
  • Todos os alunos estão, por omissão, no perfil A. No final do 2.º momento de acompanhamento, o aluno pode optar por passar para o perfil B. Se o fizer, deverá inscrever-se num horário para a defesa, sendo a classificação final do trabalho determinada a partir da classificação que já possui e da prestação na defesa.
  • A opção pelo perfil B é individual, mesmo no caso de trabalhos realizados por grupos de dois alunos. A passagem para o perfil B é voluntária, mas definitiva.
  • Trabalhos de anos anteriores: podem ser aproveitados os trabalhos realizados no ano letivo de 2025/2026, e apenas esses. O aproveitamento ocorre apenas mediante pedido dos interessados, através do NONIO, e enquadra o aluno no perfil B. A classificação de 4 valores correspondente ao trabalho realizado no ano anterior é mantida. A obtenção dos 0,5 valores adicionais previstos no perfil B no presente ano letivo pressupõe uma nova apresentação do trabalho, destinada a verificar o seu funcionamento e o conhecimento do aluno sobre a solução apresentada. A não realização desta apresentação, ou uma prestação considerada insuficiente, implica a não atribuição dos 0,5 valores adicionais. A participação num momento de acompanhamento do trabalho do presente ano letivo elimina a possibilidade de optar pelo aproveitamento do trabalho do ano anterior.

Exame:

  • Prova escrita, a realizar nas épocas regulamentares e nas datas definidas pela Escola.
  • O exame vale os restantes valores necessários para perfazer o total de 20 valores, tendo em conta os 0,4 valores da tarefa e o perfil de trabalho prático do aluno: 17,1 valores no perfil A ou 15,1 valores no perfil B.
  • A classificação do exame está sujeita a uma nota mínima de 35%.
  • No exame, os alunos têm acesso apenas aos materiais estipulados pelos docentes.
  • Poderá ser necessária a inscrição para participação no exame da época normal. Esta inscrição não substitui a inscrição na disciplina ou no exame efetuada nos Serviços Académicos e destina-se apenas à otimização da atribuição de salas e vigilantes.

Validação oral:

  • Qualquer ato de avaliação poderá ser sujeito a validação oral. A realização desta prova será determinada pelos docentes, podendo abranger qualquer ato de avaliação, incluindo exames, e ser aplicada a todos ou apenas a parte dos alunos. A sua realização será comunicada aos alunos envolvidos.

 


    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/