Unidade Curricular:Código:
Sistemas Operativos831SOPE
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 é decomposta em duas componentes: a teórica e a prática. A nota final será calculada de acordo com a seguinte fórmula:
Nota Prática = 0,8*Trabalho Prático + 0,2*Fichas Práticas
Nota Teórica = (Teste Teórico 1 + Teste Teórico 2)/2
Nota Final = (2*Nota Teórica + Nota Prática) / 3
Tanto a Nota Prática como a Nota Teórica têm que ser positivas (>= 9,5) para serem consideradas para a determinação da nota final. Se alguma das componentes não for positiva a unidade curricular não será concluída, ficando a componente positiva preservada durante o período indicado nos regulamentos.
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] José Alves Marques et al. – Sistemas Operativos 2ª Ed. – FCA 2012.
[2] Silbershatz, Galvin, Gagne – Operating System Concepts-9th ed. – Wiley 2012.
[3] Mitchell, Mark et al. – Advanced LINUX programming – Code Sourcery 2001.
Docente (* Responsável):
Alessandro Moreira (afmoreira@ufp.edu.pt)
Pedro Sobral (pmsobral@ufp.edu.pt)