| Unidade Curricular: | Código: | ||
| Sistemas Operativos | 831SOPE | ||
| Ano: | Nível: | Curso: | Créditos: |
| 2 | Licenciatura | Engenharia Informática | 7 ects |
| Período Lectivo: | Língua de Instrução: | Nº Horas: | |
| Segundo Semestre | Português/Inglês | 91 | |
| 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. | |||