logo CCISEL
  • Home
  • Team
  • Academia
  • News
  • Archive
  • Contacts
  

Programação em Sistemas Computacionais

(en: Computer Systems Programming)

Professor: Ezequiel Augusto Cachão Conde

Ano: 2
Semestre: 3
ECTS: 6

Repositório
Informação institucional no ISEL

Objectivos

Os estudantes que terminam com sucesso esta unidade curricular serão capazes de:

  1. Compreender o modelo de execução de programas escritos em linguagens de alto nível nos sistemas computacionais reais;
  2. Conceber e implementar programas de complexidade moderada em linguagem C;
  3. Escrever módulos de software em assembly para integrar em programas desenvolvidos em linguagem C;
  4. Compreender a arquitetura básica das caches de acesso à memória RAM;
  5. Desenvolver software usando o modelo de compilação separada;
  6. Compreender as diferenças entre a ligação estática e dinâmica de módulos;
  7. Produzir, depurar e testar software modular para ambientes nativos.

Programa

  1. Linguagem C: arrays, estruturas, ponteiros e sua aritmética.
  2. Escrita de programas em assembly. Convenção de chamada a funções: convenções de chamada da linguagem C. Programas envolvendo código em C e assembly. Percurso e manipulação de stack frames.
  3. Hierarquia de memória. Noção de cache. Organização de cache de acesso a RAM e impacto no desempenhodos programas.
  4. Construção modular de programas: pré-processador; compilação separada; ficheiros cabeçalho e objeto; ligação estática; bibliotecas estáticas.
  5. Implementação de sistema de alocação dinâmica de memória sem reciclagem automática.
  6. Ligação dinâmica de código. Construção e utilização de bibliotecas de ligação dinâmica. Ligação dinâmica em tempo de carregamento e em tempo de execução.

Resultados

Nesta unidade curricular, os estudantes compreendem o modelo de execução de programas escritos em linguagens de alto nível no sistema computacional real (pontos II, III, V e VI dos conteúdos programáticos) e adquirem prática de desenvolvimento de aplicações modulares em linguagem C (pontos I e IV). Tais capacidades são fundamentais para a progressão nas áreas de sistemas operativos e de sistemas embebidos. Na componente prática relativa aos pontos IV e VI, os alunos desenvolvem aplicações, em linguagem C, utilizando bibliotecas open-source standard. Finalmente, a introdução às caches de acesso a RAM (ponto III) suporta estudos posteriores na área da programação concorrente.

Bibliografia

R. Bryant, D. O’Hallaron, Computer Systems: A Programmer’s Perspective, 3rd edition, Pearson, 2016. ISBN 9780134092669

B. Kernighan, D. Ritchie, The C Programming Language, 2nd edition, Prentice Hall, 1988. ISBN 9780131103627

Copyright © CCISEL 2025