Conhecimentos de Base Recomendados
Programação em C
Tópicos de arquitetura de computadores
Tópicos de sistemas operativos
Métodos de Ensino
As aulas são teóricas e práticas.
Nas aulas teóricas, é utilizada uma metodologia expositiva para a apresentação dos fundamentos teóricos da matéria com exemplos de aplicação.
Nas aulas práticas os alunos aplicam os conhecimentos das aulas teóricas, desenvolvendo aplicações, com a supervisão dos docentes.
Fora das aulas, os alunos desenvolvem um projeto de média dimensão cujo progresso é verificado numa fase intermédia e avaliado numa fase final.
Resultados de Aprendizagem
1. Aprofundar competências sobre sistemas operativos.
2. Adquirir competências sobre operação do sistema Windows.
3. Adquirir competências sobre programação de apIicações Win32 em C.
4. Evoluir na capacidade de organização, pesquisa, proposta e pIaneamento de soluções, autonomia de trabalho, elaboração de documentação.
Programa
1. Componente Teórica
A. Arquitetura Windows NT. Arquitetura Micro-kernel. Executivo NT. Sub-sistemas. Sub-sistema Win32. Aplicações Win32 e plataforma UAP.
B. Programação Win32 – Introdução
i. Introdução à programação Unicode.
ii. Tipos de aplicações em Windows NT.
iii. Registry
iv. Criação e gestão de processos.
v. Criação e gestão de threads. Modelo de programação multi-threaded. Aplicação e vantagens. Exemplos de programação paralela com threads.
C. Sincronização – Modelos e mecanismos
i. Revisão: Problemas fundamentais de sincronização. Exclusão mútua. Competição e cooperação.
ii. Soluções algorítmicas e de sistema. Trincos lógicos. Mutexes. Semáforos. Operações indivisíveis. Operações Test and Set. Exemplo com produto/consumidor
iii. Mecanismos de sincronização em Win32. API. Mutexes, Critical Sections, Semáforos. Timers. Waitable events. API assíncrona.
iv. Sincronização na programação multi-thread em Win32
v. Deadlocks e livelocks. Conceitos principais. Estratégias de prevenção e de evitamento. Algoritmo do banqueiro.
D. Modelos e mecanismos de Comunicação
i. Named pipes. Modelo cliente-servidor com named pipes em Win32.
ii. Ficheiros mapeados em memória.
E. Modelo e mecanismos de segurança. Caso concreto e API da plataforma Win32. Privilégios, direitos. DACL.
F. Interface gráfica e programação por eventos
i. Estrutura de aplicações Win32 gráficas
ii. Janelas como elemento estruturante de aplicações. Funções callback. Eventos. Programação orientada a eventos. Paradigma MVC e relacionamento dados-vista.
iii. Encapsulamento de API em C++. Exemplo concreto de encapsulamento de janelas.
iv. Recursos no modelo computacional Win32. Exemplos de icons, menus, dialog-boxes e tabelas de strings.
G. Bibliotecas de ligação dinâmicas – DLL. Criação. Princípios de bibliotecas dinâmicas e funcionamento a baixo nível. Ligação explícita e ligação implícita.
2. Componente laboratorial
As aulas práticas seguem a matéria de programação para a plataforma Windows
A. Prática de desenvolvimento para a plataforma Windows em Win32. Aprofundamento dos conceitos dados na teórica.
i. Aplicações Unicode.
ii. Criação e gestão de processos.
iii. Registry.
iv. Programação multithreaded
v. Mecanismos de sincronização
vi. Mecanismos de comunicação. Named pipes. Aplicações cliente-servidor. API para overlapped IO.
vii. Ficheiros mapeados em memória
viii. API de mecanismos de segurança.
ix. Criação de aplicações com interface gráfico. Eventos e ciclo de tratamento de eventos. Elementos de interface. Dialog boxes. Menus. Recursos.
x. Bibliotecas dinâmicas – DLL
Docente(s) responsável(eis)
Estágio(s)
NAO
Bibliografia
Bibliografia opcional
Hart, Johnson M. (2010) Windows System Programming (4th edition). Addison-Wesley
Silberschatz, Abraham, Gagne Greg, Galvin Peter B. (2018) Operating Systems Concepts (10th Ed.), Addison-Wesley
Solomon, David A.,Inside Windows NT (2nd Ed.), Microsoft Press
Schildt, Herbert, Windows NT 4 Programming, Osborne McGraw Hill