| código no paco | 42509 |
| área científica | informática / arquitectura dos sistemas computacionais |
| créditos | 6 |
| escolaridade (t|tp|p) | 2|0|2 |
| responsável | artur josé carneiro pereira |
|
| objectivo(s) |
apresentar os conceitos mais importantes sobre a organização dos sistemas de operação actuais; introduzir a programação concorrente e os mecanismos principais de comunicação e de sincronização entre processos; familiarizar os alunos com a organização interna do Unix.
|
|
| conteúdo(s) |
Conceitos Introdutórios O que é um Sistema de Operação Evolução dos Sistemas de Operação Arquitectura interna do Linux Gestão do Processador em Multiprogramação Conceito de Processo Modelação de processos Comutação de processos Scheduling do processador Processos em Linux Comunicação entre Processos Condições de corrida no acesso a estruturas de dados partilhadas Soluções para o problema de acesso a uma região crítica com exclusão mútua Sincronização Deadlock Estudo de alguns problemas gerais em programação concorrente IPC em Linux Gestão da memória Hierarquia da memória principal Organização da memória Memória real vs. memória virtual Papel da área de swapping Memória real Memória virtual Input / Output Objectivos a serem cumpridos num ambiente multiprogramado Rotinas de serviço à interrupção Device drivers Software independente do dispositivo Estudo de alguns exemplos concretos Modelo usado em Linux Sistema de ficheiros Modelo lógico da memória de massa Organização hierarquizada da informação Tipos de sistemas de ficheiros (Linux) Protecção e Segurança Noções introdutórias
|
|
| avaliação |
A classificação final da disciplina é determinada pela média pesada das notas obtidas em dois tipos de avaliação avaliação teórica: 50% avaliação prática: 50%. A avaliação teórica é constituída pelo exame escrito final. A avaliação prática é formada por três provas obrigatórias e uma optativa miniteste intercalar: 30% trabalho 1: 30% trabalho 2: 40% trabalho 3: valorização para av. prática > 17. O processo de avaliação do trabalho prático 1 supõe uma demonstração prática de validação feita pelos membros do grupo, onde são testados vectores próprios e vectores propostos, e a resposta a questões suscitadas pela implementação. O processo de avaliação do trabalho prático 2 supõe uma análise do código submetido para verificação do cumprimento das especificações e um interrogatório aos elementos do grupo sobre questões relativas à sua implementação. A aprovação na disciplina supõe a satisfação em simultâneo das condições seguintes - avaliação prática >= 9 - avaliação teórica >= 9
- média pesada das notas das duas avaliações >= 10.
|
|
| requisito(s) |
| Tem os pré-requisitos seguintes noções básicas sobre arquitectura de computadores e sobre protocolos de comunicação com os dispositivos de entrada-saída (pooled I/O, interrupt driven I/O e DMA based I/O); domínio da Linguagem C; conhecimento operacional das estruturas de dados estáticas e dinâmicas mais comuns e da sua aplicação à construção de diferentes tipos de memória (RAMs, stacks, FIFOs e memórias associativas). |
|
| metodologia |
| O objectivo das aulas teóricas é a apresentação de tópicos específicos da matéria da disciplina. A abordagem seguida pressupõe quase sempre uma metodologia de participação directa dos alunos na discussão, procurando desenvolver competências de raciocínio crítico e de aprendizagem de técnicas gerais de resolução de problemas. As aulas práticas seguem uma filosofia do saber fazer e visam a realização de pequenos trabalhos distribuídos por grupos de aulas. Trabalho 1 - Sistema de ficheiros (grupo de trabalho: 4 a 6 elementos)
Modelação de um sistema de ficheiros através da implementação de diferentes componentes da sua arquitectura interna. Trabalho 2 - Programação concorrente (grupo de trabalho: 2 a 3 elementos) Construção de pequenas aplicações concorrentes usando os mecanismos de comunicação e sincronização mais comuns em ambiente Unix: pipes, semáforos e memória partilhada, monitores e passagem de mensagens. Resolução de um problema proposto. |
|
| bibliografia base |
| Modern Operating Systems, A.S. Tanenbaum, Prentice-Hall International
Operating Systems, W. Stallings, Prentice-Hall International
Operating Systems Concepts, Silberschatz, Galvin e Gagne, John Wiley & Sons |
|
| bibliografia recomendada |
| Principal Modern Operating Systems, A.S. Tanenbaum, Prentice-Hall International Operating Systems, W. Stallings, Prentice-Hall International Operating Systems Concepts, Silberschatz, Galvin e Gagne, John Wiley & Sons Apoio The design of the Unix Operating System, M.J. Bach, Prentice-Hall International C - A software engineering approach, P.A. Darnell, P.E. Margolis, Springer-Verlag Introdução à Programação usando C, A. Adrego da Rocha, FCA - Tecnologias de Informação Programação Avançada usando C, A. Adrego da Rocha, FCA - Tecnologias de Informação Advanced Programming in the Unix Environment, W.R. Stevens, Addison-Wesley Professional Computer Series Linux Programming, Wall, Watson e Whitis, SAMS |
|
| competência(s) |
compreensão do mecanismo da multiprogramação e da organização geral de um sistema de operação; capacidade de projecto de aplicações concorrentes simples; capacidade para integrar uma equipa de desenvolvimento de software ao nível da programação de sistemas. |