Unidade Curricular:Código:
Sistemas Operativos1093SOPE
Ano:Nível:Curso:Créditos:
2LicenciaturaEngenharia Informática7 ects
Período Lectivo:Língua de Instrução:Nº Horas:
Segundo SemestrePortuguês/Inglês91
Objectivos de Aprendizagem:
Conhecer a estrutura e operação do sistema operativo. Conhecer a programação multi-processo e multi-tarefa. Programar em linguagem C, em ambiente GNU/LINUX, utilizando a interface de chamadas ao sistema POSIX. Estudar diferentes mecanismos de comunicação entre processos. Conhecer os mecanismos do SO para coordenação entre processos e tarefas. Programação de problemas clássicos de coordenação entre processos e tarefas. Conhecer os mecanismos de gestão da memória num sistema operativo moderno. Conhecer a implementação de sistemas de ficheiros. Conhecer os mecanismos de Entrada e Saída do sistema operativo.
Conteúdos Programáticos:
Introdução aos Sistemas Operativos – Definição de sistema operativo; Arquitectura e organização do computador; Funcionamento do sistema operativo; Tipos de sistemas operativos; Estrutura do Sistema operativo; Chamadas ao sistema; A estrutura do sistema operativo. Processos e “Threads” – Processos. “Threads”; Escalonamento; Comunicação entre processos; Sincronização entre processos e threads;. Gestão da Memória – Gestão Básica da Memória; “Swapping”; Memória Virtual; Algoritmos de substituição de páginas. Sistemas de Ficheiros – Ficheiros; Directórios; Implementação de sistemas de ficheiros; Exemplos de Sistemas de Ficheiros. Entrada / Saída – “Hardware” de entrada / saída; “Software“ de entrada / saída; “Block Devices”; “Serial Devices”
Demonstração da Coerência dos Conteúdos Programáticos com os Objectivos da Unidade Curricular:
Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos. Os conceitos fundamentais e a organização do sistema operativo são apresentados no primeiro capítulo. De seguida são apresentados os mecanismos de programação concorrente e paralela recorrendo a processos e tarefas. Segue-se o estudo da gestão da memória, sistemas de ficheiros e, por fim, dos mecanismos de entrada e saída. Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos concretos executados em ambiente de laboratório recorrendo a exemplos de programação e à resolução de fichas de trabalho.
Metodologias de Ensino (Avaliação Incluída):
A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a ferramentas de programação apropriadas. A avaliação das competências adquiridas pelo aluno nesta UC é composta pelos seguintes elementos de avaliação:
(1) Teste de Avaliação 1
(2) Teste de Avaliação 2
(3) Projeto prático
(4) Fichas Práticas
(5) Exame(s)
Avaliação Contínua:
Nota Prática (NP) = 0,9*(3) + 0,1*(4),
Nota Final = ((1) + (2) + NP) /3, NP>=9,5
Avaliação em Exame (NP>=9,5):
Nota Final = (5)
Demonstração da Coerência das Metodologias de Ensino com os Objectivos de Aprendizagem da Unidade Curricular:
A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software e equipamentos apropriados. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura. Nesta unidade curricular é estudada a arquitetura e funcionamento de um sistema operativo moderno. O programa começa analisar os diferentes componentes da estrutura de um sistema operativo. De seguida são analisadas as técnicas de programação concorrente e paralela recorrendo a processos e tarefas. Segue-se o estudo dos mecanismos de gestão de memória e a organização dos sistemas de ficheiros. Finalmente são apresentados os mecanismos de entrada e saída. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas.
Bibliografia:
[1] Silbershatz, Gavin, "Operating System Concepts 10th ed.", Wiley 2021
[2] José Alves Marques et al. – Sistemas Operativos 2ª Ed. – FCA 2012.
[3] Tanenebaum A.S. et al., Modern Operating Systems, 4th ed, Prentice Hall 2014
[4] Stevens et al., Advanced programming in the UNIX environment, 3rd ed Addison Wesley 2014