Arquitetura de Computadores

Propaganda
Licenciatura em Informática
Unidade Curricular
Arquitetura de Computadores
Computer Architecture
Objetivos
-Compreender o hardware e software de sistema (SO);
-Entender os sistemas de numeração e aritmética digital;
-Compreender os fundamentos de sistemas digitais;
-Compreender os fundamentos dos sistemas operativos;
-Apreender os fundamentos da ciência dos computadores.
Summary of objectives
-Understand the hardware and system software (OS);
-Understand the numbering systems and digital arithmetic;
-Understand the fundamentals of digital systems;
-Understand the fundamentals of operating systems;
-Grasping the fundamentals of computer science.
Enquadramento: Obrigatória,
1º ano - 1º Semestre
Pré-requisitos:
Créditos: 4 ECTS
Horas contacto
Orientação tutorial (OT):
Seminário (S):
Teóricas (T):
Prática Laboratoriais (PL):
Teórico-práticas (TP):
12 h
0
0
0
48 h
Contextualização Científica
A arquitetura de computadores refere-se aos
atributos de um sistema computacional que têm
impacto direto na execução lógica dos programas.
A ciência dos computadores é a disciplina cujo
objetivo é criar uma base científica para tópicos como
o desenho de computadores, a programação de
computadores, o processamento da informação,
a solução algorítmica de problemas e o próprio
processo algorítmico. Proporciona a base para
as aplicações atuais dos computadores, assim
como para as infraestruturas de computação
do futuro. Nesta cadeira, será efetuada uma
introdução sólida à arquitetura de computadores,
estabelecendo uma base para a disciplina mais
abrangente da ciência dos computadores. Após
uma contextualização histórica, no capítulo de
Armazenamento de Dados será analisada a
codificação e armazenamento de informação
em computadores modernos. Em Manipulação
de Dados, serão estudados em detalhes os
componentes arquiteturais de um computador
atual. Em seguida, será estudado o Sistema
Operativo como software que controla a operação
geral do computador, assegurando a interface
entre a máquina e o mundo exterior, protegendo
a máquina e os dados nela armazenados contra
acessos não autorizados, permitindo ao utilizador
despoletar a execução de múltiplos programas e
coordenando as atividades internas necessárias
para assegurar a resposta aos pedidos dos
utilizadores. Introduziremos, finalmente, conceito
fundamentais da ciência dos computadores, a
representação de programas de computador
por intermédio das Linguagens de Programação,
assim como a tradução destas linguagens de alto
nível para as linguagens específicas e ligadas de
forma simbiótica à arquitetura do computador.
Os exemplos de programas de alto nível serão
executados em Python, por forma a proporcionar
uma continuidade coordenada com outras
cadeiras introdutórias do curso. Do ponto de vista
científico, a abordagem será rigorosa e atual,
baseada nas principais arquiteturas CISC e RISC
do mercado, por forma a proporcionar ao aluno
uma aplicabilidade imediata do aprendido em
aula, assim como uma base sustentável para
aplicações futuras de uma área em evolução
acelerada.
Operacionalização dos Conteúdos
0. A história da computação
1. Armazenanento de dados
. Operações booleanas
a. Portas lógicas
b. Notação hexadecimal
c. Memória principal
i. Organização da memória
ii. Medidas da capacidade de memória
d. Memória de massa
i. Sistemas magnéticos
ii. Sistemas óticos
iii. Unidades de memória flash
e. Representação de informação
i. Padrões de bits
ii. Representação de texto
iii. Representação de valores numéricos
iv. Representação de imagens
v. Representação de som
f. O sistema binário
i. Notação binária
ii. Adição binária
iii. Frações em binário
g. Armazenamento de inteiros
i. Notação de complemento para dois
ii. Notação de excesso
h. Armazenamento de frações
i. Notação de vírgula flutuante
ii. Erros de truncagem
2. Processamento de dados
. Arquitetura de computadores
i. A unidade central de processamento
ii. O conceito de programa armazenado
a. Linguagem máquina
i. O reportório de instruções
b. Execução de programa
i. Exemplos de execução
ii. Programas versus dados
c. Instruções aritméticas/lógicas
i. Operações lógicas
ii. Operações de rotação e deslocamento
iii. Operações aritméticas
d. Comunicação com outros dispositivos
i. O papel dos controladores
ii. Acesso direto à memória
iii. Handshaking
iv. Meios de comunicação
v. Taxas de comunicação
e. A programação das manipulações de dados
i. As operações lógicas e de deslocamento
ii. Estruturas de controlo
iii. Input e output
f. Outras arquiteturas
i. Pipelining
ii. Máquinas multiprocessador
3. Sistemas operativos
. Introdução à história dos sistemas operativos
a. Arquitetura dos sistemas operativos
i. Componentes de um sistema operativo
ii. O arranque do sistema
b. Coordenação das atividades do computador
i. Conceito de processo
ii. Administração de processos
c. Coordenação da competição entre processos
i. Semáforos
ii. Deadlock
d. Segurança
i. Ataques do exterior
ii. Ataques do interior
4. Introdução às linguagens de programação
. Primeiras gerações
a. Independência da máquina
b. Paradigmas da programação
c. Implementação das linguagens
i. O processo de tradução
ii. Ferramentas de desenvolvimento
Bibliografia
OBRIGATÓRIA:
BROOKSHEAR, Glenn & Dennis Brylow; Computer Science: An Overview; Pearson.
COMPLEMENTAR:
STALLINGS, William; Computer Organization and Architecture; Pearson.
CLEMENTS, Alan; Computer Organization & Architecture: Themes and Variations; Cengage Learning.
PATTERSON, David A. & John L. Hennessy; Computer Organization and Design; Morgan Kaufmann.
TANENBAUM, Andrew S. & Herbert Bos; Modern Operating Systems; Pearson.
MARQUES, José Alves; Sistemas Operativos; FCA.
SILBERSCHATZ, Abraham, Peter B. Galvin & Greg Gagne; Operating System Concepts; Wiley.
HARRIS, David & Sarah Harris; Digital Design and Computer Architecture; Morgan Kaufmann.
HARRIS, Sarah & David Harris; Digital Design and Computer Architecture: ARM Edition; Morgan Kaufmann.
SCOTT, Michael L.; Programming Language Pragmatics; Morgan Kaufmann.
Download